haikuwebkit/LayoutTests/fast/selectors/style-invalidation-focus-wi...

8 lines
31 B
Plaintext
Raw Permalink Normal View History

Accurate style invalidation for user action pseudo classes https://bugs.webkit.org/show_bug.cgi?id=208859 <rdar://problem/55196888> Reviewed by Zalan Bujtas. Source/WebCore: Currently :hover, :focus, :focus-within and :active lack fine grained invalidation using rule sets like we do with class and attribute selectors. This can be added easily following the same pattern. Tests: fast/selectors/style-invalidation-hover-change-descendants.html fast/selectors/style-invalidation-hover-change-siblings.html fast/selectors/style-invalidation-focus-change-descendants.html fast/selectors/style-invalidation-focus-change-siblings.html fast/selectors/style-invalidation-focus-within-change-descendants.html fast/selectors/style-invalidation-focus-within-change-siblings.html * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Element.cpp: (WebCore::Element::setActive): (WebCore::Element::setFocus): (WebCore::Element::setHasFocusWithin): (WebCore::Element::setHovered): Use PseudoClassChangeInvalidation. * dom/Element.h: (WebCore::Element::setHasFocusWithin): Deleted. * page/FrameViewLayoutContext.cpp: (WebCore::RenderTreeNeedsLayoutChecker::~RenderTreeNeedsLayoutChecker): * style/PseudoClassChangeInvalidation.cpp: Added. (WebCore::Style::PseudoClassChangeInvalidation::computeInvalidation): Compute invalidation rule set for a pseudo class change. (WebCore::Style::PseudoClassChangeInvalidation::invalidateStyleWithRuleSets): * style/PseudoClassChangeInvalidation.h: Added. (WebCore::Style::PseudoClassChangeInvalidation::PseudoClassChangeInvalidation): (WebCore::Style::PseudoClassChangeInvalidation::~PseudoClassChangeInvalidation): * style/RuleFeature.cpp: (WebCore::Style::RuleFeatureSet::recursivelyCollectFeaturesFromSelector): (WebCore::Style::RuleFeatureSet::collectFeatures): Collect pseudo class features, similar to classes/attributes. (WebCore::Style::RuleFeatureSet::add): (WebCore::Style::RuleFeatureSet::clear): (WebCore::Style::RuleFeatureSet::shrinkToFit): * style/RuleFeature.h: * style/StyleScopeRuleSets.cpp: (WebCore::Style::ScopeRuleSets::collectFeatures const): (WebCore::Style::ensureInvalidationRuleSets): Make more generic to allow enum key. (WebCore::Style::ScopeRuleSets::pseudoClassInvalidationRuleSets const): Create pseudo class invalidation ruleset. * style/StyleScopeRuleSets.h: LayoutTests: * fast/selectors/style-invalidation-focus-change-descendants-expected.txt: Added. * fast/selectors/style-invalidation-focus-change-descendants.html: Added. * fast/selectors/style-invalidation-focus-change-siblings-expected.txt: Added. * fast/selectors/style-invalidation-focus-change-siblings.html: Added. * fast/selectors/style-invalidation-focus-within-change-descendants-expected.txt: Added. * fast/selectors/style-invalidation-focus-within-change-descendants.html: Added. * fast/selectors/style-invalidation-focus-within-change-siblings-expected.txt: Added. * fast/selectors/style-invalidation-focus-within-change-siblings.html: Added. * fast/selectors/style-invalidation-hover-change-descendants-expected.txt: Added. * fast/selectors/style-invalidation-hover-change-descendants.html: Added. * fast/selectors/style-invalidation-hover-change-siblings-expected.txt: Added. * fast/selectors/style-invalidation-hover-change-siblings.html: Added. Canonical link: https://commits.webkit.org/221891@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258321 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-12 13:30:10 +00:00
PASS
PASS
PASS
PASS
PASS
PASS