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

Reply via email to