Use string-cache's Namespace type

This commit is contained in:
Keegan McAllister 2014-09-29 18:30:01 -07:00
parent 6429750b33
commit d50114c41d
27 changed files with 126 additions and 183 deletions

View file

@ -4,8 +4,9 @@
use cssparser::ast::*;
use std::collections::hashmap::HashMap;
use servo_util::namespace::Namespace;
use servo_util::namespace;
use errors::log_css_error;
use string_cache::Namespace;
pub struct NamespaceMap {
pub default: Option<Namespace>,
@ -40,7 +41,7 @@ pub fn parse_namespace_rule(rule: AtRule, namespaces: &mut NamespaceMap) {
},
URL(value) | QuotedString(value) => {
if ns.is_some() { syntax_error!() }
ns = Some(Namespace::from_str(Some(value)));
ns = Some(namespace::from_domstring(Some(value)));
break
},
_ => syntax_error!(),

View file

@ -6,8 +6,7 @@
//! style.
use selectors::AttrSelector;
use servo_util::namespace::Namespace;
use string_cache::Atom;
use string_cache::{Atom, Namespace};
pub trait TNode<'a, E: TElement<'a>> : Clone {

View file

@ -10,7 +10,6 @@ use sync::Arc;
use url::Url;
use servo_util::bloom::BloomFilter;
use servo_util::namespace;
use servo_util::smallvec::VecLike;
use servo_util::sort;
use string_cache::Atom;
@ -107,7 +106,7 @@ impl SelectorMap {
None => {}
}
match element.get_attr(&namespace::Null, "class") {
match element.get_attr(&ns!(""), "class") {
Some(ref class_attr) => {
// FIXME: Store classes pre-split as atoms to make the loop below faster.
for class in class_attr.split(SELECTOR_WHITESPACE) {

View file

@ -9,9 +9,7 @@ use sync::Arc;
use cssparser::ast::*;
use cssparser::{tokenize, parse_nth};
use servo_util::namespace::Namespace;
use servo_util::namespace;
use string_cache::Atom;
use string_cache::{Atom, Namespace};
use namespaces::NamespaceMap;
@ -414,7 +412,7 @@ fn parse_qualified_name<I: Iterator<ComponentValue>>(
explicit_namespace(iter, SpecificNamespace(namespace))
},
_ if in_attr_selector => Ok(Some(
(SpecificNamespace(namespace::Null), Some(value)))),
(SpecificNamespace(ns!("")), Some(value)))),
_ => default_namespace(Some(value)),
}
},
@ -428,7 +426,7 @@ fn parse_qualified_name<I: Iterator<ComponentValue>>(
},
}
},
Some(&Delim('|')) => explicit_namespace(iter, SpecificNamespace(namespace::Null)),
Some(&Delim('|')) => explicit_namespace(iter, SpecificNamespace(ns!(""))),
_ => Ok(None),
}
}
@ -575,7 +573,6 @@ fn skip_whitespace<I: Iterator<ComponentValue>>(iter: &mut Iter<I>) -> bool {
mod tests {
use sync::Arc;
use cssparser;
use servo_util::namespace;
use namespaces::NamespaceMap;
use super::*;
@ -654,7 +651,7 @@ mod tests {
simple_selectors: vec!(AttrExists(AttrSelector {
name: Atom::from_slice("Foo"),
lower_name: Atom::from_slice("foo"),
namespace: SpecificNamespace(namespace::Null),
namespace: SpecificNamespace(ns!("")),
})),
next: None,
}),
@ -663,13 +660,13 @@ mod tests {
})))
// Default namespace does not apply to attribute selectors
// https://github.com/mozilla/servo/pull/1652
namespaces.default = Some(namespace::MathML);
namespaces.default = Some(ns!(MathML));
assert!(parse_ns("[Foo]", &namespaces) == Ok(vec!(Selector {
compound_selectors: Arc::new(CompoundSelector {
simple_selectors: vec!(AttrExists(AttrSelector {
name: Atom::from_slice("Foo"),
lower_name: Atom::from_slice("foo"),
namespace: SpecificNamespace(namespace::Null),
namespace: SpecificNamespace(ns!("")),
})),
next: None,
}),
@ -680,7 +677,7 @@ mod tests {
assert!(parse_ns("e", &namespaces) == Ok(vec!(Selector {
compound_selectors: Arc::new(CompoundSelector {
simple_selectors: vec!(
NamespaceSelector(namespace::MathML),
NamespaceSelector(ns!(MathML)),
LocalNameSelector(LocalName {
name: Atom::from_slice("e"),
lower_name: Atom::from_slice("e") }),