diff options
-rw-r--r-- | components/layout/query.rs | 6 | ||||
-rw-r--r-- | components/layout_thread/lib.rs | 2 | ||||
-rw-r--r-- | components/script/dom/cssstyledeclaration.rs | 10 | ||||
-rw-r--r-- | components/style/properties/declaration_block.rs | 20 | ||||
-rw-r--r-- | components/style/properties/gecko.mako.rs | 2 | ||||
-rw-r--r-- | components/style/properties/properties.mako.rs | 191 | ||||
-rw-r--r-- | components/style/stylesheets/keyframes_rule.rs | 29 | ||||
-rw-r--r-- | components/style/stylesheets/supports_rule.rs | 7 | ||||
-rw-r--r-- | ports/geckolib/glue.rs | 5 |
9 files changed, 137 insertions, 135 deletions
diff --git a/components/layout/query.rs b/components/layout/query.rs index 7fac8d3b5b1..13ecfd7a8c6 100644 --- a/components/layout/query.rs +++ b/components/layout/query.rs @@ -689,9 +689,11 @@ pub fn process_resolved_style_request<'a, N>(context: &LayoutContext, let styles = resolve_style(&mut context, element, RuleInclusion::All, false, pseudo.as_ref()); let style = styles.primary(); let longhand_id = match *property { + PropertyId::LonghandAlias(id, _) | PropertyId::Longhand(id) => id, // Firefox returns blank strings for the computed value of shorthands, // so this should be web-compatible. + PropertyId::ShorthandAlias(..) | PropertyId::Shorthand(_) => return String::new(), PropertyId::Custom(ref name) => { return style.computed_value_to_string(PropertyDeclarationId::Custom(name)) @@ -737,12 +739,12 @@ where let style = &*layout_el.resolved_style(); let longhand_id = match *property { + PropertyId::LonghandAlias(id, _) | PropertyId::Longhand(id) => id, - // Firefox returns blank strings for the computed value of shorthands, // so this should be web-compatible. + PropertyId::ShorthandAlias(..) | PropertyId::Shorthand(_) => return String::new(), - PropertyId::Custom(ref name) => { return style.computed_value_to_string(PropertyDeclarationId::Custom(name)) } diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs index 1684e6e46fb..982355eae51 100644 --- a/components/layout_thread/lib.rs +++ b/components/layout_thread/lib.rs @@ -742,7 +742,7 @@ impl LayoutThread { Msg::RegisterPaint(name, mut properties, painter) => { debug!("Registering the painter"); let properties = properties.drain(..) - .filter_map(|name| PropertyId::parse(&*name, None) + .filter_map(|name| PropertyId::parse(&*name) .ok().map(|id| (name.clone(), id))) .filter(|&(_, ref id)| id.as_shorthand().is_err()) .collect(); diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index 797fc013434..b9bf61c1924 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -299,7 +299,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { // https://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-getpropertyvalue fn GetPropertyValue(&self, property: DOMString) -> DOMString { - let id = if let Ok(id) = PropertyId::parse(&property, None) { + let id = if let Ok(id) = PropertyId::parse(&property) { id } else { // Unkwown property @@ -310,7 +310,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { // https://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-getpropertypriority fn GetPropertyPriority(&self, property: DOMString) -> DOMString { - let id = if let Ok(id) = PropertyId::parse(&property, None) { + let id = if let Ok(id) = PropertyId::parse(&property) { id } else { // Unkwown property @@ -334,7 +334,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { priority: DOMString) -> ErrorResult { // Step 3 - let id = if let Ok(id) = PropertyId::parse(&property, None) { + let id = if let Ok(id) = PropertyId::parse(&property) { id } else { // Unknown property @@ -351,7 +351,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { } // Step 2 & 3 - let id = match PropertyId::parse(&property, None) { + let id = match PropertyId::parse(&property) { Ok(id) => id, Err(..) => return Ok(()), // Unkwown property }; @@ -383,7 +383,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { return Err(Error::NoModificationAllowed); } - let id = if let Ok(id) = PropertyId::parse(&property, None) { + let id = if let Ok(id) = PropertyId::parse(&property) { id } else { // Unkwown property, cannot be there to remove. diff --git a/components/style/properties/declaration_block.rs b/components/style/properties/declaration_block.rs index 4e074be6a4b..20bcb70f1dd 100644 --- a/components/style/properties/declaration_block.rs +++ b/components/style/properties/declaration_block.rs @@ -560,7 +560,8 @@ impl PropertyDeclarationBlock { /// /// Returns whether any declaration was actually removed. pub fn remove_property(&mut self, property: &PropertyId) -> bool { - if let PropertyId::Longhand(id) = *property { + let longhand_id = property.longhand_id(); + if let Some(id) = longhand_id { if !self.longhands.contains(id) { return false } @@ -584,7 +585,7 @@ impl PropertyDeclarationBlock { !remove }); - if let PropertyId::Longhand(_) = *property { + if longhand_id.is_some() { debug_assert!(removed_at_least_one); } removed_at_least_one @@ -681,7 +682,7 @@ impl PropertyDeclarationBlock { /// property. #[cfg(feature = "gecko")] pub fn has_css_wide_keyword(&self, property: &PropertyId) -> bool { - if let PropertyId::Longhand(id) = *property { + if let Some(id) = property.longhand_id() { if !self.longhands.contains(id) { return false } @@ -1092,12 +1093,14 @@ impl<'a, 'b, 'i> DeclarationParser<'i> for PropertyDeclarationParser<'a, 'b> { type Declaration = Importance; type Error = StyleParseErrorKind<'i>; - fn parse_value<'t>(&mut self, name: CowRcStr<'i>, input: &mut Parser<'i, 't>) - -> Result<Importance, ParseError<'i>> { - let prop_context = PropertyParserContext::new(self.context); - let id = match PropertyId::parse(&name, Some(&prop_context)) { + fn parse_value<'t>( + &mut self, + name: CowRcStr<'i>, + input: &mut Parser<'i, 't>, + ) -> Result<Importance, ParseError<'i>> { + let id = match PropertyId::parse(&name) { Ok(id) => id, - Err(()) => { + Err(..) => { return Err(input.new_custom_error(if is_non_mozilla_vendor_identifier(&name) { StyleParseErrorKind::UnknownVendorProperty } else { @@ -1107,7 +1110,6 @@ impl<'a, 'b, 'i> DeclarationParser<'i> for PropertyDeclarationParser<'a, 'b> { }; input.parse_until_before(Delimiter::Bang, |input| { PropertyDeclaration::parse_into(self.declarations, id, name, self.context, input) - .map_err(|e| e.into()) })?; let importance = match input.try(parse_important) { Ok(()) => Importance::Important, diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index dd868c5d272..6230b7a236e 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -3560,7 +3560,7 @@ fn static_assert() { Gecko_AppendWillChange(&mut self.gecko, feature.0.as_ptr()); } - if let Ok(prop_id) = PropertyId::parse(&feature.0.to_string(), None) { + if let Ok(prop_id) = PropertyId::parse(&feature.0.to_string()) { match prop_id.as_shorthand() { Ok(shorthand) => { for longhand in shorthand.longhands() { diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index d951ca804a5..107481aa16c 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -604,7 +604,8 @@ impl LonghandId { /// Returns a longhand id from Gecko's nsCSSPropertyID. pub fn from_nscsspropertyid(id: nsCSSPropertyID) -> Result<Self, ()> { match PropertyId::from_nscsspropertyid(id) { - Ok(PropertyId::Longhand(id)) => Ok(id), + Ok(PropertyId::Longhand(id)) | + Ok(PropertyId::LonghandAlias(id, _)) => Ok(id), _ => Err(()), } } @@ -1052,8 +1053,10 @@ impl<'a> PropertyDeclarationId<'a> { match *self { PropertyDeclarationId::Longhand(id) => { match *other { - PropertyId::Longhand(other_id) => id == other_id, - PropertyId::Shorthand(shorthand) => self.is_longhand_of(shorthand), + PropertyId::Longhand(other_id) | + PropertyId::LonghandAlias(other_id, _) => id == other_id, + PropertyId::Shorthand(shorthand) | + PropertyId::ShorthandAlias(shorthand, _) => self.is_longhand_of(shorthand), PropertyId::Custom(_) => false, } } @@ -1094,6 +1097,10 @@ pub enum PropertyId { Longhand(LonghandId), /// A shorthand property. Shorthand(ShorthandId), + /// An alias for a longhand property. + LonghandAlias(LonghandId, AliasId), + /// An alias for a shorthand property. + ShorthandAlias(ShorthandId, AliasId), /// A custom property. Custom(::custom_properties::Name), } @@ -1111,6 +1118,8 @@ impl ToCss for PropertyId { match *self { PropertyId::Longhand(id) => dest.write_str(id.name()), PropertyId::Shorthand(id) => dest.write_str(id.name()), + PropertyId::LonghandAlias(id, _) => dest.write_str(id.name()), + PropertyId::ShorthandAlias(id, _) => dest.write_str(id.name()), PropertyId::Custom(_) => { serialize_identifier(&self.name(), dest) } @@ -1119,17 +1128,26 @@ impl ToCss for PropertyId { } impl PropertyId { + /// Return the longhand id that this property id represents. + #[inline] + pub fn longhand_id(&self) -> Option<LonghandId> { + Some(match *self { + PropertyId::Longhand(id) => id, + PropertyId::LonghandAlias(id, _) => id, + _ => return None, + }) + } + /// Returns a given property from the string `s`. /// - /// Returns Err(()) for unknown non-custom properties - /// If caller wants to provide a different context, it can be provided with - /// Some(context), if None is given, default setting for PropertyParserContext - /// will be used. It is `Origin::Author` for stylesheet_origin and - /// `CssRuleType::Style` for rule_type. - pub fn parse(property_name: &str, context: Option< &PropertyParserContext>) -> Result<Self, ()> { - // FIXME(https://github.com/rust-lang/rust/issues/33156): remove this enum and use PropertyId - // when stable Rust allows destructors in statics. - // ShorthandAlias is not used in servo build. That's why we need to allow dead_code. + /// Returns Err(()) for unknown non-custom properties. + pub fn parse(property_name: &str) -> Result<Self, ()> { + // FIXME(https://github.com/rust-lang/rust/issues/33156): remove this + // enum and use PropertyId when stable Rust allows destructors in + // statics. + // + // ShorthandAlias is not used in the Servo build. + // That's why we need to allow dead_code. #[allow(dead_code)] pub enum StaticId { Longhand(LonghandId), @@ -1153,42 +1171,25 @@ impl PropertyId { } } - let default; - let context = match context { - Some(context) => context, - None => { - default = PropertyParserContext { - chrome_rules_enabled: false, - stylesheet_origin: Origin::Author, - rule_type: CssRuleType::Style, - }; - &default - } - }; - let rule_type = context.rule_type; - debug_assert!(matches!(rule_type, CssRuleType::Keyframe | - CssRuleType::Page | - CssRuleType::Style), - "Declarations are only expected inside a keyframe, page, or style rule."); - - let (id, alias) = match static_id(property_name) { + Ok(match static_id(property_name) { Some(&StaticId::Longhand(id)) => { - (PropertyId::Longhand(id), None) + PropertyId::Longhand(id) }, Some(&StaticId::Shorthand(id)) => { - (PropertyId::Shorthand(id), None) + PropertyId::Shorthand(id) }, Some(&StaticId::LonghandAlias(id, alias)) => { - (PropertyId::Longhand(id), Some(alias)) + PropertyId::LonghandAlias(id, alias) }, Some(&StaticId::ShorthandAlias(id, alias)) => { - (PropertyId::Shorthand(id), Some(alias)) + PropertyId::ShorthandAlias(id, alias) }, - None => return ::custom_properties::parse_name(property_name) - .map(|name| PropertyId::Custom(::custom_properties::Name::from(name))), - }; - id.check_allowed_in(alias, context)?; - Ok(id) + None => { + return ::custom_properties::parse_name(property_name).map(|name| { + PropertyId::Custom(::custom_properties::Name::from(name)) + }) + }, + }) } /// Returns a property id from Gecko's nsCSSPropertyID. @@ -1203,7 +1204,10 @@ impl PropertyId { } % for alias in property.alias: ${helpers.alias_to_nscsspropertyid(alias)} => { - Ok(PropertyId::Longhand(LonghandId::${property.camel_case})) + Ok(PropertyId::LonghandAlias( + LonghandId::${property.camel_case}, + AliasId::${to_camel_case(alias)} + )) } % endfor % endfor @@ -1213,7 +1217,10 @@ impl PropertyId { } % for alias in property.alias: ${helpers.alias_to_nscsspropertyid(alias)} => { - Ok(PropertyId::Shorthand(ShorthandId::${property.camel_case})) + Ok(PropertyId::ShorthandAlias( + ShorthandId::${property.camel_case}, + AliasId::${to_camel_case(alias)} + )) } % endfor % endfor @@ -1228,6 +1235,8 @@ impl PropertyId { match *self { PropertyId::Longhand(id) => Ok(id.to_nscsspropertyid()), PropertyId::Shorthand(id) => Ok(id.to_nscsspropertyid()), + PropertyId::LonghandAlias(_, alias) => Ok(alias.to_nscsspropertyid()), + PropertyId::ShorthandAlias(_, alias) => Ok(alias.to_nscsspropertyid()), _ => Err(()) } } @@ -1236,7 +1245,9 @@ impl PropertyId { /// `PropertyDeclarationId`. pub fn as_shorthand(&self) -> Result<ShorthandId, PropertyDeclarationId> { match *self { + PropertyId::ShorthandAlias(id, _) | PropertyId::Shorthand(id) => Ok(id), + PropertyId::LonghandAlias(id, _) | PropertyId::Longhand(id) => Err(PropertyDeclarationId::Longhand(id)), PropertyId::Custom(ref name) => Err(PropertyDeclarationId::Custom(name)), } @@ -1245,7 +1256,9 @@ impl PropertyId { /// Returns the name of the property without CSS escaping. pub fn name(&self) -> Cow<'static, str> { match *self { + PropertyId::ShorthandAlias(id, _) | PropertyId::Shorthand(id) => id.name().into(), + PropertyId::LonghandAlias(id, _) | PropertyId::Longhand(id) => id.name().into(), PropertyId::Custom(ref name) => { use std::fmt::Write; @@ -1256,34 +1269,34 @@ impl PropertyId { } } - fn check_allowed_in( - &self, - alias: Option<AliasId>, - context: &PropertyParserContext, - ) -> Result<(), ()> { - let id: NonCustomPropertyId; - if let Some(alias_id) = alias { - id = alias_id.into(); - } else { - match *self { - // Custom properties are allowed everywhere - PropertyId::Custom(_) => return Ok(()), + fn allowed_in(&self, context: &ParserContext) -> bool { + let id: NonCustomPropertyId = match *self { + // Custom properties are allowed everywhere + PropertyId::Custom(_) => return true, + PropertyId::Shorthand(shorthand_id) => shorthand_id.into(), + PropertyId::Longhand(longhand_id) => longhand_id.into(), + PropertyId::ShorthandAlias(_, alias_id) => alias_id.into(), + PropertyId::LonghandAlias(_, alias_id) => alias_id.into(), + }; - PropertyId::Shorthand(shorthand_id) => id = shorthand_id.into(), - PropertyId::Longhand(longhand_id) => id = longhand_id.into(), - } - } + debug_assert!( + matches!( + context.rule_type(), + CssRuleType::Keyframe | CssRuleType::Page | CssRuleType::Style + ), + "Declarations are only expected inside a keyframe, page, or style rule." + ); <% id_set = static_non_custom_property_id_set %> ${id_set("DISALLOWED_IN_KEYFRAME_BLOCK", lambda p: not p.allowed_in_keyframe_block)} ${id_set("DISALLOWED_IN_PAGE_RULE", lambda p: not p.allowed_in_page_rule)} - match context.rule_type { + match context.rule_type() { CssRuleType::Keyframe if DISALLOWED_IN_KEYFRAME_BLOCK.contains(id) => { - return Err(()); + return false; } CssRuleType::Page if DISALLOWED_IN_PAGE_RULE.contains(id) => { - return Err(()) + return false; } _ => {} } @@ -1303,7 +1316,7 @@ impl PropertyId { ${id_set("ENABLED_IN_UA_SHEETS", lambda p: p.explicitly_enabled_in_ua_sheets())} ${id_set("ENABLED_IN_CHROME", lambda p: p.explicitly_enabled_in_chrome())} ${id_set("EXPERIMENTAL", lambda p: p.experimental(product))} - ${id_set("ALWAYS_ENABLED", lambda p: not p.experimental(product) and p.enabled_in_content())} + ${id_set("ALWAYS_ENABLED", lambda p: (not p.experimental(product)) and p.enabled_in_content())} let passes_pref_check = || { % if product == "servo": @@ -1323,56 +1336,29 @@ impl PropertyId { PREFS.get(pref).as_boolean().unwrap_or(false) % else: - let id = match alias { - Some(alias_id) => alias_id.to_nscsspropertyid().unwrap(), - None => self.to_nscsspropertyid().unwrap(), - }; - - unsafe { structs::nsCSSProps_gPropertyEnabled[id as usize] } + unsafe { structs::nsCSSProps_gPropertyEnabled[self.to_nscsspropertyid().unwrap() as usize] } % endif }; if ALWAYS_ENABLED.contains(id) { - return Ok(()) + return true } if EXPERIMENTAL.contains(id) && passes_pref_check() { - return Ok(()) + return true } if context.stylesheet_origin == Origin::UserAgent && ENABLED_IN_UA_SHEETS.contains(id) { - return Ok(()) + return true } - if context.chrome_rules_enabled && ENABLED_IN_CHROME.contains(id) { - return Ok(()) + if context.chrome_rules_enabled() && ENABLED_IN_CHROME.contains(id) { + return true } - Err(()) - } -} - -/// Parsing Context for PropertyId. -pub struct PropertyParserContext { - /// Whether the property is parsed in a chrome:// stylesheet. - pub chrome_rules_enabled: bool, - /// The Origin of the stylesheet, whether it's a user, - /// author or user-agent stylesheet. - pub stylesheet_origin: Origin, - /// The current rule type, if any. - pub rule_type: CssRuleType, -} - -impl PropertyParserContext { - /// Creates a PropertyParserContext with given stylesheet origin and rule type. - pub fn new(context: &ParserContext) -> Self { - Self { - chrome_rules_enabled: context.chrome_rules_enabled(), - stylesheet_origin: context.stylesheet_origin, - rule_type: context.rule_type(), - } + false } } @@ -1635,6 +1621,13 @@ impl PropertyDeclaration { input: &mut Parser<'i, 't>, ) -> Result<(), ParseError<'i>> { assert!(declarations.is_empty()); + + if !id.allowed_in(context) { + return Err(input.new_custom_error( + StyleParseErrorKind::UnknownProperty(name) + )); + } + let start = input.state(); match id { PropertyId::Custom(property_name) => { @@ -1651,6 +1644,7 @@ impl PropertyDeclaration { declarations.push(PropertyDeclaration::Custom(property_name, value)); Ok(()) } + PropertyId::LonghandAlias(id, _) | PropertyId::Longhand(id) => { input.skip_whitespace(); // Unnecessary for correctness, but may help try() rewind less. input.try(|i| CSSWideKeyword::parse(i)).map(|keyword| { @@ -1680,6 +1674,7 @@ impl PropertyDeclaration { declarations.push(declaration) }) } + PropertyId::ShorthandAlias(id, _) | PropertyId::Shorthand(id) => { input.skip_whitespace(); // Unnecessary for correctness, but may help try() rewind less. if let Ok(keyword) = input.try(|i| CSSWideKeyword::parse(i)) { @@ -3592,13 +3587,13 @@ impl AliasId { /// Returns an nsCSSPropertyID. #[cfg(feature = "gecko")] #[allow(non_upper_case_globals)] - pub fn to_nscsspropertyid(&self) -> Result<nsCSSPropertyID, ()> { + pub fn to_nscsspropertyid(&self) -> nsCSSPropertyID { use gecko_bindings::structs::*; match *self { % for property in data.all_aliases(): AliasId::${property.camel_case} => { - Ok(${helpers.alias_to_nscsspropertyid(property.ident)}) + ${helpers.alias_to_nscsspropertyid(property.ident)} }, % endfor } diff --git a/components/style/stylesheets/keyframes_rule.rs b/components/style/stylesheets/keyframes_rule.rs index d0372c7d240..60d7ee3f175 100644 --- a/components/style/stylesheets/keyframes_rule.rs +++ b/components/style/stylesheets/keyframes_rule.rs @@ -9,7 +9,7 @@ use cssparser::{DeclarationListParser, DeclarationParser, parse_one_rule, Source use error_reporting::{NullReporter, ContextualParseError, ParseErrorReporter}; use parser::{ParserContext, ParserErrorContext}; use properties::{DeclarationSource, Importance, PropertyDeclaration, PropertyDeclarationBlock, PropertyId}; -use properties::{PropertyDeclarationId, PropertyParserContext, LonghandId, SourcePropertyDeclaration}; +use properties::{PropertyDeclarationId, LonghandId, SourcePropertyDeclaration}; use properties::LonghandIdSet; use properties::longhands::transition_timing_function::single_value::SpecifiedValue as SpecifiedTimingFunction; use servo_arc::Arc; @@ -581,19 +581,22 @@ impl<'a, 'b, 'i> DeclarationParser<'i> for KeyframeDeclarationParser<'a, 'b> { type Declaration = (); type Error = StyleParseErrorKind<'i>; - fn parse_value<'t>(&mut self, name: CowRcStr<'i>, input: &mut Parser<'i, 't>) - -> Result<(), ParseError<'i>> { - let property_context = PropertyParserContext::new(self.context); - - let id = PropertyId::parse(&name, Some(&property_context)).map_err(|()| { + fn parse_value<'t>( + &mut self, + name: CowRcStr<'i>, + input: &mut Parser<'i, 't>, + ) -> Result<(), ParseError<'i>> { + let id = PropertyId::parse(&name).map_err(|()| { input.new_custom_error(StyleParseErrorKind::UnknownProperty(name.clone())) })?; - match PropertyDeclaration::parse_into(self.declarations, id, name, self.context, input) { - Ok(()) => { - // In case there is still unparsed text in the declaration, we should roll back. - input.expect_exhausted().map_err(|e| e.into()) - } - Err(e) => Err(e.into()) - } + + // TODO(emilio): Shouldn't this use parse_entirely? + PropertyDeclaration::parse_into(self.declarations, id, name, self.context, input)?; + + // In case there is still unparsed text in the declaration, we should + // roll back. + input.expect_exhausted()?; + + Ok(()) } } diff --git a/components/style/stylesheets/supports_rule.rs b/components/style/stylesheets/supports_rule.rs index c65bc35cd7b..1eae1e9b08f 100644 --- a/components/style/stylesheets/supports_rule.rs +++ b/components/style/stylesheets/supports_rule.rs @@ -9,7 +9,7 @@ use cssparser::{ParseError as CssParseError, ParserInput}; #[cfg(feature = "gecko")] use malloc_size_of::{MallocSizeOfOps, MallocUnconditionalShallowSizeOf}; use parser::ParserContext; -use properties::{PropertyId, PropertyDeclaration, PropertyParserContext, SourcePropertyDeclaration}; +use properties::{PropertyId, PropertyDeclaration, SourcePropertyDeclaration}; use selectors::parser::SelectorParseErrorKind; use servo_arc::Arc; use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; @@ -259,9 +259,8 @@ impl Declaration { let prop = input.expect_ident().unwrap().as_ref().to_owned(); input.expect_colon().unwrap(); - let property_context = PropertyParserContext::new(&context); - let id = PropertyId::parse(&prop, Some(&property_context)) - .map_err(|()| input.new_custom_error(()))?; + let id = PropertyId::parse(&prop) + .map_err(|_| input.new_custom_error(()))?; let mut declarations = SourcePropertyDeclaration::new(); input.parse_until_before(Delimiter::Bang, |input| { diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 1e108122e2a..cca21a5c44e 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -2443,7 +2443,8 @@ where url_data, reporter, parsing_mode, - quirks_mode) + quirks_mode, + ) } #[no_mangle] @@ -2690,7 +2691,7 @@ pub extern "C" fn Servo_DeclarationBlock_GetNthProperty( macro_rules! get_property_id_from_property { ($property: ident, $ret: expr) => {{ let property = $property.as_ref().unwrap().as_str_unchecked(); - match PropertyId::parse(property.into(), None) { + match PropertyId::parse(property.into()) { Ok(property_id) => property_id, Err(_) => { return $ret; } } |