Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 9adcbe8f12b9c117447569ca9d6e1cc28d934ae8 https://github.com/WebKit/WebKit/commit/9adcbe8f12b9c117447569ca9d6e1cc28d934ae8 Author: Darin Adler <da...@apple.com> Date: 2022-11-16 (Wed, 16 Nov 2022)
Changed paths: M Source/WebCore/css/CSSSelector.cpp M Source/WebCore/css/CSSSelector.h M Source/WebCore/inspector/InspectorStyleSheet.cpp Log Message: ----------- Refactor the code that handles selector specificity for simplicity and remove unused functions https://bugs.webkit.org/show_bug.cgi?id=247851 rdar://problem/102281644 Reviewed by Sam Weinig. * Source/WebCore/css/CSSSelector.cpp: (WebCore::CSSSelector::CSSSelector): Removed the m_ prefixes from struct members. (WebCore::CSSSelector::createRareData): Get rid of the local AtomString here. Clearer without. (WebCore::SelectorSpecificity): Added a struct to wrap a selector specificity value, so we can convert from the enum without a static_cast and use the + and += operators for saturating addition of each channel in parallel. (WebCore::SelectorSpecificity::operator+=): Implemented. Replaces addSpecificities. (WebCore::operator+): Implemented by calling +=. (WebCore::selectorSpecificity): Use SelectorSpecificity. (WebCore::maxSpecificity): Ditto. Also changed to take a pointer and check for null since that simplifies the code below. (WebCore::simpleSelectorSpecificity): Renamed from simpleSelectorSpecificityInternal and changed the return value to SelectorSpecificity. Removed now-unneeded static_cast and use + instead of CSSSelector::addSpecificities. (WebCore::CSSSelector::simpleSelectorSpecificity const): Deleted. (WebCore::CSSSelector::computeSpecificity const): Updated for SelectorSpecificity. (WebCore::CSSSelector::computeSpecificityTuple const): Added. This is for the inspector code that wants the three different components of specifity as separate integers. (WebCore::CSSSelector::addSpecificities): Deleted. (WebCore::appendPseudoClassFunctionTail): Removed the m_ prefixes from struct members. (WebCore::CSSSelector::setAttribute): Ditto. (WebCore::CSSSelector::setArgument): Ditto. (WebCore::CSSSelector::setArgumentList): Ditto. (WebCore::CSSSelector::setSelectorList): Ditto. (WebCore::CSSSelector::setNth): Ditto. (WebCore::CSSSelector::matchNth const): Ditto. (WebCore::CSSSelector::nthA const): Ditto. (WebCore::CSSSelector::nthB const): Ditto. (WebCore::CSSSelector::RareData::RareData): Use WTFMove to eliminate a bit of reference count churn. Moved more initialization to the class definition. (WebCore::CSSSelector::RareData::create): Moved here from the header, since this is only called from inside this file. Changed argument type to just AtomString, which is still compatible with moving new values in and more straightforward. (WebCore::CSSSelector::RareData::matchNth): Removed the m_ prefixes from struct members. * Source/WebCore/css/CSSSelector.h: Removed idMask, classMask, simpleSelectorSpecificity, and addSpecificities, none of which are needed outside the class. Added computeSpecificityTuple for use by the inspector. Changed struct members to not use the m_ syntax; we do that for private class members, not struct members. Updated the RareData::create function and initialized a, and b in RareData. * Source/WebCore/inspector/InspectorStyleSheet.cpp: (WebCore::buildObjectForSelectorHelper): Use computeSpecificityTuple. Canonical link: https://commits.webkit.org/256769@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes