Revert "LibWeb/CSS: Keep invalid parts of <forgiving-selector-list>s around"

This reverts commit 698dd600f2.

This caused multiple tests to crash on macOS:
https://github.com/LadybirdBrowser/ladybird/pull/2317#issuecomment-2474725826
This commit is contained in:
Andreas Kling 2024-11-13 21:37:34 +01:00
commit 2a5dbedad4
Notes: github-actions[bot] 2024-11-13 20:39:08 +00:00
8 changed files with 3 additions and 110 deletions

View file

@ -11,28 +11,6 @@
namespace Web::CSS {
static bool component_value_contains_nesting_selector(Parser::ComponentValue const& component_value)
{
if (component_value.is_delim('&'))
return true;
if (component_value.is_block()) {
for (auto const& child_value : component_value.block().value) {
if (component_value_contains_nesting_selector(child_value))
return true;
}
}
if (component_value.is_function()) {
for (auto const& child_value : component_value.function().value) {
if (component_value_contains_nesting_selector(child_value))
return true;
}
}
return false;
}
Selector::Selector(Vector<CompoundSelector>&& compound_selectors)
: m_compound_selectors(move(compound_selectors))
{
@ -66,17 +44,6 @@ Selector::Selector(Vector<CompoundSelector>&& compound_selectors)
if (m_contains_the_nesting_selector)
break;
}
if (simple_selector.type == SimpleSelector::Type::Invalid) {
auto& invalid = simple_selector.value.get<SimpleSelector::Invalid>();
for (auto& item : invalid.component_values) {
if (component_value_contains_nesting_selector(item)) {
m_contains_the_nesting_selector = true;
break;
}
}
if (m_contains_the_nesting_selector)
break;
}
}
if (m_contains_the_nesting_selector)
break;
@ -217,9 +184,6 @@ u32 Selector::specificity() const
// The parented case is handled by replacing & with :is().
// So if we got here, the specificity is 0.
break;
case SimpleSelector::Type::Invalid:
// Ignore invalid selectors
break;
}
}
}
@ -396,12 +360,6 @@ String Selector::SimpleSelector::serialize() const
// AD-HOC: Not in spec yet.
s.append('&');
break;
case Type::Invalid:
// AD-HOC: We're not told how to do these. Just serialize their component values.
auto invalid = value.get<Invalid>();
for (auto const& component_value : invalid.component_values)
s.append(component_value.to_string());
break;
}
return MUST(s.to_string());
}
@ -644,7 +602,6 @@ Selector::SimpleSelector Selector::SimpleSelector::absolutized(Selector::SimpleS
case Type::Class:
case Type::Attribute:
case Type::PseudoElement:
case Type::Invalid:
// Everything else isn't affected
return *this;
}