From 5671b9f0250a19e27b584bbcd48d8689d1685ead Mon Sep 17 00:00:00 2001 From: CanadaHonk Date: Sat, 22 Apr 2023 21:46:15 +0000 Subject: [PATCH] style: Fix @import supports() parsing position Fixed @import supports() being parsed in the incorrect position as per spec. Also added more WPT tests for layer and supports in one @import. Differential Revision: https://phabricator.services.mozilla.com/D176193 --- components/style/stylesheets/rule_parser.rs | 30 ++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/components/style/stylesheets/rule_parser.rs b/components/style/stylesheets/rule_parser.rs index a60cd0ea6d0..185d549ef0f 100644 --- a/components/style/stylesheets/rule_parser.rs +++ b/components/style/stylesheets/rule_parser.rs @@ -241,6 +241,21 @@ impl<'a, 'i> AtRuleParser<'i> for TopLevelRuleParser<'a> { let url_string = input.expect_url_or_string()?.as_ref().to_owned(); let url = CssUrl::parse_from_string(url_string, &self.context, CorsMode::None); + let layer = if input.try_parse(|input| input.expect_ident_matching("layer")).is_ok() { + Some(ImportLayer { + name: None, + }) + } else { + input.try_parse(|input| { + input.expect_function_matching("layer")?; + input.parse_nested_block(|input| { + LayerName::parse(&self.context, input) + }).map(|name| ImportLayer { + name: Some(name), + }) + }).ok() + }; + #[cfg(feature = "gecko")] let supports_enabled = static_prefs::pref!("layout.css.import-supports.enabled"); #[cfg(feature = "servo")] @@ -264,21 +279,6 @@ impl<'a, 'i> AtRuleParser<'i> for TopLevelRuleParser<'a> { }).ok() }; - let layer = if input.try_parse(|input| input.expect_ident_matching("layer")).is_ok() { - Some(ImportLayer { - name: None, - }) - } else { - input.try_parse(|input| { - input.expect_function_matching("layer")?; - input.parse_nested_block(|input| { - LayerName::parse(&self.context, input) - }).map(|name| ImportLayer { - name: Some(name), - }) - }).ok() - }; - let media = MediaList::parse(&self.context, input); let media = Arc::new(self.shared_lock.wrap(media));