Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 47ace808375379d30d233bda3a5a7158d3babd88
https://github.com/WebKit/WebKit/commit/47ace808375379d30d233bda3a5a7158d3babd88
Author: Antoine Quint <[email protected]>
Date: 2023-02-16 (Thu, 16 Feb 2023)
Changed paths:
M LayoutTests/fast/css/transform-inline-style-expected.txt
M LayoutTests/fast/css/transform-inline-style-remove-expected.txt
M Source/WebCore/css/parser/CSSPropertyParser.cpp
M Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp
Log Message:
-----------
[css-transitions] the `all` value to `transition-property` should parse as a
keyword and not a CSS property
https://bugs.webkit.org/show_bug.cgi?id=252393
Reviewed by Darin Adler.
The `all` value for `transition-property` is a special keyword and not the CSS
shorthand property of
the same name [1]. This is important because while the `all` keyword "indicates
that all properties
are to be transitioned", the `all` shorthand property "resets all CSS
properties" but "does not
reset custom properties". This is an important distinction working towards bug
252312 where we'll
allow registered custom properties to be transitioned when `all` is used.
The issue is that when we would parse `<single-transition-property>` we would
fail to check for
CSSValueAll and match the spec definition `all | <custom-ident>` [2]. While
this seems to be an
important mistake, this turned out not to be so bad because
Styleable::updateCSSTransitions() expands
any shorthand property and thus CSSPropertyAll would expand to most every CSS
property. Indeed, this
issue would only become apparent in the case where a custom property was
expected to transition.
We now make CSSPropertyParserHelpers::consumeSingleTransitionPropertyIdent()
account for CSSValueAll
which will yield the expected Animation::TransitionMode::All for the Animation
object in RenderStyle.
This was a good opportunity to clean up and improve some of the longhand code
for the `transition`
property where we now get rid of the initialCSSValueForAnimationLonghand()
static method and instead
set CSSPrimitiveValue::implicitInitialValue() as the value for any implicit
value in the shorthand.
This means that now isInitialValueForLonghand() will correctly recognize those
values as implicit and
`all`, whether it was provided explicitly or implicitly, will no longer
serialize for the `transition`
shorthand, in the spirit of the "serialize a CSS value" procedure [3] stating
that "if component values
can be omitted or replaced with a shorter representation without changing the
meaning of the value,
omit/replace them."
As such we rebaseline a couple of tests which needlessly expected `all` to be
serialized.
[0] https://drafts.csswg.org/css-transitions/#valdef-transition-property-all
[1] https://w3c.github.io/csswg-drafts/css-cascade/#all-shorthand
[2] https://drafts.csswg.org/css-transitions/#single-transition-property
[3] https://www.w3.org/TR/cssom-1/#serialize-a-css-value
* LayoutTests/fast/css/transform-inline-style-expected.txt:
* LayoutTests/fast/css/transform-inline-style-remove-expected.txt:
* Source/WebCore/css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::consumeAnimationShorthand):
(WebCore::initialCSSValueForAnimationLonghand): Deleted.
* Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::consumeSingleTransitionPropertyIdent):
Canonical link: https://commits.webkit.org/260383@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes