diff --git a/components/selectors/parser.rs b/components/selectors/parser.rs index 0b8d7d2331e..c6650102616 100644 --- a/components/selectors/parser.rs +++ b/components/selectors/parser.rs @@ -256,11 +256,6 @@ pub trait Parser<'i> { false } - /// The error recovery that selector lists inside :is() and :where() have. - fn is_and_where_error_recovery(&self) -> ParseErrorRecovery { - ParseErrorRecovery::IgnoreInvalidSelector - } - /// Whether the given function name is an alias for the `:is()` function. fn is_is_alias(&self, _name: &str) -> bool { false @@ -344,7 +339,7 @@ pub struct SelectorList( ); /// How to treat invalid selectors in a selector list. -pub enum ParseErrorRecovery { +enum ParseErrorRecovery { /// Discard the entire selector list, this is the default behavior for /// almost all of CSS. DiscardList, @@ -2277,7 +2272,7 @@ where state | SelectorParsingState::SKIP_DEFAULT_NAMESPACE | SelectorParsingState::DISALLOW_PSEUDOS, - parser.is_and_where_error_recovery(), + ParseErrorRecovery::IgnoreInvalidSelector, )?; Ok(component(inner.0.into_vec().into_boxed_slice())) } @@ -2686,10 +2681,6 @@ pub mod tests { true } - fn is_and_where_error_recovery(&self) -> ParseErrorRecovery { - ParseErrorRecovery::DiscardList - } - fn parse_part(&self) -> bool { true } @@ -3294,9 +3285,9 @@ pub mod tests { assert!(parse("::slotted(div)::before").is_ok()); assert!(parse("slot::slotted(div,foo)").is_err()); - assert!(parse("foo:where()").is_err()); + assert!(parse("foo:where()").is_ok()); assert!(parse("foo:where(div, foo, .bar baz)").is_ok()); - assert!(parse("foo:where(::before)").is_err()); + assert!(parse_expected("foo:where(::before)", Some("foo:where()")).is_ok()); } #[test] diff --git a/components/style/gecko/selector_parser.rs b/components/style/gecko/selector_parser.rs index b2fe46a9a2c..5379454daa0 100644 --- a/components/style/gecko/selector_parser.rs +++ b/components/style/gecko/selector_parser.rs @@ -14,7 +14,7 @@ use crate::string_cache::{Atom, Namespace, WeakAtom, WeakNamespace}; use crate::values::{AtomIdent, AtomString}; use cssparser::{BasicParseError, BasicParseErrorKind, Parser}; use cssparser::{CowRcStr, SourceLocation, ToCss, Token}; -use selectors::parser::{ParseErrorRecovery, SelectorParseErrorKind}; +use selectors::parser::SelectorParseErrorKind; use selectors::SelectorList; use std::fmt; use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss as ToCss_}; @@ -311,15 +311,6 @@ impl<'a, 'i> ::selectors::Parser<'i> for SelectorParser<'a> { true } - #[inline] - fn is_and_where_error_recovery(&self) -> ParseErrorRecovery { - if static_prefs::pref!("layout.css.is-and-where-better-error-recovery.enabled") { - ParseErrorRecovery::IgnoreInvalidSelector - } else { - ParseErrorRecovery::DiscardList - } - } - #[inline] fn parse_part(&self) -> bool { true