LibWeb: Use invalidation sets for :defined style invalidation

This commit is contained in:
Aliaksandr Kalenik 2025-02-06 16:19:27 +01:00 committed by Andreas Kling
commit a6bea99959
Notes: github-actions[bot] 2025-02-06 19:08:10 +00:00
4 changed files with 8 additions and 16 deletions

View file

@ -2656,9 +2656,6 @@ void StyleComputer::collect_selector_insights(Selector const& selector, Selector
if (simple_selector.pseudo_class().type == PseudoClass::Has) {
insights.has_has_selectors = true;
}
if (simple_selector.pseudo_class().type == PseudoClass::Defined) {
insights.has_defined_selectors = true;
}
for (auto const& argument_selector : simple_selector.pseudo_class().argument_selector_list) {
collect_selector_insights(*argument_selector, insights);
}
@ -3175,13 +3172,4 @@ bool StyleComputer::may_have_has_selectors() const
return m_selector_insights->has_has_selectors;
}
bool StyleComputer::may_have_defined_selectors() const
{
if (!has_valid_rule_cache())
return true;
build_rule_cache_if_needed();
return m_selector_insights->has_defined_selectors;
}
}

View file

@ -177,7 +177,6 @@ public:
void collect_animation_into(DOM::Element&, Optional<CSS::Selector::PseudoElement::Type>, GC::Ref<Animations::KeyframeEffect> animation, ComputedProperties&, AnimationRefresh = AnimationRefresh::No) const;
[[nodiscard]] bool may_have_has_selectors() const;
[[nodiscard]] bool may_have_defined_selectors() const;
size_t number_of_css_font_faces_with_loading_in_progress() const;
@ -257,7 +256,6 @@ private:
struct SelectorInsights {
bool has_has_selectors { false };
bool has_defined_selectors { false };
};
struct RuleCache {

View file

@ -69,6 +69,7 @@ static void collect_properties_used_in_has(Selector::SimpleSelector const& selec
switch (pseudo_class.type) {
case PseudoClass::Enabled:
case PseudoClass::Disabled:
case PseudoClass::Defined:
case PseudoClass::PlaceholderShown:
case PseudoClass::Checked:
if (in_has)
@ -122,6 +123,7 @@ static void build_invalidation_sets_for_simple_selector(Selector::SimpleSelector
auto const& pseudo_class = selector.pseudo_class();
switch (pseudo_class.type) {
case PseudoClass::Enabled:
case PseudoClass::Defined:
case PseudoClass::Disabled:
case PseudoClass::PlaceholderShown:
case PseudoClass::Checked: