tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

selectors.rs (1240B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
      4 
      5 use cssparser::{Parser, ParserInput, ToCss};
      6 use selectors::parser::SelectorList;
      7 use style::selector_parser::{SelectorImpl, SelectorParser};
      8 use style::stylesheets::{Namespaces, Origin};
      9 use style_traits::ParseError;
     10 
     11 fn parse_selector<'i, 't>(
     12    input: &mut Parser<'i, 't>,
     13 ) -> Result<SelectorList<SelectorImpl>, ParseError<'i>> {
     14    let mut ns = Namespaces::default();
     15    ns.prefixes.insert("svg".into(), ns!(svg));
     16    let parser = SelectorParser {
     17        stylesheet_origin: Origin::UserAgent,
     18        namespaces: &ns,
     19        url_data: None,
     20    };
     21    SelectorList::parse(&parser, input)
     22 }
     23 
     24 #[test]
     25 fn test_selectors() {
     26    assert_roundtrip!(parse_selector, "div");
     27    assert_roundtrip!(parse_selector, "svg|circle");
     28    assert_roundtrip!(parse_selector, "p:before", "p::before");
     29    assert_roundtrip!(
     30        parse_selector,
     31        "[border=\"0\"]:-servo-nonzero-border ~ ::-servo-details-summary"
     32    );
     33    assert_roundtrip!(parse_selector, "* > *");
     34    assert_roundtrip!(parse_selector, "*|* + *", "* + *");
     35 }