Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 59cb7cb2d9244ba77870eabe9f6a8da9249a1312 https://github.com/WebKit/WebKit/commit/59cb7cb2d9244ba77870eabe9f6a8da9249a1312 Author: Keith Cirkel <web...@keithcirkel.co.uk> Date: 2023-12-06 (Wed, 06 Dec 2023)
Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/state-in-has-expected.txt A LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/state-in-has.html M LayoutTests/imported/w3c/web-platform-tests/css/selectors/parsing/parse-state-expected.txt M LayoutTests/imported/w3c/web-platform-tests/custom-elements/state/tentative/ElementInternals-states-expected.txt M LayoutTests/imported/w3c/web-platform-tests/custom-elements/state/tentative/ElementInternals-states.html M LayoutTests/imported/w3c/web-platform-tests/custom-elements/state/tentative/state-pseudo-class-expected.txt M LayoutTests/imported/w3c/web-platform-tests/custom-elements/state/tentative/state-pseudo-class.html M LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/custom-state-set-strong-ref.tentative-expected.txt M LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/idlharness.window-expected.txt A LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/state-css-selector-shadow-dom.tentative-expected.txt A LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/state-css-selector-shadow-dom.tentative.html M LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/state-css-selector.tentative-expected.txt M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WebCore/CMakeLists.txt M Source/WebCore/DerivedSources-input.xcfilelist M Source/WebCore/DerivedSources-output.xcfilelist M Source/WebCore/DerivedSources.make M Source/WebCore/Sources.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/bindings/js/WebCoreBuiltinNames.h M Source/WebCore/css/CSSSelector.cpp M Source/WebCore/css/CSSSelector.h M Source/WebCore/css/SelectorChecker.cpp M Source/WebCore/css/SelectorPseudoClassAndCompatibilityElementMap.in M Source/WebCore/css/parser/CSSParserContext.cpp M Source/WebCore/css/parser/CSSParserContext.h M Source/WebCore/css/parser/CSSSelectorParser.cpp M Source/WebCore/css/parser/CSSSelectorParserContext.cpp M Source/WebCore/css/parser/CSSSelectorParserContext.h M Source/WebCore/cssjit/SelectorCompiler.cpp A Source/WebCore/dom/CustomStateSet.cpp A Source/WebCore/dom/CustomStateSet.h A Source/WebCore/dom/CustomStateSet.idl M Source/WebCore/dom/Element.cpp M Source/WebCore/dom/Element.h M Source/WebCore/dom/ElementInternals.cpp M Source/WebCore/dom/ElementInternals.h M Source/WebCore/dom/ElementInternals.idl M Source/WebCore/dom/ElementRareData.cpp M Source/WebCore/dom/ElementRareData.h M Source/WebCore/dom/NodeRareData.h Log Message: ----------- Add CustomStateSet and :state() selector https://bugs.webkit.org/show_bug.cgi?id=215911 Reviewed by Tim Nguyen. This adds the CustomStateSet idl definitions, and the `states` getter in the ElementInternals IDL. The gatter laziliy initialises a CustomStateSet object in ElementRareData which behaves like a setlike<DOMString>. This also adds the `:state()` pseudo selector, which can take an ident and matches when the ident matches one of the given states in the CustomStateSet for the element. Any states set by CustomStateSet need to invalidate styles for the element, so the `:state()` pseudo can match. * LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/state-in-has-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/css/selectors/invalidation/state-in-has.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/selectors/parsing/parse-state-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/custom-elements/state/tentative/ElementInternals-states-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/custom-elements/state/tentative/ElementInternals-states.html: * LayoutTests/imported/w3c/web-platform-tests/custom-elements/state/tentative/state-pseudo-class-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/custom-elements/state/tentative/state-pseudo-class.html: * LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/custom-state-set-strong-ref.tentative-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/idlharness.window-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/state-css-selector-shadow-dom.tentative-expected.txt: Added. * LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/state-css-selector-shadow-dom.tentative.html: Added. * LayoutTests/imported/w3c/web-platform-tests/custom-state-pseudo-class/state-css-selector.tentative-expected.txt: * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WebCore/CMakeLists.txt: * Source/WebCore/DerivedSources-input.xcfilelist: * Source/WebCore/DerivedSources-output.xcfilelist: * Source/WebCore/DerivedSources.make: * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/bindings/js/WebCoreBuiltinNames.h: * Source/WebCore/css/CSSSelector.cpp: (WebCore::CSSSelector::selectorText const): * Source/WebCore/css/CSSSelector.h: * Source/WebCore/css/SelectorChecker.cpp: (WebCore::SelectorChecker::checkOne const): * Source/WebCore/css/SelectorPseudoClassAndCompatibilityElementMap.in: * Source/WebCore/css/parser/CSSParserContext.cpp: (WebCore::add): * Source/WebCore/css/parser/CSSParserContext.h: * Source/WebCore/css/parser/CSSSelectorParser.cpp: (WebCore::isOnlyPseudoClassFunction): (WebCore::CSSSelectorParser::consumePseudo): * Source/WebCore/css/parser/CSSSelectorParserContext.cpp: (WebCore::CSSSelectorParserContext::CSSSelectorParserContext): (WebCore::add): * Source/WebCore/css/parser/CSSSelectorParserContext.h: * Source/WebCore/cssjit/SelectorCompiler.cpp: (WebCore::SelectorCompiler::addPseudoClassType): * Source/WebCore/dom/CustomStateSet.cpp: Added. (WebCore::CustomStateSet::addToSetLike): (WebCore::CustomStateSet::removeFromSetLike): (WebCore::CustomStateSet::clearFromSetLike): (WebCore::CustomStateSet::has): * Source/WebCore/dom/CustomStateSet.h: Added. * Source/WebCore/dom/CustomStateSet.idl: Added. * Source/WebCore/dom/Element.cpp: (WebCore::Element::hasCustomState const): (WebCore::Element::ensureCustomStateSet): * Source/WebCore/dom/Element.h: * Source/WebCore/dom/ElementInternals.cpp: (WebCore::ElementInternals::states): * Source/WebCore/dom/ElementInternals.h: * Source/WebCore/dom/ElementInternals.idl: * Source/WebCore/dom/ElementRareData.cpp: * Source/WebCore/dom/ElementRareData.h: (WebCore::ElementRareData::customStateSet): (WebCore::ElementRareData::setCustomStateSet): (WebCore::ElementRareData::useTypes const): * Source/WebCore/dom/NodeRareData.h: Canonical link: https://commits.webkit.org/271600@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes