diff options
Diffstat (limited to 'components/style/selectors.rs')
-rw-r--r-- | components/style/selectors.rs | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/components/style/selectors.rs b/components/style/selectors.rs index a4c4b0bea53..98eb186eb67 100644 --- a/components/style/selectors.rs +++ b/components/style/selectors.rs @@ -12,7 +12,6 @@ use string_cache::{Atom, Namespace}; use url::Url; use parser::ParserContext; -use namespaces::NamespaceMap; use stylesheets::Origin; @@ -196,11 +195,8 @@ fn compute_specificity(mut selector: &CompoundSelector, pub fn parse_author_origin_selector_list_from_str(input: &str) -> Result<SelectorList,()> { - let context = ParserContext { - stylesheet_origin: Origin::Author, - namespaces: NamespaceMap::new(), - base_url: &Url::parse("about:blank").unwrap(), - }; + let url = Url::parse("about:blank").unwrap(); + let context = ParserContext::new(Origin::Author, &url); parse_selector_list(&context, &mut Parser::new(input)) .map(|s| SelectorList { selectors: s }) } @@ -647,7 +643,6 @@ fn parse_pseudo_element(name: &str) -> Result<PseudoElement, ()> { mod tests { use std::sync::Arc; use cssparser::Parser; - use namespaces::NamespaceMap; use stylesheets::Origin; use string_cache::Atom; use parser::ParserContext; @@ -655,16 +650,11 @@ mod tests { use super::*; fn parse(input: &str) -> Result<Vec<Selector>, ()> { - parse_ns(input, NamespaceMap::new()) + parse_ns(input, &ParserContext::new(Origin::Author, &Url::parse("about:blank").unwrap())) } - fn parse_ns(input: &str, namespaces: NamespaceMap) -> Result<Vec<Selector>, ()> { - let context = ParserContext { - stylesheet_origin: Origin::Author, - namespaces: namespaces, - base_url: &Url::parse("about:blank").unwrap(), - }; - parse_selector_list(&context, &mut Parser::new(input)) + fn parse_ns(input: &str, context: &ParserContext) -> Result<Vec<Selector>, ()> { + parse_selector_list(context, &mut Parser::new(input)) } fn specificity(a: u32, b: u32, c: u32) -> u32 { @@ -728,8 +718,9 @@ mod tests { }))); // Default namespace does not apply to attribute selectors // https://github.com/mozilla/servo/pull/1652 - let mut namespaces = NamespaceMap::new(); - assert_eq!(parse_ns("[Foo]", namespaces.clone()), Ok(vec!(Selector { + let url = Url::parse("about:blank").unwrap(); + let mut context = ParserContext::new(Origin::Author, &url); + assert_eq!(parse_ns("[Foo]", &context), Ok(vec!(Selector { compound_selectors: Arc::new(CompoundSelector { simple_selectors: vec!(SimpleSelector::AttrExists(AttrSelector { name: Atom::from_slice("Foo"), @@ -743,8 +734,8 @@ mod tests { }))); // Default namespace does not apply to attribute selectors // https://github.com/mozilla/servo/pull/1652 - namespaces.default = Some(ns!(MathML)); - assert_eq!(parse_ns("[Foo]", namespaces.clone()), Ok(vec!(Selector { + context.namespaces.default = Some(ns!(MathML)); + assert_eq!(parse_ns("[Foo]", &context), Ok(vec!(Selector { compound_selectors: Arc::new(CompoundSelector { simple_selectors: vec!(SimpleSelector::AttrExists(AttrSelector { name: Atom::from_slice("Foo"), @@ -757,7 +748,7 @@ mod tests { specificity: specificity(0, 1, 0), }))); // Default namespace does apply to type selectors - assert_eq!(parse_ns("e", namespaces), Ok(vec!(Selector { + assert_eq!(parse_ns("e", &context), Ok(vec!(Selector { compound_selectors: Arc::new(CompoundSelector { simple_selectors: vec!( SimpleSelector::Namespace(ns!(MathML)), |