[webkit-changes] [WebKit/WebKit] ffffbf: invalidateNodeListAndCollectionCachesInAncestorsF...
Ryosuke Niwa
noreply at github.com
Thu Jan 18 09:53:42 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ffffbfafc4cd8c6819a7598243d3bc4f29af5d61
https://github.com/WebKit/WebKit/commit/ffffbfafc4cd8c6819a7598243d3bc4f29af5d61
Author: Ryosuke Niwa <rniwa at webkit.org>
Date: 2024-01-18 (Thu, 18 Jan 2024)
Changed paths:
M Source/WebCore/dom/ContainerNode.cpp
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/Element.cpp
M Source/WebCore/dom/Node.cpp
M Source/WebCore/dom/Node.h
M Source/WebCore/dom/SelectorQuery.cpp
M Source/WebCore/dom/SelectorQuery.h
Log Message:
-----------
invalidateNodeListAndCollectionCachesInAncestorsForAttribute shouldn't call invalidateQuerySelectorAllResults in most cases
https://bugs.webkit.org/show_bug.cgi?id=267626
Reviewed by Yusuke Suzuki.
Invalidation was happening too frequently. Only invalidate when class attribute's value change. Also, instead of invalidating
the all results entries at once, remove specific selector results which were affected by the class attribute change.
To do this, this PR moves the invalidation logic from Node::invalidateNodeListAndCollectionCachesInAncestorsForAttribute to
Element::classAttributeChanged, which has access to space separated class name list.
* Source/WebCore/dom/ContainerNode.cpp:
(WebCore::ContainerNode::querySelectorAll):
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::addResultForSelectorAll):
(WebCore::Document::invalidateQuerySelectorAllResultsForClassAttributeChange): Added.
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::classAttributeChanged):
* Source/WebCore/dom/Node.cpp:
(WebCore::Node::invalidateNodeListAndCollectionCachesInAncestorsForAttribute):
* Source/WebCore/dom/Node.h:
* Source/WebCore/dom/SelectorQuery.cpp:
(WebCore::SelectorDataList::classNameToMatch const): Added.
* Source/WebCore/dom/SelectorQuery.h:
(WebCore::SelectorQuery::classNameToMatch const): Added.
Canonical link: https://commits.webkit.org/273183@main
More information about the webkit-changes
mailing list