[webkit-changes] [WebKit/WebKit] d7aed1: Support CSS color values that use calc() with non-...
Commit Queue
noreply at github.com
Fri Aug 23 13:32:31 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d7aed1e4ddffee252473469567148feb4fa1fac4
https://github.com/WebKit/WebKit/commit/d7aed1e4ddffee252473469567148feb4fa1fac4
Author: Sam Weinig <sam at webkit.org>
Date: 2024-08-23 (Fri, 23 Aug 2024)
Changed paths:
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-color-function-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-color-function.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-color-mix-function-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-color-mix-function.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-hsl-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-hsl.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-hwb-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-hwb.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-lab-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-lab.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-rgb-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-rgb.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-color-function-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-color-function.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-color-mix-function-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-color-mix-function.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-hsl-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-hsl.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-hwb-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-hwb.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-lab-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-lab.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-rgb-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-rgb.html
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
A Source/WebCore/css/calc/CSSCalcTree+Copy.cpp
A Source/WebCore/css/calc/CSSCalcTree+Copy.h
M Source/WebCore/css/calc/CSSCalcTree+Parser.cpp
M Source/WebCore/css/calc/CSSCalcTree+Serialization.cpp
M Source/WebCore/css/calc/CSSCalcTree+Serialization.h
M Source/WebCore/css/calc/CSSCalcTree.cpp
M Source/WebCore/css/calc/CSSCalcValue.cpp
M Source/WebCore/css/calc/CSSCalcValue.h
M Source/WebCore/css/color/CSSAbsoluteColorResolver.h
A Source/WebCore/css/color/CSSAbsoluteColorSerialization.h
M Source/WebCore/css/color/CSSColorConversion+ToTypedColor.h
M Source/WebCore/css/color/CSSColorMixSerialization.cpp
M Source/WebCore/css/color/CSSColorMixSerialization.h
M Source/WebCore/css/color/CSSRelativeColorResolver.h
R Source/WebCore/css/color/CSSUnresolvedAbsoluteColor.cpp
M Source/WebCore/css/color/CSSUnresolvedAbsoluteColor.h
A Source/WebCore/css/color/CSSUnresolvedAbsoluteResolvedColor.cpp
A Source/WebCore/css/color/CSSUnresolvedAbsoluteResolvedColor.h
M Source/WebCore/css/color/CSSUnresolvedColor.cpp
M Source/WebCore/css/color/CSSUnresolvedColor.h
M Source/WebCore/css/color/CSSUnresolvedColorHex.h
M Source/WebCore/css/color/CSSUnresolvedColorKeyword.cpp
M Source/WebCore/css/color/CSSUnresolvedColorKeyword.h
M Source/WebCore/css/color/CSSUnresolvedColorLayers.cpp
M Source/WebCore/css/color/CSSUnresolvedColorLayers.h
M Source/WebCore/css/color/CSSUnresolvedColorMix.cpp
M Source/WebCore/css/color/CSSUnresolvedColorMix.h
R Source/WebCore/css/color/CSSUnresolvedColorResolutionContext.cpp
R Source/WebCore/css/color/CSSUnresolvedColorResolutionContext.h
A Source/WebCore/css/color/CSSUnresolvedColorResolutionState.cpp
A Source/WebCore/css/color/CSSUnresolvedColorResolutionState.h
M Source/WebCore/css/color/CSSUnresolvedLightDark.cpp
M Source/WebCore/css/color/CSSUnresolvedLightDark.h
M Source/WebCore/css/color/CSSUnresolvedRelativeColor.h
A Source/WebCore/css/color/CSSUnresolvedStyleColorResolutionState.h
M Source/WebCore/css/color/StyleColor.cpp
M Source/WebCore/css/color/StyleColor.h
M Source/WebCore/css/color/StyleColorLayers.cpp
M Source/WebCore/css/color/StyleColorLayers.h
M Source/WebCore/css/color/StyleColorMix.cpp
M Source/WebCore/css/color/StyleColorMix.h
M Source/WebCore/css/color/StyleRelativeColor.h
M Source/WebCore/css/parser/CSSPropertyParserConsumer+Color.cpp
M Source/WebCore/css/parser/CSSPropertyParserConsumer+Color.h
M Source/WebCore/css/parser/CSSPropertyParserConsumer+RawResolver.cpp
M Source/WebCore/css/parser/CSSPropertyParserConsumer+UnevaluatedCalc.cpp
M Source/WebCore/css/parser/CSSPropertyParserConsumer+UnevaluatedCalc.h
M Source/WebCore/html/canvas/CanvasStyle.cpp
M Source/WebCore/platform/calc/CalculationTree+Copy.cpp
M Source/WebCore/style/ColorFromPrimitiveValue.cpp
M Source/WebCore/style/ColorFromPrimitiveValue.h
M Source/WebCore/style/FilterOperationsBuilder.cpp
M Source/WebCore/style/StyleBuilderState.cpp
Log Message:
-----------
Support CSS color values that use calc() with non-absolute lengths
https://bugs.webkit.org/show_bug.cgi?id=278547
Reviewed by Darin Adler.
Adds support for CSS colors that use calc() with non-absolute lengths
such as:
hsl(calc(50deg + (sign(1em - 10px) * 10deg)), 100%, 37.5%, 50%)
These have the special property that their calc() cannot be evaluated
at parse time, as they require conversion data. As such, they need to
preserve and serialize the calc().
To support this (and prepare for upcoming changes to nested colors)
CSSUnresolvedAbsoluteColor has been repurposed as a generic type that
mirrors CSSUnresolvedRelativeColor, and the old functionality moved
to a new CSSUnresolvedAbsoluteResolvedColor. The parser now creates
CSSUnresolvedAbsoluteColor if the calc() cannot be eagerly evaluated,
otherwise, using CSSUnresolvedAbsoluteResolvedColor as it used to.
Additionally, CSSToLengthConversionData is now needed when resolving
CSSUnresolvedColors to StyleColor. Instead of adding yet another
parameter to `createStyleColor`, the parameters are now packaged in
a new CSSUnresolvedStyleColorResolutionState struct (and to match,
CSSUnresolvedColorResolutionContext has been renamed to use the State
suffix).
With CSSToLengthConversionData now available, it is also used for
resolving the percentages in `color-mix()` colors.
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-color-function-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-color-function.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-color-mix-function-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-color-mix-function.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-hsl-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-hsl.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-hwb-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-hwb.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-lab-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-lab.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-rgb-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-computed-rgb.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-color-function-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-color-function.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-color-mix-function-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-color-mix-function.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-hsl-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-hsl.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-hwb-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-hwb.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-lab-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-lab.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-rgb-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-color/parsing/color-valid-rgb.html:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/css/calc/CSSCalcTree+Copy.cpp: Copied from Source/WebCore/platform/calc/CalculationTree+Copy.cpp.
* Source/WebCore/css/calc/CSSCalcTree+Copy.h: Copied from Source/WebCore/css/calc/CSSCalcTree+Serialization.h.
* Source/WebCore/css/calc/CSSCalcTree+Parser.cpp:
(WebCore::CSSCalc::parseAndSimplify):
* Source/WebCore/css/calc/CSSCalcTree+Serialization.cpp:
(WebCore::CSSCalc::serializationForCSS):
(WebCore::CSSCalc::serializeForCSS): Deleted.
* Source/WebCore/css/calc/CSSCalcTree+Serialization.h:
* Source/WebCore/css/calc/CSSCalcTree.cpp:
(WebCore::CSSCalc::operator<<):
* Source/WebCore/css/calc/CSSCalcValue.cpp:
(WebCore::CSSCalcValue::copySimplified const):
(WebCore::CSSCalcValue::requiresConversionData const):
(WebCore::CSSCalcValue::customCSSText const):
(WebCore::CSSCalcValue::dump const):
* Source/WebCore/css/calc/CSSCalcValue.h:
* Source/WebCore/css/color/CSSAbsoluteColorResolver.h:
(WebCore::requiresConversionData):
(WebCore::resolve):
(WebCore::resolveNoConversionDataRequired):
* Source/WebCore/css/color/CSSAbsoluteColorSerialization.h: Copied from Source/WebCore/css/color/CSSUnresolvedColorLayers.h.
(WebCore::serializationForCSSAbsoluteColor):
* Source/WebCore/css/color/CSSColorConversion+ToTypedColor.h:
* Source/WebCore/css/color/CSSColorMixSerialization.cpp:
(WebCore::is50Percent):
(WebCore::sumTo100Percent):
(WebCore::serializeColorMixColor):
(WebCore::serializeColorMix100MinusPercentage):
(WebCore::percentageDoubleValue): Deleted.
* Source/WebCore/css/color/CSSColorMixSerialization.h:
(WebCore::serializationForCSSColorMix):
* Source/WebCore/css/color/CSSRelativeColorResolver.h:
(WebCore::requiresConversionData):
(WebCore::resolve):
(WebCore::resolveNoConversionDataRequired):
* Source/WebCore/css/color/CSSUnresolvedAbsoluteColor.h:
(WebCore::serializationForCSS):
(WebCore::createStyleColor):
(WebCore::createColor):
(WebCore::containsColorSchemeDependentColor):
(WebCore::containsCurrentColor):
* Source/WebCore/css/color/CSSUnresolvedAbsoluteResolvedColor.cpp: Renamed from Source/WebCore/css/color/CSSUnresolvedAbsoluteColor.cpp.
* Source/WebCore/css/color/CSSUnresolvedAbsoluteResolvedColor.h: Copied from Source/WebCore/css/color/CSSUnresolvedAbsoluteColor.h.
* Source/WebCore/css/color/CSSUnresolvedColor.cpp:
* Source/WebCore/css/color/CSSUnresolvedColor.h:
* Source/WebCore/css/color/CSSUnresolvedColorHex.h:
* Source/WebCore/css/color/CSSUnresolvedColorKeyword.cpp:
* Source/WebCore/css/color/CSSUnresolvedColorKeyword.h:
* Source/WebCore/css/color/CSSUnresolvedColorLayers.cpp:
* Source/WebCore/css/color/CSSUnresolvedColorLayers.h:
* Source/WebCore/css/color/CSSUnresolvedColorMix.cpp:
* Source/WebCore/css/color/CSSUnresolvedColorMix.h:
* Source/WebCore/css/color/CSSUnresolvedColorResolutionState.cpp: Renamed from Source/WebCore/css/color/CSSUnresolvedColorResolutionContext.cpp.
* Source/WebCore/css/color/CSSUnresolvedColorResolutionState.h: Renamed from Source/WebCore/css/color/CSSUnresolvedColorResolutionContext.h.
* Source/WebCore/css/color/CSSUnresolvedLightDark.cpp:
* Source/WebCore/css/color/CSSUnresolvedLightDark.h:
* Source/WebCore/css/color/CSSUnresolvedRelativeColor.h:
* Source/WebCore/css/color/CSSUnresolvedStyleColorResolutionState.h: Copied from Source/WebCore/style/ColorFromPrimitiveValue.h.
* Source/WebCore/css/color/StyleColor.cpp:
* Source/WebCore/css/color/StyleColor.h:
* Source/WebCore/css/color/StyleColorLayers.cpp:
* Source/WebCore/css/color/StyleColorLayers.h:
* Source/WebCore/css/color/StyleColorMix.cpp:
* Source/WebCore/css/color/StyleColorMix.h:
* Source/WebCore/css/color/StyleRelativeColor.h:
* Source/WebCore/css/parser/CSSPropertyParserConsumer+Color.cpp:
* Source/WebCore/css/parser/CSSPropertyParserConsumer+Color.h:
* Source/WebCore/css/parser/CSSPropertyParserConsumer+RawResolver.cpp:
* Source/WebCore/css/parser/CSSPropertyParserConsumer+UnevaluatedCalc.cpp:
* Source/WebCore/css/parser/CSSPropertyParserConsumer+UnevaluatedCalc.h:
* Source/WebCore/html/canvas/CanvasStyle.cpp:
* Source/WebCore/platform/calc/CalculationTree+Copy.cpp:
* Source/WebCore/style/ColorFromPrimitiveValue.cpp:
* Source/WebCore/style/ColorFromPrimitiveValue.h:
* Source/WebCore/style/FilterOperationsBuilder.cpp:
* Source/WebCore/style/StyleBuilderState.cpp:
Canonical link: https://commits.webkit.org/282670@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list