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

Reply via email to