diff options
Diffstat (limited to 'components/style/values/specified/mod.rs')
-rw-r--r-- | components/style/values/specified/mod.rs | 63 |
1 files changed, 33 insertions, 30 deletions
diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index cc8855b15de..7bd45a3e753 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -1311,23 +1311,25 @@ impl Parse for Attr { #[cfg(feature = "gecko")] /// Get the namespace id from the namespace map -pub fn get_id_for_namespace(namespace: &Namespace, context: &ParserContext) -> Result<NamespaceId, ()> { - if let Some(map) = context.namespaces { - if let Some(ref entry) = map.read().prefixes.get(&namespace.0) { - Ok(entry.1) - } else { - Err(()) +fn get_id_for_namespace(namespace: &Namespace, context: &ParserContext) -> Result<NamespaceId, ()> { + let namespaces_map = match context.namespaces { + Some(map) => map, + None => { + // If we don't have a namespace map (e.g. in inline styles) + // we can't parse namespaces + return Err(()); } - } else { - // if we don't have a namespace map (e.g. in inline styles) - // we can't parse namespaces - Err(()) + }; + + match namespaces_map.prefixes.get(&namespace.0) { + Some(entry) => Ok(entry.1), + None => Err(()), } } #[cfg(feature = "servo")] /// Get the namespace id from the namespace map -pub fn get_id_for_namespace(_: &Namespace, _: &ParserContext) -> Result<NamespaceId, ()> { +fn get_id_for_namespace(_: &Namespace, _: &ParserContext) -> Result<NamespaceId, ()> { Ok(()) } @@ -1340,27 +1342,28 @@ impl Attr { let first = input.try(|i| i.expect_ident()).ok(); if let Ok(token) = input.try(|i| i.next_including_whitespace()) { match token { - Token::Delim('|') => { - // must be followed by an ident - let second_token = match input.next_including_whitespace()? { - Token::Ident(second) => second, - _ => return Err(()), - }; - let ns_with_id = if let Some(ns) = first { - let ns: Namespace = ns.into(); - let id = get_id_for_namespace(&ns, context)?; - Some((ns, id)) - } else { - None - }; - return Ok(Attr { - namespace: ns_with_id, - attribute: second_token.into_owned(), - }) - } - _ => return Err(()) + Token::Delim('|') => {} + _ => return Err(()), } + // must be followed by an ident + let second_token = match input.next_including_whitespace()? { + Token::Ident(second) => second, + _ => return Err(()), + }; + + let ns_with_id = if let Some(ns) = first { + let ns: Namespace = ns.into(); + let id = get_id_for_namespace(&ns, context)?; + Some((ns, id)) + } else { + None + }; + return Ok(Attr { + namespace: ns_with_id, + attribute: second_token.into_owned(), + }) } + if let Some(first) = first { Ok(Attr { namespace: None, |