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

Reply via email to