Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0471d4f78defe8c15721b1d8dcdbc52307be35b3
https://github.com/WebKit/WebKit/commit/0471d4f78defe8c15721b1d8dcdbc52307be35b3
Author: Antti Koivisto <[email protected]>
Date: 2025-10-13 (Mon, 13 Oct 2025)
Changed paths:
M Source/WTF/WTF.xcodeproj/project.pbxproj
M Source/WTF/wtf/CMakeLists.txt
A Source/WTF/wtf/EnumSet.h
M Source/WTF/wtf/Forward.h
M Source/WebCore/animation/WebAnimationUtilities.h
M Source/WebCore/css/SelectorChecker.cpp
M Source/WebCore/css/SelectorChecker.h
M Source/WebCore/cssjit/SelectorCompiler.cpp
M Source/WebCore/inspector/agents/InspectorCSSAgent.cpp
M Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/style/RenderStyle.cpp
M Source/WebCore/rendering/style/RenderStyle.h
M Source/WebCore/rendering/style/RenderStyleConstants.h
M Source/WebCore/rendering/style/RenderStyleInlines.h
M Source/WebCore/rendering/style/RenderStyleSetters.h
M Source/WebCore/style/ElementRuleCollector.cpp
M Source/WebCore/style/ElementRuleCollector.h
M Source/WebCore/style/PseudoElementIdentifier.h
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WTF/EnumSet.cpp
Log Message:
-----------
Replace PseudoIdSet with EnumSet<PseudoId>
https://bugs.webkit.org/show_bug.cgi?id=300396
rdar://162214153
Reviewed by Sam Weinig.
Add a generic EnumSet class and use it for PseudoIds.
EnumSet has the same interface as OptionSet but does not require using bitmask
style enum.
This makes it more convenient to use especially when compact storage for
individual values is also important.
Tests: Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Tools/TestWebKitAPI/Tests/WTF/EnumSet.cpp
* Source/WTF/WTF.xcodeproj/project.pbxproj:
* Source/WTF/wtf/EnumSet.h: Added.
(WTF::requires):
(WTF::EnumSet::storageSize):
(WTF::EnumSet::Iterator::operator* const):
(WTF::EnumSet::Iterator::operator++):
(WTF::EnumSet::Iterator::Iterator):
(WTF::EnumSet::fromRaw):
(WTF::EnumSet::EnumSet):
(WTF::EnumSet::toRaw const):
(WTF::EnumSet::isEmpty const):
(WTF::EnumSet::begin const):
(WTF::EnumSet::end const):
(WTF::EnumSet::operator bool const):
(WTF::EnumSet::contains const):
(WTF::EnumSet::containsAny const):
(WTF::EnumSet::containsAll const):
(WTF::EnumSet::containsOnly const):
(WTF::EnumSet::add):
(WTF::EnumSet::remove):
(WTF::EnumSet::set):
(WTF::EnumSet::hasExactlyOneBitSet const):
(WTF::EnumSet::toSingleValue const):
(WTF::EnumSet::operator|):
(WTF::EnumSet::operator|=):
(WTF::EnumSet::operator&):
(WTF::EnumSet::operator-):
(WTF::EnumSet::operator^):
(WTF::EnumSet::storageMemoryOffset):
(WTF::EnumSet::get const):
* Source/WTF/wtf/Forward.h:
* Source/WebCore/animation/WebAnimationUtilities.h:
* Source/WebCore/css/SelectorChecker.cpp:
(WebCore::SelectorChecker::match const):
(WebCore::SelectorChecker::matchHostPseudoClass const):
(WebCore::hasViewTransitionPseudoElement):
(WebCore::hasScrollbarPseudoElement):
(WebCore::SelectorChecker::matchRecursively const):
(WebCore::SelectorChecker::checkOne const):
(WebCore::SelectorChecker::matchSelectorList const):
(WebCore::SelectorChecker::matchHasPseudoClass const):
* Source/WebCore/css/SelectorChecker.h:
* Source/WebCore/cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateRequestedPseudoElementEqualsToSelectorPseudoElement):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateMarkPseudoStyleForPseudoElement):
* Source/WebCore/inspector/agents/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::getMatchedStylesForNode):
* Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::highlightSelector):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::getCachedPseudoStyle const):
(WebCore::RenderElement::getUncachedPseudoStyle const):
* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::RenderStyle):
* Source/WebCore/rendering/style/RenderStyle.h:
* Source/WebCore/rendering/style/RenderStyleConstants.h:
(WebCore::PseudoIdSet::PseudoIdSet): Deleted.
(WebCore::PseudoIdSet::fromMask): Deleted.
(WebCore::PseudoIdSet::has const): Deleted.
(WebCore::PseudoIdSet::add): Deleted.
(WebCore::PseudoIdSet::remove): Deleted.
(WebCore::PseudoIdSet::merge): Deleted.
(WebCore::PseudoIdSet::operator & const): Deleted.
(WebCore::PseudoIdSet::operator | const): Deleted.
(WebCore::PseudoIdSet::operator bool const): Deleted.
(WebCore::PseudoIdSet::data const): Deleted.
(WebCore::PseudoIdSet::dataMemoryOffset): Deleted.
* Source/WebCore/rendering/style/RenderStyleInlines.h:
(WebCore::RenderStyle::pseudoElementType const):
(WebCore::RenderStyle::NonInheritedFlags::hasPseudoStyle const):
(WebCore::RenderStyle::NonInheritedFlags::hasAnyPublicPseudoStyles const):
* Source/WebCore/rendering/style/RenderStyleSetters.h:
(WebCore::RenderStyle::setHasPseudoStyles):
(WebCore::RenderStyle::NonInheritedFlags::setHasPseudoStyles):
(WebCore::RenderStyle::setPseudoElementType):
* Source/WebCore/style/ElementRuleCollector.cpp:
(WebCore::Style::ElementRuleCollector::ruleMatches):
* Source/WebCore/style/ElementRuleCollector.h:
(WebCore::Style::ElementRuleCollector::matchedPseudoElementIds const):
* Source/WebCore/style/PseudoElementIdentifier.h:
(WTF::HashTraits<WebCore::Style::PseudoElementIdentifier>::emptyValue):
(WTF::HashTraits<WebCore::Style::PseudoElementIdentifier>::constructDeletedValue):
(WTF::HashTraits<WebCore::Style::PseudoElementIdentifier>::isDeletedValue):
(WTF::HashTraits<std::optional<WebCore::Style::PseudoElementIdentifier>>::emptyValue):
(WTF::HashTraits<std::optional<WebCore::Style::PseudoElementIdentifier>>::constructDeletedValue):
(WTF::HashTraits<std::optional<WebCore::Style::PseudoElementIdentifier>>::isDeletedValue):
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WTF/EnumSet.cpp: Added.
(TestWebKitAPI::TEST(WTF_EnumSet, EmptySet)):
(TestWebKitAPI::TEST(WTF_EnumSet, StorageSize)):
(TestWebKitAPI::TEST(WTF_EnumSet, ContainsOneFlag)):
(TestWebKitAPI::TEST(WTF_EnumSet, Equal)):
(TestWebKitAPI::TEST(WTF_EnumSet, NotEqual)):
(TestWebKitAPI::TEST(WTF_EnumSet, Or)):
(TestWebKitAPI::TEST(WTF_EnumSet, OrAssignment)):
(TestWebKitAPI::TEST(WTF_EnumSet, Minus)):
(TestWebKitAPI::TEST(WTF_EnumSet, AddAndRemove)):
(TestWebKitAPI::TEST(WTF_EnumSet, Set)):
(TestWebKitAPI::TEST(WTF_EnumSet, ContainsTwoFlags)):
(TestWebKitAPI::TEST(WTF_EnumSet, ContainsTwoFlags2)):
(TestWebKitAPI::TEST(WTF_EnumSet, ContainsTwoFlags3)):
(TestWebKitAPI::TEST(WTF_EnumSet, EmptyEnumSetToRawValueToEnumSet)):
(TestWebKitAPI::TEST(WTF_EnumSet,
EnumSetThatContainsOneFlagToRawValueToEnumSet)):
(TestWebKitAPI::TEST(WTF_EnumSet,
EnumSetThatContainsOneFlagToRawValueToEnumSet2)):
(TestWebKitAPI::TEST(WTF_EnumSet,
EnumSetThatContainsTwoFlagsToRawValueToEnumSet)):
(TestWebKitAPI::TEST(WTF_EnumSet,
EnumSetThatContainsTwoFlagsToRawValueToEnumSet2)):
(TestWebKitAPI::TEST(WTF_EnumSet, TwoIteratorsIntoSameEnumSet)):
(TestWebKitAPI::TEST(WTF_EnumSet, IterateOverEnumSetThatContainsTwoFlags)):
(TestWebKitAPI::TEST(WTF_EnumSet, IterateOverEnumSetThatContainsFlags2)):
(TestWebKitAPI::TEST(WTF_EnumSet, NextItemAfterLargestIn32BitFlagSet)):
(TestWebKitAPI::TEST(WTF_EnumSet, NextItemAfterLargestIn64BitFlagSet)):
(TestWebKitAPI::TEST(WTF_EnumSet,
IterationOrderTheSameRegardlessOfInsertionOrder)):
(TestWebKitAPI::TEST(WTF_EnumSet, OperatorAnd)):
(TestWebKitAPI::TEST(WTF_EnumSet, OperatorXor)):
(TestWebKitAPI::TEST(WTF_EnumSet, ContainsAny)):
(TestWebKitAPI::TEST(WTF_EnumSet, ContainsAll)):
(TestWebKitAPI::TEST(WTF_EnumSet, ToSingleValue)):
Canonical link: https://commits.webkit.org/301450@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes