Title: [275160] trunk
Revision
275160
Author
[email protected]
Date
2021-03-29 09:30:09 -0700 (Mon, 29 Mar 2021)

Log Message

Add support for animating the vertical-align CSS property
https://bugs.webkit.org/show_bug.cgi?id=223853

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add 161 PASS results in the WPT suite now that we support animating vertical-align.

* web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt:
* web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt:
* web-platform-tests/css/css-transitions/properties-value-001-expected.txt:
* web-platform-tests/css/css-transitions/properties-value-implicit-001-expected.txt:
* web-platform-tests/css/css-transitions/properties-value-inherit-001-expected.txt:
* web-platform-tests/css/css-transitions/properties-value-inherit-002-expected.txt:

Source/WebCore:

Adding support for animating vertical-align revealed a couple of long-standing issues with
regards to our support for this property.

First off, we didn't honor the "inherit" value since it required a custom builder method
to deal with both RenderStyle::verticalAlign() (the type) and RenderStyle::verticalAlignLength()
(the value).

Then, we would hit an assertion when obtaining the computed style for this property and a
calculated value since we didn't pass the RenderStyle to createValue().

We now correctly interpolate this property per the dedicated WPT test, the only issues remaining
being about how our calc serialization (https://bugs.webkit.org/show_bug.cgi?id=223875).

* animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* css/CSSProperties.json:
* style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyInheritVerticalAlign):

LayoutTests:

* TestExpectations: Unskip tests related to vertical-align interpolation since they are
no longer crashing.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (275159 => 275160)


--- trunk/LayoutTests/ChangeLog	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/ChangeLog	2021-03-29 16:30:09 UTC (rev 275160)
@@ -1,3 +1,13 @@
+2021-03-28  Antoine Quint  <[email protected]>
+
+        Add support for animating the vertical-align CSS property
+        https://bugs.webkit.org/show_bug.cgi?id=223853
+
+        Reviewed by Antti Koivisto.
+
+        * TestExpectations: Unskip tests related to vertical-align interpolation since they are
+        no longer crashing.
+
 2021-03-28  Diego Pino Garcia  <[email protected]>
 
         [GTK] Unreviewed test gardening. Add several A11y test failures to TestExpectations.

Modified: trunk/LayoutTests/TestExpectations (275159 => 275160)


--- trunk/LayoutTests/TestExpectations	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/TestExpectations	2021-03-29 16:30:09 UTC (rev 275160)
@@ -3618,8 +3618,6 @@
 
 webkit.org/b/207260 imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html [ ImageOnlyFailure ]
 
-webkit.org/b/207261 [ Debug ] imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html [ Skip ]
-webkit.org/b/207261 [ Debug ] imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html [ Skip ]
 webkit.org/b/207261 [ Debug ] imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition.html [ Skip ]
 webkit.org/b/207261 [ Debug ] imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-composition.html [ Skip ]
 

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (275159 => 275160)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2021-03-29 16:30:09 UTC (rev 275160)
@@ -1,3 +1,19 @@
+2021-03-28  Antoine Quint  <[email protected]>
+
+        Add support for animating the vertical-align CSS property
+        https://bugs.webkit.org/show_bug.cgi?id=223853
+
+        Reviewed by Antti Koivisto.
+
+        Add 161 PASS results in the WPT suite now that we support animating vertical-align.
+
+        * web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt:
+        * web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt:
+        * web-platform-tests/css/css-transitions/properties-value-001-expected.txt:
+        * web-platform-tests/css/css-transitions/properties-value-implicit-001-expected.txt:
+        * web-platform-tests/css/css-transitions/properties-value-inherit-001-expected.txt:
+        * web-platform-tests/css/css-transitions/properties-value-inherit-002-expected.txt:
+
 2021-03-26  Tim Nguyen  <[email protected]>
 
         Add interpolation for object-position CSS property

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt (275159 => 275160)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt	2021-03-29 16:30:09 UTC (rev 275160)
@@ -1,22 +1,22 @@
 
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (-0.3) should be [120px] assert_equals: expected "120px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (0) should be [150px] assert_equals: expected "150px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (0.5) should be [200px] assert_equals: expected "200px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (1) should be [250px] assert_equals: expected "250px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (1.5) should be [300px] assert_equals: expected "300px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (-0.5) should be [114px] assert_equals: expected "114px " but got "100px "
-FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "100px "
-FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "100px "
-FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "100px "
-FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "100px "
-FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "" but got "10 % "
-FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "" but got "10 % "
-FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "" but got "10 % "
-FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (1) should be [30%] assert_equals: expected "30 % " but got "10 % "
-FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (1.5) should be [calc(-50px + 40%)] assert_equals: expected "" but got "10 % "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (-0.3) should be [135px] assert_equals: expected "135px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (0) should be [150px] assert_equals: expected "150px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (0.5) should be [175px] assert_equals: expected "175px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (1) should be [200px] assert_equals: expected "200px " but got "50px "
-FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (1.5) should be [225px] assert_equals: expected "225px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (-0.3) should be [120px] assert_equals: expected "120px " but got "70px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (0) should be [150px] assert_equals: expected "150px " but got "100px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (0.5) should be [200px] assert_equals: expected "200px " but got "150px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (1) should be [250px] assert_equals: expected "250px " but got "200px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (1.5) should be [300px] assert_equals: expected "300px " but got "250px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (-0.5) should be [114px] assert_equals: expected "114px " but got "14px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "calc ( 4 % + 130px ) " but got "calc ( ( 100px * 1.3 ) + ( 20 % * - 0.3 ) ) "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "calc ( 10 % + 100px ) " but got "100px "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "calc ( 20 % + 50px ) " but got "calc ( ( 100px * 0.5 ) + ( 20 % * 0.5 ) ) "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (1) should be [30%] assert_equals: expected "30 % " but got "20 % "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (1.5) should be [calc(-50px + 40%)] assert_equals: expected "calc ( 40 % - 50px ) " but got "calc ( ( 100px * - 0.5 ) + ( 20 % * 1.5 ) ) "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (-0.3) should be [135px] assert_equals: expected "135px " but got "70px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (0) should be [150px] assert_equals: expected "150px " but got "100px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (0.5) should be [175px] assert_equals: expected "175px " but got "150px "
+PASS Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (1) should be [200px]
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (1.5) should be [225px] assert_equals: expected "225px " but got "250px "
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt (275159 => 275160)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt	2021-03-29 16:30:09 UTC (rev 275160)
@@ -1,28 +1,28 @@
 
-FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px] assert_equals: expected "- 5px " but got "40px "
-FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (0) should be [10px] assert_equals: expected "10px " but got "40px "
-FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (0.3) should be [19px] assert_equals: expected "19px " but got "40px "
-FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (0.6) should be [28px] assert_equals: expected "28px " but got "40px "
+PASS CSS Transitions: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px]
+PASS CSS Transitions: property <vertical-align> from neutral to [40px] at (0) should be [10px]
+PASS CSS Transitions: property <vertical-align> from neutral to [40px] at (0.3) should be [19px]
+PASS CSS Transitions: property <vertical-align> from neutral to [40px] at (0.6) should be [28px]
 PASS CSS Transitions: property <vertical-align> from neutral to [40px] at (1) should be [40px]
-FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (1.5) should be [55px] assert_equals: expected "55px " but got "40px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px] assert_equals: expected "- 5px " but got "40px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0) should be [10px] assert_equals: expected "10px " but got "40px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0.3) should be [19px] assert_equals: expected "19px " but got "40px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0.6) should be [28px] assert_equals: expected "28px " but got "40px "
+PASS CSS Transitions: property <vertical-align> from neutral to [40px] at (1.5) should be [55px]
+PASS CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px]
+PASS CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0) should be [10px]
+PASS CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0.3) should be [19px]
+PASS CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0.6) should be [28px]
 PASS CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (1) should be [40px]
-FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (1.5) should be [55px] assert_equals: expected "55px " but got "40px "
-FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px] assert_equals: expected "- 5px " but got "10px "
+PASS CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (1.5) should be [55px]
+PASS CSS Animations: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px]
 PASS CSS Animations: property <vertical-align> from neutral to [40px] at (0) should be [10px]
-FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (0.3) should be [19px] assert_equals: expected "19px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (0.6) should be [28px] assert_equals: expected "28px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (1.5) should be [55px] assert_equals: expected "55px " but got "10px "
-FAIL Web Animations: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px] assert_equals: expected "- 5px " but got "10px "
+PASS CSS Animations: property <vertical-align> from neutral to [40px] at (0.3) should be [19px]
+PASS CSS Animations: property <vertical-align> from neutral to [40px] at (0.6) should be [28px]
+PASS CSS Animations: property <vertical-align> from neutral to [40px] at (1) should be [40px]
+PASS CSS Animations: property <vertical-align> from neutral to [40px] at (1.5) should be [55px]
+PASS Web Animations: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px]
 PASS Web Animations: property <vertical-align> from neutral to [40px] at (0) should be [10px]
-FAIL Web Animations: property <vertical-align> from neutral to [40px] at (0.3) should be [19px] assert_equals: expected "19px " but got "10px "
-FAIL Web Animations: property <vertical-align> from neutral to [40px] at (0.6) should be [28px] assert_equals: expected "28px " but got "10px "
-FAIL Web Animations: property <vertical-align> from neutral to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from neutral to [40px] at (1.5) should be [55px] assert_equals: expected "55px " but got "10px "
+PASS Web Animations: property <vertical-align> from neutral to [40px] at (0.3) should be [19px]
+PASS Web Animations: property <vertical-align> from neutral to [40px] at (0.6) should be [28px]
+PASS Web Animations: property <vertical-align> from neutral to [40px] at (1) should be [40px]
+PASS Web Animations: property <vertical-align> from neutral to [40px] at (1.5) should be [55px]
 PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (-0.3) should be [40px]
 PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (0) should be [40px]
 PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (0.3) should be [40px]
@@ -37,43 +37,43 @@
 PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px]
 PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (1) should be [40px]
 PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px]
-FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (-0.3) should be [initial] assert_equals: expected "baseline " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (0) should be [initial] assert_equals: expected "baseline " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (0.3) should be [initial] assert_equals: expected "baseline " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (0.5) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (-0.3) should be [initial] assert_equals: expected "baseline " but got "10px "
-FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (0) should be [initial] assert_equals: expected "baseline " but got "10px "
-FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (0.3) should be [initial] assert_equals: expected "baseline " but got "10px "
-FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (0.5) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px] assert_equals: expected "130px " but got "40px "
-FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0) should be [100px] assert_equals: expected "100px " but got "40px "
-FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px] assert_equals: expected "82px " but got "40px "
-FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px] assert_equals: expected "64px " but got "40px "
+PASS CSS Animations: property <vertical-align> from [initial] to [40px] at (-0.3) should be [initial]
+PASS CSS Animations: property <vertical-align> from [initial] to [40px] at (0) should be [initial]
+PASS CSS Animations: property <vertical-align> from [initial] to [40px] at (0.3) should be [initial]
+PASS CSS Animations: property <vertical-align> from [initial] to [40px] at (0.5) should be [40px]
+PASS CSS Animations: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px]
+PASS CSS Animations: property <vertical-align> from [initial] to [40px] at (1) should be [40px]
+PASS CSS Animations: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px]
+PASS Web Animations: property <vertical-align> from [initial] to [40px] at (-0.3) should be [initial]
+PASS Web Animations: property <vertical-align> from [initial] to [40px] at (0) should be [initial]
+PASS Web Animations: property <vertical-align> from [initial] to [40px] at (0.3) should be [initial]
+PASS Web Animations: property <vertical-align> from [initial] to [40px] at (0.5) should be [40px]
+PASS Web Animations: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px]
+PASS Web Animations: property <vertical-align> from [initial] to [40px] at (1) should be [40px]
+PASS Web Animations: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px]
+PASS CSS Transitions: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px]
+PASS CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0) should be [100px]
+PASS CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px]
+PASS CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px]
 PASS CSS Transitions: property <vertical-align> from [inherit] to [40px] at (1) should be [40px]
-FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px] assert_equals: expected "10px " but got "40px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px] assert_equals: expected "130px " but got "40px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0) should be [100px] assert_equals: expected "100px " but got "40px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px] assert_equals: expected "82px " but got "40px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px] assert_equals: expected "64px " but got "40px "
+PASS CSS Transitions: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px]
+PASS CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px]
+PASS CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0) should be [100px]
+PASS CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px]
+PASS CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px]
 PASS CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (1) should be [40px]
-FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px] assert_equals: expected "10px " but got "40px "
-FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px] assert_equals: expected "130px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (0) should be [100px] assert_equals: expected "100px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px] assert_equals: expected "82px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px] assert_equals: expected "64px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+PASS CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px]
+PASS CSS Animations: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px]
+PASS CSS Animations: property <vertical-align> from [inherit] to [40px] at (0) should be [100px]
+PASS CSS Animations: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px]
+PASS CSS Animations: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px]
+PASS CSS Animations: property <vertical-align> from [inherit] to [40px] at (1) should be [40px]
 PASS CSS Animations: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px]
-FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px] assert_equals: expected "130px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (0) should be [100px] assert_equals: expected "100px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px] assert_equals: expected "82px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px] assert_equals: expected "64px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+PASS Web Animations: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px]
+PASS Web Animations: property <vertical-align> from [inherit] to [40px] at (0) should be [100px]
+PASS Web Animations: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px]
+PASS Web Animations: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px]
+PASS Web Animations: property <vertical-align> from [inherit] to [40px] at (1) should be [40px]
 PASS Web Animations: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px]
 PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (-0.3) should be [40px]
 PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (0) should be [40px]
@@ -89,64 +89,64 @@
 PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px]
 PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (1) should be [40px]
 PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px]
-FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (-0.3) should be [unset] assert_equals: expected "baseline " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (0) should be [unset] assert_equals: expected "baseline " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (0.3) should be [unset] assert_equals: expected "baseline " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (0.5) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (-0.3) should be [unset] assert_equals: expected "baseline " but got "10px "
-FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (0) should be [unset] assert_equals: expected "baseline " but got "10px "
-FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (0.3) should be [unset] assert_equals: expected "baseline " but got "10px "
-FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (0.5) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px] assert_equals: expected "40px " but got "10px "
-FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px] assert_equals: expected "- 50px " but got "100px "
-FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (0) should be [0px] assert_equals: expected "0px " but got "100px "
-FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px] assert_equals: expected "30px " but got "100px "
-FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px] assert_equals: expected "60px " but got "100px "
+PASS CSS Animations: property <vertical-align> from [unset] to [40px] at (-0.3) should be [unset]
+PASS CSS Animations: property <vertical-align> from [unset] to [40px] at (0) should be [unset]
+PASS CSS Animations: property <vertical-align> from [unset] to [40px] at (0.3) should be [unset]
+PASS CSS Animations: property <vertical-align> from [unset] to [40px] at (0.5) should be [40px]
+PASS CSS Animations: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px]
+PASS CSS Animations: property <vertical-align> from [unset] to [40px] at (1) should be [40px]
+PASS CSS Animations: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px]
+PASS Web Animations: property <vertical-align> from [unset] to [40px] at (-0.3) should be [unset]
+PASS Web Animations: property <vertical-align> from [unset] to [40px] at (0) should be [unset]
+PASS Web Animations: property <vertical-align> from [unset] to [40px] at (0.3) should be [unset]
+PASS Web Animations: property <vertical-align> from [unset] to [40px] at (0.5) should be [40px]
+PASS Web Animations: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px]
+PASS Web Animations: property <vertical-align> from [unset] to [40px] at (1) should be [40px]
+PASS Web Animations: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px]
+PASS CSS Transitions: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px]
+PASS CSS Transitions: property <vertical-align> from [0px] to [100px] at (0) should be [0px]
+PASS CSS Transitions: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px]
+PASS CSS Transitions: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Transitions: property <vertical-align> from [0px] to [100px] at (1) should be [100px]
-FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px] assert_equals: expected "150px " but got "100px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px] assert_equals: expected "- 50px " but got "100px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0) should be [0px] assert_equals: expected "0px " but got "100px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px] assert_equals: expected "30px " but got "100px "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px] assert_equals: expected "60px " but got "100px "
+PASS CSS Transitions: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px]
+PASS CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px]
+PASS CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0) should be [0px]
+PASS CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px]
+PASS CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (1) should be [100px]
-FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px] assert_equals: expected "150px " but got "100px "
-FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px] assert_equals: expected "- 50px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (0) should be [0px] assert_equals: expected "0px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px] assert_equals: expected "30px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px] assert_equals: expected "60px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (1) should be [100px] assert_equals: expected "100px " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px] assert_equals: expected "150px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px] assert_equals: expected "- 50px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (0) should be [0px] assert_equals: expected "0px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px] assert_equals: expected "30px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px] assert_equals: expected "60px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (1) should be [100px] assert_equals: expected "100px " but got "10px "
-FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px] assert_equals: expected "150px " but got "10px "
-FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "" but got "40 % "
-FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "" but got "10px "
-FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "" but got "10px "
-FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "" but got "10px "
-FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "" but got "10px "
-FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "" but got "10px "
-FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "" but got "10px "
-FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "" but got "10px "
-FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "" but got "10px "
-FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "" but got "10px "
-FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "" but got "10px "
+PASS CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px]
+PASS CSS Animations: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px]
+PASS CSS Animations: property <vertical-align> from [0px] to [100px] at (0) should be [0px]
+PASS CSS Animations: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px]
+PASS CSS Animations: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px]
+PASS CSS Animations: property <vertical-align> from [0px] to [100px] at (1) should be [100px]
+PASS CSS Animations: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px]
+PASS Web Animations: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px]
+PASS Web Animations: property <vertical-align> from [0px] to [100px] at (0) should be [0px]
+PASS Web Animations: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px]
+PASS Web Animations: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px]
+PASS Web Animations: property <vertical-align> from [0px] to [100px] at (1) should be [100px]
+PASS Web Animations: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px]
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "calc ( - 20 % + 60px ) " but got "calc ( ( 40px * 1.5 ) + ( 40 % * - 0.5 ) ) "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "calc ( 0 % + 40px ) " but got "40px "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "calc ( 12 % + 28px ) " but got "calc ( ( 40px * 0.7 ) + ( 40 % * 0.3 ) ) "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "calc ( 40 % + 0px ) " but got "40 % "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "calc ( 60 % - 20px ) " but got "calc ( ( 40px * - 0.5 ) + ( 40 % * 1.5 ) ) "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "calc ( - 20 % + 60px ) " but got "calc ( ( 40px * 1.5 ) + ( 40 % * - 0.5 ) ) "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "calc ( 0 % + 40px ) " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "calc ( 12 % + 28px ) " but got "calc ( ( 40px * 0.7 ) + ( 40 % * 0.3 ) ) "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "calc ( 40 % + 0px ) " but got "40 % "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "calc ( 60 % - 20px ) " but got "calc ( ( 40px * - 0.5 ) + ( 40 % * 1.5 ) ) "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "calc ( - 20 % + 60px ) " but got "calc ( ( 40px * 1.5 ) + ( 40 % * - 0.5 ) ) "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "calc ( 0 % + 40px ) " but got "40px "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "calc ( 12 % + 28px ) " but got "calc ( ( 40px * 0.7 ) + ( 40 % * 0.3 ) ) "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "calc ( 40 % + 0px ) " but got "40 % "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "calc ( 60 % - 20px ) " but got "calc ( ( 40px * - 0.5 ) + ( 40 % * 1.5 ) ) "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "calc ( - 20 % + 60px ) " but got "calc ( ( 40px * 1.5 ) + ( 40 % * - 0.5 ) ) "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "calc ( 0 % + 40px ) " but got "40px "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "calc ( 12 % + 28px ) " but got "calc ( ( 40px * 0.7 ) + ( 40 % * 0.3 ) ) "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "calc ( 40 % + 0px ) " but got "40 % "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "calc ( 60 % - 20px ) " but got "calc ( ( 40px * - 0.5 ) + ( 40 % * 1.5 ) ) "
 PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (-0.3) should be [40%]
 PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (0) should be [40%]
 PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (0.3) should be [40%]
@@ -161,18 +161,18 @@
 PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (0.6) should be [40%]
 PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (1) should be [40%]
 PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (1.5) should be [40%]
-FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (-0.3) should be [super] assert_equals: expected "super " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (0) should be [super] assert_equals: expected "super " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (0.3) should be [super] assert_equals: expected "super " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (0.5) should be [40%] assert_equals: expected "40 % " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (0.6) should be [40%] assert_equals: expected "40 % " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (1) should be [40%] assert_equals: expected "40 % " but got "10px "
-FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (1.5) should be [40%] assert_equals: expected "40 % " but got "10px "
-FAIL Web Animations: property <vertical-align> from [super] to [40%] at (-0.3) should be [super] assert_equals: expected "super " but got "10px "
-FAIL Web Animations: property <vertical-align> from [super] to [40%] at (0) should be [super] assert_equals: expected "super " but got "10px "
-FAIL Web Animations: property <vertical-align> from [super] to [40%] at (0.3) should be [super] assert_equals: expected "super " but got "10px "
-FAIL Web Animations: property <vertical-align> from [super] to [40%] at (0.5) should be [40%] assert_equals: expected "40 % " but got "10px "
-FAIL Web Animations: property <vertical-align> from [super] to [40%] at (0.6) should be [40%] assert_equals: expected "40 % " but got "10px "
-FAIL Web Animations: property <vertical-align> from [super] to [40%] at (1) should be [40%] assert_equals: expected "40 % " but got "10px "
-FAIL Web Animations: property <vertical-align> from [super] to [40%] at (1.5) should be [40%] assert_equals: expected "40 % " but got "10px "
+PASS CSS Animations: property <vertical-align> from [super] to [40%] at (-0.3) should be [super]
+PASS CSS Animations: property <vertical-align> from [super] to [40%] at (0) should be [super]
+PASS CSS Animations: property <vertical-align> from [super] to [40%] at (0.3) should be [super]
+PASS CSS Animations: property <vertical-align> from [super] to [40%] at (0.5) should be [40%]
+PASS CSS Animations: property <vertical-align> from [super] to [40%] at (0.6) should be [40%]
+PASS CSS Animations: property <vertical-align> from [super] to [40%] at (1) should be [40%]
+PASS CSS Animations: property <vertical-align> from [super] to [40%] at (1.5) should be [40%]
+PASS Web Animations: property <vertical-align> from [super] to [40%] at (-0.3) should be [super]
+PASS Web Animations: property <vertical-align> from [super] to [40%] at (0) should be [super]
+PASS Web Animations: property <vertical-align> from [super] to [40%] at (0.3) should be [super]
+PASS Web Animations: property <vertical-align> from [super] to [40%] at (0.5) should be [40%]
+PASS Web Animations: property <vertical-align> from [super] to [40%] at (0.6) should be [40%]
+PASS Web Animations: property <vertical-align> from [super] to [40%] at (1) should be [40%]
+PASS Web Animations: property <vertical-align> from [super] to [40%] at (1.5) should be [40%]
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-001-expected.txt (275159 => 275160)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-001-expected.txt	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-001-expected.txt	2021-03-29 16:30:09 UTC (rev 275160)
@@ -535,24 +535,24 @@
 PASS outline-width length(in) / events
 PASS clip rectangle(rectangle) / values
 PASS clip rectangle(rectangle) / events
-FAIL vertical-align length(pt) / values assert_not_equals: must not be target value after start got disallowed value "13.333333015441895px"
-FAIL vertical-align length(pt) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(pc) / values assert_not_equals: must not be target value after start got disallowed value "160px"
-FAIL vertical-align length(pc) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(px) / values assert_not_equals: must not be target value after start got disallowed value "10px"
-FAIL vertical-align length(px) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(em) / values assert_not_equals: must not be target value after start got disallowed value "160px"
-FAIL vertical-align length(em) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(ex) / values assert_not_equals: must not be target value after start got disallowed value "71.796875px"
-FAIL vertical-align length(ex) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(mm) / values assert_not_equals: must not be target value after start got disallowed value "37.7952766418457px"
-FAIL vertical-align length(mm) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(cm) / values assert_not_equals: must not be target value after start got disallowed value "377.9527587890625px"
-FAIL vertical-align length(cm) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(in) / values assert_not_equals: must not be target value after start got disallowed value "960px"
-FAIL vertical-align length(in) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align percentage(%) / values assert_not_equals: must not be target value after start got disallowed value "80%"
-FAIL vertical-align percentage(%) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
+PASS vertical-align length(pt) / values
+PASS vertical-align length(pt) / events
+PASS vertical-align length(pc) / values
+PASS vertical-align length(pc) / events
+PASS vertical-align length(px) / values
+PASS vertical-align length(px) / events
+PASS vertical-align length(em) / values
+PASS vertical-align length(em) / events
+PASS vertical-align length(ex) / values
+PASS vertical-align length(ex) / events
+PASS vertical-align length(mm) / values
+PASS vertical-align length(mm) / events
+PASS vertical-align length(cm) / values
+PASS vertical-align length(cm) / events
+PASS vertical-align length(in) / values
+PASS vertical-align length(in) / events
+PASS vertical-align percentage(%) / values
+PASS vertical-align percentage(%) / events
 PASS opacity number[0,1](zero-to-one) / values
 PASS opacity number[0,1](zero-to-one) / events
 PASS visibility visibility(keyword) / values

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-implicit-001-expected.txt (275159 => 275160)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-implicit-001-expected.txt	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-implicit-001-expected.txt	2021-03-29 16:30:09 UTC (rev 275160)
@@ -57,7 +57,7 @@
 PASS outline-offset length-em(em) / events
 PASS outline-width length-em(em) / values
 PASS outline-width length-em(em) / events
-FAIL vertical-align length-em(em) / values assert_not_equals: must not be target value after start got disallowed value "33px"
-FAIL vertical-align length-em(em) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
+PASS vertical-align length-em(em) / values
+PASS vertical-align length-em(em) / events
 Text sample
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-001-expected.txt (275159 => 275160)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-001-expected.txt	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-001-expected.txt	2021-03-29 16:30:09 UTC (rev 275160)
@@ -535,24 +535,24 @@
 PASS outline-width length(in) / events
 PASS clip rectangle(rectangle) / values
 PASS clip rectangle(rectangle) / events
-FAIL vertical-align length(pt) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(pt) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
-FAIL vertical-align length(pc) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(pc) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
-FAIL vertical-align length(px) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(px) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
-FAIL vertical-align length(em) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(em) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
-FAIL vertical-align length(ex) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(ex) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
-FAIL vertical-align length(mm) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(mm) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
-FAIL vertical-align length(cm) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(cm) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
-FAIL vertical-align length(in) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(in) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
-FAIL vertical-align percentage(%) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align percentage(%) / events assert_equals: Expected TransitionEnd events triggered on .container expected "vertical-align:2s" but got ""
+PASS vertical-align length(pt) / values
+PASS vertical-align length(pt) / events
+PASS vertical-align length(pc) / values
+PASS vertical-align length(pc) / events
+PASS vertical-align length(px) / values
+PASS vertical-align length(px) / events
+PASS vertical-align length(em) / values
+PASS vertical-align length(em) / events
+PASS vertical-align length(ex) / values
+PASS vertical-align length(ex) / events
+PASS vertical-align length(mm) / values
+PASS vertical-align length(mm) / events
+PASS vertical-align length(cm) / values
+PASS vertical-align length(cm) / events
+PASS vertical-align length(in) / values
+PASS vertical-align length(in) / events
+PASS vertical-align percentage(%) / values
+PASS vertical-align percentage(%) / events
 PASS opacity number[0,1](zero-to-one) / values
 PASS opacity number[0,1](zero-to-one) / events
 FAIL visibility visibility(keyword) / values assert_equals: must be target value after transitioning on .transition expected (string) "hidden" but got (undefined) undefined

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-002-expected.txt (275159 => 275160)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-002-expected.txt	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-002-expected.txt	2021-03-29 16:30:09 UTC (rev 275160)
@@ -535,24 +535,24 @@
 PASS outline-width length(in) / events
 PASS clip rectangle(rectangle) / values
 PASS clip rectangle(rectangle) / events
-FAIL vertical-align length(pt) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(pt) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(pc) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(pc) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(px) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(px) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(em) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(em) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(ex) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(ex) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(mm) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(mm) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(cm) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(cm) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align length(in) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align length(in) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
-FAIL vertical-align percentage(%) / values assert_not_equals: initial and target values may not match got disallowed value "auto"
-FAIL vertical-align percentage(%) / events assert_equals: Expected TransitionEnd events triggered on .transition expected "vertical-align:2s" but got ""
+PASS vertical-align length(pt) / values
+PASS vertical-align length(pt) / events
+PASS vertical-align length(pc) / values
+PASS vertical-align length(pc) / events
+PASS vertical-align length(px) / values
+PASS vertical-align length(px) / events
+PASS vertical-align length(em) / values
+PASS vertical-align length(em) / events
+PASS vertical-align length(ex) / values
+PASS vertical-align length(ex) / events
+PASS vertical-align length(mm) / values
+PASS vertical-align length(mm) / events
+PASS vertical-align length(cm) / values
+PASS vertical-align length(cm) / events
+PASS vertical-align length(in) / values
+PASS vertical-align length(in) / events
+PASS vertical-align percentage(%) / values
+PASS vertical-align percentage(%) / events
 PASS opacity number[0,1](zero-to-one) / values
 PASS opacity number[0,1](zero-to-one) / events
 PASS visibility visibility(keyword) / values

Modified: trunk/Source/WebCore/ChangeLog (275159 => 275160)


--- trunk/Source/WebCore/ChangeLog	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/Source/WebCore/ChangeLog	2021-03-29 16:30:09 UTC (rev 275160)
@@ -1,3 +1,31 @@
+2021-03-28  Antoine Quint  <[email protected]>
+
+        Add support for animating the vertical-align CSS property
+        https://bugs.webkit.org/show_bug.cgi?id=223853
+
+        Reviewed by Antti Koivisto.
+
+        Adding support for animating vertical-align revealed a couple of long-standing issues with
+        regards to our support for this property.
+
+        First off, we didn't honor the "inherit" value since it required a custom builder method
+        to deal with both RenderStyle::verticalAlign() (the type) and RenderStyle::verticalAlignLength()
+        (the value).
+
+        Then, we would hit an assertion when obtaining the computed style for this property and a
+        calculated value since we didn't pass the RenderStyle to createValue().
+
+        We now correctly interpolate this property per the dedicated WPT test, the only issues remaining
+        being about how our calc serialization (https://bugs.webkit.org/show_bug.cgi?id=223875).
+
+        * animation/CSSPropertyAnimation.cpp:
+        (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
+        * css/CSSProperties.json:
+        * style/StyleBuilderCustom.h:
+        (WebCore::Style::BuilderCustom::applyInheritVerticalAlign):
+
 2021-03-28  Sam Weinig  <[email protected]>
 
         Remove JSCustomXPathNSResolver.h/JSCustomXPathNSResolver.cpp from the Xcode project as they don't exist

Modified: trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp (275159 => 275160)


--- trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp	2021-03-29 16:30:09 UTC (rev 275160)
@@ -720,7 +720,7 @@
     return false;
 }
 
-class LengthPropertyWrapper final : public PropertyWrapperGetter<const Length&> {
+class LengthPropertyWrapper : public PropertyWrapperGetter<const Length&> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     enum class Flags {
@@ -734,18 +734,19 @@
     {
     }
 
-private:
-    bool canInterpolate(const RenderStyle* from, const RenderStyle* to) const final
+protected:
+    bool canInterpolate(const RenderStyle* from, const RenderStyle* to) const override
     {
         return canInterpolateLengths(value(from), value(to), m_flags.contains(Flags::IsLengthPercentage));
     }
 
-    void blend(const CSSPropertyBlendingClient* client, RenderStyle* destination, const RenderStyle* from, const RenderStyle* to, double progress) const final
+    void blend(const CSSPropertyBlendingClient* client, RenderStyle* destination, const RenderStyle* from, const RenderStyle* to, double progress) const override
     {
         auto valueRange = m_flags.contains(Flags::NegativeLengthsAreInvalid) ? ValueRangeNonNegative : ValueRangeAll;
         (destination->*m_setter)(blendFunc(client, value(from), value(to), progress, valueRange));
     }
 
+private:
     void (RenderStyle::*m_setter)(Length&&);
     OptionSet<Flags> m_flags;
 };
@@ -1925,6 +1926,28 @@
     }
 };
 
+class VerticalAlignWrapper final : public LengthPropertyWrapper {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    VerticalAlignWrapper()
+        : LengthPropertyWrapper(CSSPropertyVerticalAlign, &RenderStyle::verticalAlignLength, &RenderStyle::setVerticalAlignLength, LengthPropertyWrapper::Flags::IsLengthPercentage)
+    {
+    }
+
+private:
+    bool canInterpolate(const RenderStyle* from, const RenderStyle* to) const final
+    {
+        return from->verticalAlign() == VerticalAlign::Length && to->verticalAlign() == VerticalAlign::Length && LengthPropertyWrapper::canInterpolate(from, to);
+    }
+
+    void blend(const CSSPropertyBlendingClient* client, RenderStyle* destination, const RenderStyle* from, const RenderStyle* to, double progress) const final
+    {
+        LengthPropertyWrapper::blend(client, destination, from, to, progress);
+        auto* blendingStyle = !canInterpolate(from, to) && progress ? to : from;
+        destination->setVerticalAlign(blendingStyle->verticalAlign());
+    }
+};
+
 class PerspectiveWrapper final : public NonNegativeFloatPropertyWrapper {
     WTF_MAKE_FAST_ALLOCATED;
 public:
@@ -2147,6 +2170,7 @@
         new PropertyWrapper<float>(CSSPropertyLetterSpacing, &RenderStyle::letterSpacing, &RenderStyle::setLetterSpacing),
         new LengthPropertyWrapper(CSSPropertyWordSpacing, &RenderStyle::wordSpacing, &RenderStyle::setWordSpacing),
         new LengthPropertyWrapper(CSSPropertyTextIndent, &RenderStyle::textIndent, &RenderStyle::setTextIndent, LengthPropertyWrapper::Flags::IsLengthPercentage),
+        new VerticalAlignWrapper,
 
         new PerspectiveWrapper,
         new LengthPropertyWrapper(CSSPropertyPerspectiveOriginX, &RenderStyle::perspectiveOriginX, &RenderStyle::setPerspectiveOriginX, LengthPropertyWrapper::Flags::IsLengthPercentage),

Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (275159 => 275160)


--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp	2021-03-29 16:30:09 UTC (rev 275160)
@@ -3301,7 +3301,7 @@
             case VerticalAlign::BaselineMiddle:
                 return cssValuePool.createIdentifierValue(CSSValueWebkitBaselineMiddle);
             case VerticalAlign::Length:
-                return cssValuePool.createValue(style.verticalAlignLength());
+                return cssValuePool.createValue(style.verticalAlignLength(), style);
             }
             ASSERT_NOT_REACHED();
             return nullptr;

Modified: trunk/Source/WebCore/css/CSSProperties.json (275159 => 275160)


--- trunk/Source/WebCore/css/CSSProperties.json	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/Source/WebCore/css/CSSProperties.json	2021-03-29 16:30:09 UTC (rev 275160)
@@ -4330,7 +4330,7 @@
         },
         "vertical-align": {
             "codegen-properties": {
-                "custom": "Value"
+                "custom": "Inherit|Value"
             },
             "specification": {
                 "category": "css-22",

Modified: trunk/Source/WebCore/style/StyleBuilderCustom.h (275159 => 275160)


--- trunk/Source/WebCore/style/StyleBuilderCustom.h	2021-03-29 05:27:15 UTC (rev 275159)
+++ trunk/Source/WebCore/style/StyleBuilderCustom.h	2021-03-29 16:30:09 UTC (rev 275160)
@@ -139,6 +139,7 @@
     // Custom handling of value setting only.
     static void applyValueBaselineShift(BuilderState&, CSSValue&);
     static void applyValueDirection(BuilderState&, CSSValue&);
+    static void applyInheritVerticalAlign(BuilderState&);
     static void applyValueVerticalAlign(BuilderState&, CSSValue&);
     static void applyInitialTextAlign(BuilderState&);
     static void applyValueTextAlign(BuilderState&, CSSValue&);
@@ -330,6 +331,12 @@
     return true;
 }
 
+inline void BuilderCustom::applyInheritVerticalAlign(BuilderState& builderState)
+{
+    builderState.style().setVerticalAlignLength(forwardInheritedValue(builderState.parentStyle().verticalAlignLength()));
+    builderState.style().setVerticalAlign(forwardInheritedValue(builderState.parentStyle().verticalAlign()));
+}
+
 inline void BuilderCustom::applyValueVerticalAlign(BuilderState& builderState, CSSValue& value)
 {
     auto& primitiveValue = downcast<CSSPrimitiveValue>(value);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to