Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d7aed1e4ddffee252473469567148feb4fa1fac4
https://github.com/WebKit/WebKit/commit/d7aed1e4ddffee252473469567148feb4fa1fac4
Author: Sam Weinig <[email protected]>
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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes