Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 23eb17162e9e8714c648599fcf1f96a37e68b713
https://github.com/WebKit/WebKit/commit/23eb17162e9e8714c648599fcf1f96a37e68b713
Author: Antti Koivisto <[email protected]>
Date: 2026-04-20 (Mon, 20 Apr 2026)
Changed paths:
M
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-invalidation-first-in-sibling-chain-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-sibling-insertion-removal-expected.txt
M Source/WebCore/css/SelectorChecker.cpp
M Source/WebCore/dom/Element.cpp
M Source/WebCore/dom/Element.h
M Source/WebCore/dom/Node.h
M Source/WebCore/style/ChildChangeInvalidation.cpp
M Source/WebCore/style/StyleRelations.cpp
M Source/WebCore/style/StyleRelations.h
Log Message:
-----------
Fix some :has() sibling invalidation issue
https://bugs.webkit.org/show_bug.cgi?id=312568
rdar://175006235
Reviewed by Alan Baradlay.
Fix invalidation in cases like :has(.a + .b)
*
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-invalidation-first-in-sibling-chain-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/has-sibling-insertion-removal-expected.txt:
* Source/WebCore/css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchHasPseudoClass const):
Forward AffectedByPreviousSibling, AffectsNextSibling,
DescendantsAffectedByPreviousSibling relations.
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::resetStyleRelations):
=* Source/WebCore/dom/Element.cpp:
=(WebCore::Element::resetStyleRelations):
=* Source/WebCore/dom/Element.h:
=(WebCore::Element::affectedByHasWithSiblingRelationship const):
=(WebCore::Element::affectedByHasWithAdjacentSiblingRelationship const):
=(WebCore::Element::setAffectedByHasWithSiblingRelationship):
=(WebCore::Element::setAffectedByHasWithAdjacentSiblingRelationship):
=(WebCore::Element::affectedByHasWithPositionalPseudoClass const): Deleted.
=(WebCore::Element::setAffectedByHasWithPositionalPseudoClass): Deleted.
=* Source/WebCore/dom/Node.h:
=* Source/WebCore/style/ChildChangeInvalidation.cpp:
=(WebCore::Style::ChildChangeInvalidation::invalidateForHasBeforeMutation):
=(WebCore::Style::ChildChangeInvalidation::invalidateForHasAfterMutation):
=* Source/WebCore/style/StyleRelations.cpp:
=(WebCore::Style::commitRelationsToRenderStyle):
=(WebCore::Style::commitRelations):
=* Source/WebCore/style/StyleRelations.h:
Rename since the value is used for more than just positional pseudo-classes.
Add a new value for the direct adjacent case where we don't need to check all
siblings.
Canonical link: https://commits.webkit.org/311583@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications