[webkit-changes] [WebKit/WebKit] b59ab1: [Part 1] All numeric CSSPrimitiveValue resolvers n...
Commit Queue
noreply at github.com
Thu Aug 29 11:12:10 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b59ab1a6d619275fa32c3ee570f7b4cf0d97cd3d
https://github.com/WebKit/WebKit/commit/b59ab1a6d619275fa32c3ee570f7b4cf0d97cd3d
Author: Sam Weinig <sam at webkit.org>
Date: 2024-08-29 (Thu, 29 Aug 2024)
Changed paths:
M LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-delay-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-delay-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-duration-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-duration-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-iteration-count-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-iteration-count-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-computed.sub.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-feature-settings-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-feature-settings-computed.html
A LayoutTests/imported/w3c/web-platform-tests/css/css-images/animation/image-slice-interpolation-math-functions-tentative-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed.html
A LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-increment-computed-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-increment-computed.html
A LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-reset-computed-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-reset-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-set-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-set-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/tab-size-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/tab-size-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/parsing/zoom-computed-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/parsing/zoom-computed.html
M LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation-math-functions-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/ray-angle-interpolation-math-functions-expected.txt
M Source/WebCore/animation/ViewTimeline.cpp
M Source/WebCore/css/CSSBasicShapes.cpp
M Source/WebCore/css/CSSCounterStyleDescriptors.cpp
M Source/WebCore/css/CSSCrossfadeValue.cpp
M Source/WebCore/css/CSSFontFace.cpp
M Source/WebCore/css/CSSFontFeatureValue.cpp
M Source/WebCore/css/CSSFontFeatureValue.h
M Source/WebCore/css/CSSGradientValue.cpp
M Source/WebCore/css/CSSImageSetValue.cpp
M Source/WebCore/css/CSSOffsetRotateValue.cpp
M Source/WebCore/css/CSSPrimitiveValue.cpp
M Source/WebCore/css/CSSPrimitiveValue.h
M Source/WebCore/css/CSSPrimitiveValueMappings.h
M Source/WebCore/css/CSSProperties.json
M Source/WebCore/css/CSSShapeSegmentValue.cpp
M Source/WebCore/css/CSSToStyleMap.cpp
M Source/WebCore/css/CSSToStyleMap.h
M Source/WebCore/css/CSSValue.h
M Source/WebCore/css/ComputedStyleExtractor.cpp
M Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp
M Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp
M Source/WebCore/css/ShorthandSerializer.cpp
M Source/WebCore/css/StyleProperties.cpp
M Source/WebCore/css/TransformFunctions.cpp
M Source/WebCore/css/TransformFunctions.h
M Source/WebCore/css/calc/CSSCalcTree.h
M Source/WebCore/css/calc/CSSCalcValue.cpp
M Source/WebCore/css/calc/CSSCalcValue.h
M Source/WebCore/css/parser/CSSParserImpl.cpp
M Source/WebCore/css/parser/CSSPropertyParser.cpp
M Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.cpp
M Source/WebCore/css/parser/CSSPropertyParserConsumer+Image.cpp
M Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp
M Source/WebCore/css/process-css-properties.py
M Source/WebCore/css/query/GenericMediaQueryEvaluator.cpp
M Source/WebCore/css/query/GenericMediaQueryParser.cpp
M Source/WebCore/css/typedom/CSSStyleValueFactory.cpp
M Source/WebCore/editing/ApplyStyleCommand.cpp
M Source/WebCore/editing/EditingStyle.cpp
M Source/WebCore/editing/cocoa/HTMLConverter.mm
M Source/WebCore/html/shadow/TextControlInnerElements.cpp
M Source/WebCore/page/IntersectionObserver.cpp
M Source/WebCore/rendering/ios/RenderThemeIOS.mm
M Source/WebCore/rendering/style/RenderStyleInlines.h
M Source/WebCore/style/AnchorPositionEvaluator.cpp
M Source/WebCore/style/FilterOperationsBuilder.cpp
M Source/WebCore/style/StyleBuilder.cpp
M Source/WebCore/style/StyleBuilderConverter.h
M Source/WebCore/style/StyleBuilderCustom.h
M Source/WebCore/style/StyleBuilderState.cpp
M Source/WebCore/svg/SVGLengthValue.cpp
Log Message:
-----------
[Part 1] All numeric CSSPrimitiveValue resolvers need to take CSSToLengthConversionData
https://bugs.webkit.org/show_bug.cgi?id=278753
Reviewed by Darin Adler.
A quirk of `calc()` that the engine does not currently account for is that
any numeric CSS value (<number>, <percentage>, <angle>, etc.) can rely on
relative length computations via calc(). For example animation-delay, which
is specified as taking <time> should support the following:
`animation-delay: calc(10s + (sign(2cqw - 10px) * 5s));`
This can evaluate to either `15s`, if the sign() expression finds a positive
value, or `5s` if it does not.
The ramification of this is that all resolution of CSSPrimitiveValues to a
number require passing in CSSToLengthConversionData, not just when it is
a <length> value.
Making that change everywhere is going to take a few passes. This first change
rearranges CSSPrimitiveValue with a slew of numeric type specific resolver
functions, bundled together in sets with:
- a normal one, taking a CSSToLengthConversionData
- one with the suffix `NoConversionDataRequired`, which should only be
used when the caller has determined ahead of time it won't be needed,
such as when `calc()` has already been fully ruled out.
- one with the suffix `Deprecated`, which should NOT be used, and is
only around during the transition.
To make things a bit more clear, instead of passing in a CSSUnitType to
the resolver functions, type specific functions are provided. The old
mechanism was too general, with no callers ever wanting anything but
values of the same category and for the most part, in the canonical unit.
Now, instead of calling:
`primitiveValue->floatValue(CSSUnitType::CSS_PERCENTAGE)`
users now call:
`primitiveValue->resolveAsPercentage<float>(conversionData)`
Most callers were converted to their `Deprecated` equivalent, but where
it was trivially to pass in CSSToLengthConversionData, the real version
has been used.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-delay-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-delay-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-duration-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-duration-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-iteration-count-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-iteration-count-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-computed.sub.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-feature-settings-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-feature-settings-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-images/animation/image-slice-interpolation-math-functions-tentative-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-inline/parsing/line-height-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-increment-computed-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-increment-computed.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-reset-computed-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-reset-computed.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-set-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-lists/parsing/counter-set-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/tab-size-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-text/parsing/tab-size-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/parsing/zoom-computed-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-viewport/zoom/parsing/zoom-computed.html:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation-math-functions-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/ray-angle-interpolation-math-functions-expected.txt:
- Adds / updates tests to include cases where relative lengths are used
in non-<length> values.
* Source/WebCore/animation/ViewTimeline.cpp:
* Source/WebCore/css/CSSBasicShapes.cpp:
* Source/WebCore/css/CSSCounterStyleDescriptors.cpp:
* Source/WebCore/css/CSSCrossfadeValue.cpp:
* Source/WebCore/css/CSSFontFace.cpp:
* Source/WebCore/css/CSSFontFeatureValue.cpp:
* Source/WebCore/css/CSSFontFeatureValue.h:
* Source/WebCore/css/CSSGradientValue.cpp:
* Source/WebCore/css/CSSImageSetValue.cpp:
* Source/WebCore/css/CSSOffsetRotateValue.cpp:
* Source/WebCore/css/CSSPrimitiveValue.cpp:
* Source/WebCore/css/CSSPrimitiveValue.h:
* Source/WebCore/css/CSSPrimitiveValueMappings.h:
* Source/WebCore/css/CSSProperties.json:
* Source/WebCore/css/CSSShapeSegmentValue.cpp:
* Source/WebCore/css/CSSToStyleMap.cpp:
* Source/WebCore/css/CSSToStyleMap.h:
* Source/WebCore/css/CSSValue.h:
* Source/WebCore/css/ComputedStyleExtractor.cpp:
* Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp:
* Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp:
* Source/WebCore/css/ShorthandSerializer.cpp:
* Source/WebCore/css/StyleProperties.cpp:
* Source/WebCore/css/TransformFunctions.cpp:
* Source/WebCore/css/TransformFunctions.h:
* Source/WebCore/css/calc/CSSCalcTree.h:
* Source/WebCore/css/calc/CSSCalcValue.cpp:
* Source/WebCore/css/calc/CSSCalcValue.h:
* Source/WebCore/css/parser/CSSParserImpl.cpp:
* Source/WebCore/css/parser/CSSPropertyParser.cpp:
* Source/WebCore/css/parser/CSSPropertyParserConsumer+Font.cpp:
* Source/WebCore/css/parser/CSSPropertyParserConsumer+Image.cpp:
* Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:
* Source/WebCore/css/query/GenericMediaQueryEvaluator.cpp:
* Source/WebCore/css/query/GenericMediaQueryParser.cpp:
* Source/WebCore/css/typedom/CSSStyleValueFactory.cpp:
* Source/WebCore/editing/ApplyStyleCommand.cpp:
* Source/WebCore/editing/EditingStyle.cpp:
* Source/WebCore/editing/cocoa/HTMLConverter.mm:
* Source/WebCore/html/shadow/TextControlInnerElements.cpp:
* Source/WebCore/page/IntersectionObserver.cpp:
* Source/WebCore/rendering/ios/RenderThemeIOS.mm:
* Source/WebCore/rendering/style/RenderStyleInlines.h:
* Source/WebCore/style/AnchorPositionEvaluator.cpp:
* Source/WebCore/style/FilterOperationsBuilder.cpp:
* Source/WebCore/style/StyleBuilder.cpp:
* Source/WebCore/style/StyleBuilderConverter.h:
* Source/WebCore/style/StyleBuilderCustom.h:
* Source/WebCore/style/StyleBuilderState.cpp:
* Source/WebCore/svg/SVGLengthValue.cpp:
- Update to call new primitive value functions.
Canonical link: https://commits.webkit.org/282914@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