Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 79f21948053b671252d6c74362218c6807247f41
      
https://github.com/WebKit/WebKit/commit/79f21948053b671252d6c74362218c6807247f41
  Author: Sam Weinig <[email protected]>
  Date:   2025-12-29 (Mon, 29 Dec 2025)

  Changed paths:
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/DerivedSources.make
    M Source/WebCore/Headers.cmake
    M Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations
    M Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations
    M 
Source/WebCore/SaferCPPExpectations/UncountedLambdaCapturesCheckerExpectations
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXTableHelpers.cpp
    M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
    M Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp
    M Source/WebCore/accessibility/cocoa/AccessibilityObjectCocoa.mm
    M Source/WebCore/css/CSSProperties.json
    M Source/WebCore/css/scripts/process-css-properties.py
    M Source/WebCore/css/scripts/test/TestCSSProperties.json
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSPropertyInitialValuesGeneratedInlines.h
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSPropertyNames.gperf
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSPropertyNames.h
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSPropertyParsing.cpp
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSStyleProperties+PropertyNames.idl
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/RenderStyleProperties+GettersInlines.h
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/RenderStyleProperties+SettersInlines.h
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/RenderStyleProperties.h
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleBuilderGenerated.cpp
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleChangedAnimatablePropertiesGenerated.cpp
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties+GettersInlines.h
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties+InitialInlines.h
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties+SettersInlines.h
    A 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties.cpp
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties.h
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleExtractorGenerated.cpp
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleInterpolationWrapperMap.cpp
    M 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StylePropertyShorthandFunctions.cpp
    M Source/WebCore/editing/EditingStyle.cpp
    M Source/WebCore/editing/Editor.cpp
    M Source/WebCore/editing/FrameSelection.cpp
    M Source/WebCore/editing/ReplaceSelectionCommand.cpp
    M Source/WebCore/editing/cocoa/DataDetection.mm
    M Source/WebCore/editing/cocoa/EditingHTMLConverter.mm
    M Source/WebCore/html/shadow/DateTimeFieldElement.cpp
    M Source/WebCore/page/FrameSnapshotting.cpp
    M Source/WebCore/page/InteractionRegion.cpp
    M Source/WebCore/page/LocalFrameView.cpp
    M Source/WebCore/page/writing-tools/WritingToolsController.mm
    M Source/WebCore/rendering/AttachmentLayout.mm
    M Source/WebCore/rendering/BackgroundPainter.cpp
    M Source/WebCore/rendering/BorderEdge.cpp
    M Source/WebCore/rendering/CSSFilterRenderer.cpp
    M Source/WebCore/rendering/EllipsisBoxPainter.cpp
    M Source/WebCore/rendering/InlineBoxPainter.cpp
    M Source/WebCore/rendering/OutlinePainter.cpp
    M Source/WebCore/rendering/RenderBox.cpp
    M Source/WebCore/rendering/RenderElement.cpp
    M Source/WebCore/rendering/RenderElement.h
    M Source/WebCore/rendering/RenderFileUploadControl.cpp
    M Source/WebCore/rendering/RenderFrameSet.cpp
    M Source/WebCore/rendering/RenderImage.cpp
    M Source/WebCore/rendering/RenderLayerBacking.cpp
    M Source/WebCore/rendering/RenderLayerCompositor.cpp
    M Source/WebCore/rendering/RenderLayerScrollableArea.cpp
    M Source/WebCore/rendering/RenderListBox.cpp
    M Source/WebCore/rendering/RenderListMarker.cpp
    M Source/WebCore/rendering/RenderMenuList.cpp
    M Source/WebCore/rendering/RenderMultiColumnSet.cpp
    M Source/WebCore/rendering/RenderReplaced.cpp
    M Source/WebCore/rendering/RenderSearchField.cpp
    M Source/WebCore/rendering/RenderTable.h
    M Source/WebCore/rendering/RenderTableCell.cpp
    M Source/WebCore/rendering/RenderTableSection.cpp
    M Source/WebCore/rendering/RenderTableSection.h
    M Source/WebCore/rendering/RenderTheme.cpp
    M Source/WebCore/rendering/RenderTreeAsText.cpp
    M Source/WebCore/rendering/StyledMarkedText.cpp
    M Source/WebCore/rendering/TextBoxPainter.cpp
    M Source/WebCore/rendering/TextDecorationPainter.cpp
    M Source/WebCore/rendering/TextPaintStyle.cpp
    M Source/WebCore/rendering/TextPainter.cpp
    M Source/WebCore/rendering/cocoa/RenderThemeCocoa.mm
    M Source/WebCore/rendering/ios/RenderThemeIOS.mm
    M Source/WebCore/rendering/mac/RenderThemeMac.mm
    M Source/WebCore/rendering/mathml/MathOperator.cpp
    M Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp
    M Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp
    M Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp
    M Source/WebCore/rendering/mathml/RenderMathMLToken.cpp
    M Source/WebCore/rendering/style/RenderStyle+GettersInlines.h
    M Source/WebCore/rendering/style/RenderStyle.cpp
    M Source/WebCore/rendering/style/RenderStyle.h
    M Source/WebCore/rendering/style/StyleGradientImage.cpp
    M Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp
    M Source/WebCore/rendering/svg/RenderSVGShape.cpp
    M Source/WebCore/rendering/svg/SVGPaintServerHandling.h
    A Source/WebCore/rendering/svg/SVGPaintServerHandlingInlines.h
    M Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp
    M Source/WebCore/rendering/svg/SVGTextBoxPainter.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceSolidColor.cpp
    A Source/WebCore/style/StyleColorResolver.cpp
    A Source/WebCore/style/StyleColorResolver.h
    M Source/WebCore/style/StyleExtractorCustom.h
    M Source/WebCore/style/StyleInterpolation.cpp
    M Source/WebCore/style/StyleTreeResolver.cpp
    M Source/WebCore/style/UserAgentStyle.cpp
    M Source/WebCore/style/computed/StyleComputedStyleBase.cpp
    M Source/WebCore/style/computed/StyleComputedStyleBase.h
    M 
Source/WebCore/style/computed/StyleComputedStyleProperties+GettersCustomInlines.h
    M Source/WebCore/style/values/borders/StyleBoxShadow.cpp
    M Source/WebCore/style/values/color/StyleColor.cpp
    M Source/WebCore/style/values/images/StyleGradient.cpp
    M Source/WebCore/style/values/text-decoration/StyleTextShadow.cpp
    M Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp
    M Source/WebCore/svg/SVGFEDropShadowElement.cpp
    M Source/WebCore/svg/SVGFEFloodElement.cpp
    M Source/WebCore/svg/SVGFESpecularLightingElement.cpp
    M Source/WebCore/svg/SVGStopElement.cpp
    M Source/WebCore/svg/properties/SVGPropertyTraits.cpp
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
    M Source/WebKitLegacy/mac/WebView/WebFrame.mm
    M Source/WebKitLegacy/mac/WebView/WebView.mm
    M Tools/Scripts/webkitpy/style/checkers/jsonchecker.py

  Log Message:
  -----------
  [UsedStyle] Extract color related computation from RenderStyle
https://bugs.webkit.org/show_bug.cgi?id=304743

Reviewed by Simon Fraser.

Like was done with the transform code by moving it to 
`Style::TransformResolver`,
the color resolution functions on `RenderStyle` are now moved to their own new
style adaptor, `Style::ColorResolver`.

Unlike the transforms code, additional per-"color property" functions are useful
to simplify many common uses, removing the need for passing CSSPropertyIDs. For
each color property, the following functions have been added:

    Style::ColorPropertyResolver<...> {property}Resolver() const;
    WebCore::Color {property}ResolvingCurrentColor() const;
    WebCore::Color {property}ResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependent{property}(OptionSet<PaintBehavior>) const;
    WebCore::Color 
visitedDependent{property}ApplyingColorFilter(OptionSet<PaintBehavior>) const;

with the following two also being added if the property supports a visited
link variant:

    WebCore::Color visitedLink{property}ResolvingCurrentColor() const;
    WebCore::Color 
visitedLink{property}ResolvingCurrentColorApplyingColorFilter() const;

All the functions are implemented using the return type of 
`{property}Resolver()`
function, `Style::ColorPropertyResolver<...>`. 
`Style::ColorPropertyResolver<...>`,
which extends the general `Style::ColorResolver` with property specific logic,
uses new `Style::ColorPropertyTraits<...>` to specialize its behavior, and allow
properties to customize the resolution process. This specialization is needed to
maintain the behavior for `color`, `background-color` and 
`text-decoration-color`.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Headers.cmake:
* Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/accessibility/AXObjectCache.cpp:
* Source/WebCore/accessibility/AXTableHelpers.cpp:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
* Source/WebCore/accessibility/cocoa/AccessibilityObjectCocoa.mm:
* Source/WebCore/css/CSSProperties.json:
* Source/WebCore/css/scripts/process-css-properties.py:
* Source/WebCore/css/scripts/test/TestCSSProperties.json:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSPropertyInitialValuesGeneratedInlines.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSPropertyNames.gperf:
* Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSPropertyNames.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSPropertyParsing.cpp:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/CSSStyleProperties+PropertyNames.idl:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/RenderStyleProperties+GettersInlines.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/RenderStyleProperties+SettersInlines.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/RenderStyleProperties.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleBuilderGenerated.cpp:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleChangedAnimatablePropertiesGenerated.cpp:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties+GettersInlines.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties+InitialInlines.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties+SettersInlines.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties.cpp:
 Added.
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleComputedStyleProperties.h:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleExtractorGenerated.cpp:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StyleInterpolationWrapperMap.cpp:
* 
Source/WebCore/css/scripts/test/TestCSSPropertiesResults/StylePropertyShorthandFunctions.cpp:
* Source/WebCore/editing/Editor.cpp:
* Source/WebCore/editing/FrameSelection.cpp:
* Source/WebCore/editing/cocoa/DataDetection.mm:
* Source/WebCore/editing/cocoa/EditingHTMLConverter.mm:
* Source/WebCore/html/shadow/DateTimeFieldElement.cpp:
* Source/WebCore/page/FrameSnapshotting.cpp:
* Source/WebCore/page/InteractionRegion.cpp:
* Source/WebCore/page/LocalFrameView.cpp:
* Source/WebCore/page/writing-tools/WritingToolsController.mm:
* Source/WebCore/rendering/AttachmentLayout.mm:
* Source/WebCore/rendering/BackgroundPainter.cpp:
* Source/WebCore/rendering/BorderEdge.cpp:
* Source/WebCore/rendering/CSSFilterRenderer.cpp:
* Source/WebCore/rendering/EllipsisBoxPainter.cpp:
* Source/WebCore/rendering/InlineBoxPainter.cpp:
* Source/WebCore/rendering/OutlinePainter.cpp:
* Source/WebCore/rendering/RenderBox.cpp:
* Source/WebCore/rendering/RenderElement.cpp:
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderFileUploadControl.cpp:
* Source/WebCore/rendering/RenderFrameSet.cpp:
* Source/WebCore/rendering/RenderImage.cpp:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
* Source/WebCore/rendering/RenderLayerScrollableArea.cpp:
* Source/WebCore/rendering/RenderListBox.cpp:
* Source/WebCore/rendering/RenderListMarker.cpp:
* Source/WebCore/rendering/RenderMenuList.cpp:
* Source/WebCore/rendering/RenderMultiColumnSet.cpp:
* Source/WebCore/rendering/RenderReplaced.cpp:
* Source/WebCore/rendering/RenderSearchField.cpp:
* Source/WebCore/rendering/RenderTable.h:
* Source/WebCore/rendering/RenderTableCell.cpp:
* Source/WebCore/rendering/RenderTableSection.cpp:
* Source/WebCore/rendering/RenderTableSection.h:
* Source/WebCore/rendering/RenderTheme.cpp:
* Source/WebCore/rendering/RenderTreeAsText.cpp:
* Source/WebCore/rendering/StyledMarkedText.cpp:
* Source/WebCore/rendering/TextBoxPainter.cpp:
* Source/WebCore/rendering/TextDecorationPainter.cpp:
* Source/WebCore/rendering/TextPaintStyle.cpp:
* Source/WebCore/rendering/TextPainter.cpp:
* Source/WebCore/rendering/cocoa/RenderThemeCocoa.mm:
* Source/WebCore/rendering/ios/RenderThemeIOS.mm:
* Source/WebCore/rendering/mac/RenderThemeMac.mm:
* Source/WebCore/rendering/mathml/MathOperator.cpp:
* Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp:
* Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp:
* Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp:
* Source/WebCore/rendering/mathml/RenderMathMLToken.cpp:
* Source/WebCore/rendering/style/RenderStyle+GettersInlines.h:
* Source/WebCore/rendering/style/RenderStyle.cpp:
* Source/WebCore/rendering/style/RenderStyle.h:
* Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:
* Source/WebCore/rendering/svg/RenderSVGShape.cpp:
* Source/WebCore/rendering/svg/SVGPaintServerHandling.h:
* Source/WebCore/rendering/svg/SVGPaintServerHandlingInlines.h: Added.
* Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp:
* Source/WebCore/rendering/svg/SVGTextBoxPainter.cpp:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.cpp:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceSolidColor.cpp:
* Source/WebCore/style/StyleColorResolver.cpp: Added.
* Source/WebCore/style/StyleColorResolver.h: Added.
* Source/WebCore/style/StyleExtractorCustom.h:
* Source/WebCore/style/StyleInterpolation.cpp:
* Source/WebCore/style/StyleTreeResolver.cpp:
* Source/WebCore/style/UserAgentStyle.cpp:
* Source/WebCore/style/computed/StyleComputedStyleBase.cpp:
* Source/WebCore/style/computed/StyleComputedStyleBase.h:
* 
Source/WebCore/style/computed/StyleComputedStyleProperties+GettersCustomInlines.h:
* Source/WebCore/style/values/borders/StyleBoxShadow.cpp:
* Source/WebCore/style/values/color/StyleColor.cpp:
* Source/WebCore/style/values/images/StyleGradient.cpp:
* Source/WebCore/style/values/text-decoration/StyleTextShadow.cpp:
* Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:
* Source/WebCore/svg/SVGFEDropShadowElement.cpp:
* Source/WebCore/svg/SVGFEFloodElement.cpp:
* Source/WebCore/svg/SVGFESpecularLightingElement.cpp:
* Source/WebCore/svg/SVGStopElement.cpp:
* Source/WebCore/svg/properties/SVGPropertyTraits.cpp:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
* Source/WebKitLegacy/mac/WebView/WebFrame.mm:
* Source/WebKitLegacy/mac/WebView/WebView.mm:

Canonical link: https://commits.webkit.org/304985@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to