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