Title: [273001] trunk
Revision
273001
Author
[email protected]
Date
2021-02-17 08:50:30 -0800 (Wed, 17 Feb 2021)

Log Message

CSS properties that disallow negative values should not animate to negative values
https://bugs.webkit.org/show_bug.cgi?id=222034

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark WPT progressions.

* web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt:
* web-platform-tests/css/css-box/animation/padding-interpolation-expected.txt:
* web-platform-tests/css/css-box/animation/padding-left-composition-expected.txt:
* web-platform-tests/css/css-box/animation/padding-right-composition-expected.txt:
* web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt:
* web-platform-tests/css/css-shapes/animation/shape-margin-composition-expected.txt:
* web-platform-tests/css/css-shapes/animation/shape-margin-interpolation-expected.txt:
* web-platform-tests/css/css-sizing/animation/min-height-composition-expected.txt:
* web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt:
* web-platform-tests/css/css-sizing/animation/min-width-composition-expected.txt:
* web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt:

Source/WebCore:

Some CSS properties disallow negative values, but the blending code used for animations allows them.
We now add a new animation wrapper for those values, NonNegativeLengthPropertyWrapper, which will clamp
the blended value to 0 if negative. This new wrapper is used for the padding properties, width, height,
min-width, min-height and shape-margin.

* animation/CSSPropertyAnimation.cpp:
(WebCore::NonNegativeLengthPropertyWrapper::NonNegativeLengthPropertyWrapper):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

LayoutTests:

Mark WPT output changes for a couple tests with platform-specific results.

* platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (273000 => 273001)


--- trunk/LayoutTests/ChangeLog	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/ChangeLog	2021-02-17 16:50:30 UTC (rev 273001)
@@ -1,3 +1,15 @@
+2021-02-17  Antoine Quint  <[email protected]>
+
+        CSS properties that disallow negative values should not animate to negative values
+        https://bugs.webkit.org/show_bug.cgi?id=222034
+
+        Reviewed by Antti Koivisto.
+
+        Mark WPT output changes for a couple tests with platform-specific results.
+
+        * platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt:
+        * platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt:
+
 2021-02-17  Andres Gonzalez  <[email protected]>
 
         Support aria-errormessage on iOS.

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2021-02-17 16:50:30 UTC (rev 273001)
@@ -1,3 +1,24 @@
+2021-02-17  Antoine Quint  <[email protected]>
+
+        CSS properties that disallow negative values should not animate to negative values
+        https://bugs.webkit.org/show_bug.cgi?id=222034
+
+        Reviewed by Antti Koivisto.
+
+        Mark WPT progressions.
+
+        * web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt:
+        * web-platform-tests/css/css-box/animation/padding-interpolation-expected.txt:
+        * web-platform-tests/css/css-box/animation/padding-left-composition-expected.txt:
+        * web-platform-tests/css/css-box/animation/padding-right-composition-expected.txt:
+        * web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt:
+        * web-platform-tests/css/css-shapes/animation/shape-margin-composition-expected.txt:
+        * web-platform-tests/css/css-shapes/animation/shape-margin-interpolation-expected.txt:
+        * web-platform-tests/css/css-sizing/animation/min-height-composition-expected.txt:
+        * web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt:
+        * web-platform-tests/css/css-sizing/animation/min-width-composition-expected.txt:
+        * web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt:
+
 2021-02-16  Manuel Rego Casasnovas  <[email protected]>
 
         [selectors] :focus-visible parsing and experimental flag

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <padding-bottom> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "160.75px " but got "100px "
 FAIL Compositing: property <padding-bottom> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "176.89px " but got "100px "
 FAIL Compositing: property <padding-bottom> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "203.8px " but got "126.89px "

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-interpolation-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-interpolation-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-interpolation-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -23,25 +23,25 @@
 PASS Web Animations: property <padding> from neutral to [20px] at (0.6) should be [16px]
 PASS Web Animations: property <padding> from neutral to [20px] at (1) should be [20px]
 PASS Web Animations: property <padding> from neutral to [20px] at (1.5) should be [25px]
-FAIL CSS Transitions: property <padding> from [initial] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions: property <padding> from [initial] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions: property <padding> from [initial] to [20px] at (0) should be [0px]
 PASS CSS Transitions: property <padding> from [initial] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions: property <padding> from [initial] to [20px] at (0.6) should be [12px]
 PASS CSS Transitions: property <padding> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Transitions: property <padding> from [initial] to [20px] at (1.5) should be [30px]
-FAIL CSS Transitions with transition: all: property <padding> from [initial] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions with transition: all: property <padding> from [initial] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions with transition: all: property <padding> from [initial] to [20px] at (0) should be [0px]
 PASS CSS Transitions with transition: all: property <padding> from [initial] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions with transition: all: property <padding> from [initial] to [20px] at (0.6) should be [12px]
 PASS CSS Transitions with transition: all: property <padding> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Transitions with transition: all: property <padding> from [initial] to [20px] at (1.5) should be [30px]
-FAIL CSS Animations: property <padding> from [initial] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Animations: property <padding> from [initial] to [20px] at (-0.3) should be [0px]
 PASS CSS Animations: property <padding> from [initial] to [20px] at (0) should be [0px]
 PASS CSS Animations: property <padding> from [initial] to [20px] at (0.3) should be [6px]
 PASS CSS Animations: property <padding> from [initial] to [20px] at (0.6) should be [12px]
 PASS CSS Animations: property <padding> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Animations: property <padding> from [initial] to [20px] at (1.5) should be [30px]
-FAIL Web Animations: property <padding> from [initial] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS Web Animations: property <padding> from [initial] to [20px] at (-0.3) should be [0px]
 PASS Web Animations: property <padding> from [initial] to [20px] at (0) should be [0px]
 PASS Web Animations: property <padding> from [initial] to [20px] at (0.3) should be [6px]
 PASS Web Animations: property <padding> from [initial] to [20px] at (0.6) should be [12px]
@@ -71,49 +71,49 @@
 PASS Web Animations: property <padding> from [inherit] to [20px] at (0.6) should be [24px]
 PASS Web Animations: property <padding> from [inherit] to [20px] at (1) should be [20px]
 PASS Web Animations: property <padding> from [inherit] to [20px] at (1.5) should be [15px]
-FAIL CSS Transitions: property <padding> from [unset] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions: property <padding> from [unset] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions: property <padding> from [unset] to [20px] at (0) should be [0px]
 PASS CSS Transitions: property <padding> from [unset] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions: property <padding> from [unset] to [20px] at (0.6) should be [12px]
 PASS CSS Transitions: property <padding> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Transitions: property <padding> from [unset] to [20px] at (1.5) should be [30px]
-FAIL CSS Transitions with transition: all: property <padding> from [unset] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions with transition: all: property <padding> from [unset] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions with transition: all: property <padding> from [unset] to [20px] at (0) should be [0px]
 PASS CSS Transitions with transition: all: property <padding> from [unset] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions with transition: all: property <padding> from [unset] to [20px] at (0.6) should be [12px]
 PASS CSS Transitions with transition: all: property <padding> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Transitions with transition: all: property <padding> from [unset] to [20px] at (1.5) should be [30px]
-FAIL CSS Animations: property <padding> from [unset] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Animations: property <padding> from [unset] to [20px] at (-0.3) should be [0px]
 PASS CSS Animations: property <padding> from [unset] to [20px] at (0) should be [0px]
 PASS CSS Animations: property <padding> from [unset] to [20px] at (0.3) should be [6px]
 PASS CSS Animations: property <padding> from [unset] to [20px] at (0.6) should be [12px]
 PASS CSS Animations: property <padding> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Animations: property <padding> from [unset] to [20px] at (1.5) should be [30px]
-FAIL Web Animations: property <padding> from [unset] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS Web Animations: property <padding> from [unset] to [20px] at (-0.3) should be [0px]
 PASS Web Animations: property <padding> from [unset] to [20px] at (0) should be [0px]
 PASS Web Animations: property <padding> from [unset] to [20px] at (0.3) should be [6px]
 PASS Web Animations: property <padding> from [unset] to [20px] at (0.6) should be [12px]
 PASS Web Animations: property <padding> from [unset] to [20px] at (1) should be [20px]
 PASS Web Animations: property <padding> from [unset] to [20px] at (1.5) should be [30px]
-FAIL CSS Transitions: property <padding> from [0px] to [10px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 3px "
+PASS CSS Transitions: property <padding> from [0px] to [10px] at (-0.3) should be [0px]
 PASS CSS Transitions: property <padding> from [0px] to [10px] at (0) should be [0px]
 PASS CSS Transitions: property <padding> from [0px] to [10px] at (0.3) should be [3px]
 PASS CSS Transitions: property <padding> from [0px] to [10px] at (0.6) should be [6px]
 PASS CSS Transitions: property <padding> from [0px] to [10px] at (1) should be [10px]
 PASS CSS Transitions: property <padding> from [0px] to [10px] at (1.5) should be [15px]
-FAIL CSS Transitions with transition: all: property <padding> from [0px] to [10px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 3px "
+PASS CSS Transitions with transition: all: property <padding> from [0px] to [10px] at (-0.3) should be [0px]
 PASS CSS Transitions with transition: all: property <padding> from [0px] to [10px] at (0) should be [0px]
 PASS CSS Transitions with transition: all: property <padding> from [0px] to [10px] at (0.3) should be [3px]
 PASS CSS Transitions with transition: all: property <padding> from [0px] to [10px] at (0.6) should be [6px]
 PASS CSS Transitions with transition: all: property <padding> from [0px] to [10px] at (1) should be [10px]
 PASS CSS Transitions with transition: all: property <padding> from [0px] to [10px] at (1.5) should be [15px]
-FAIL CSS Animations: property <padding> from [0px] to [10px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 3px "
+PASS CSS Animations: property <padding> from [0px] to [10px] at (-0.3) should be [0px]
 PASS CSS Animations: property <padding> from [0px] to [10px] at (0) should be [0px]
 PASS CSS Animations: property <padding> from [0px] to [10px] at (0.3) should be [3px]
 PASS CSS Animations: property <padding> from [0px] to [10px] at (0.6) should be [6px]
 PASS CSS Animations: property <padding> from [0px] to [10px] at (1) should be [10px]
 PASS CSS Animations: property <padding> from [0px] to [10px] at (1.5) should be [15px]
-FAIL Web Animations: property <padding> from [0px] to [10px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 3px "
+PASS Web Animations: property <padding> from [0px] to [10px] at (-0.3) should be [0px]
 PASS Web Animations: property <padding> from [0px] to [10px] at (0) should be [0px]
 PASS Web Animations: property <padding> from [0px] to [10px] at (0.3) should be [3px]
 PASS Web Animations: property <padding> from [0px] to [10px] at (0.6) should be [6px]

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-left-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-left-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-left-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <padding-left> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <padding-left> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <padding-left> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <padding-left> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <padding-left> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <padding-left> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "161.36px " but got "100px "
 FAIL Compositing: property <padding-left> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "178.39px " but got "100px "
 FAIL Compositing: property <padding-left> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "206.8px " but got "128.39px "

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-right-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-right-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-right-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <padding-right> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <padding-right> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <padding-right> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <padding-right> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <padding-right> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <padding-right> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "161.36px " but got "100px "
 FAIL Compositing: property <padding-right> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "178.39px " but got "100px "
 FAIL Compositing: property <padding-right> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "206.8px " but got "128.39px "

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <padding-top> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "160.75px " but got "100px "
 FAIL Compositing: property <padding-top> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "176.89px " but got "100px "
 FAIL Compositing: property <padding-top> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "203.8px " but got "126.89px "

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-margin-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-margin-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-margin-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <shape-margin> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <shape-margin> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <shape-margin> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <shape-margin> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <shape-margin> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <shape-margin> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "calc ( 4 % + 130px ) " but got "100px "
 FAIL Compositing: property <shape-margin> 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 <shape-margin> 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 ) ) "

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -23,25 +23,25 @@
 PASS Web Animations: property <shape-margin> from neutral to [20px] at (0.6) should be [16px]
 PASS Web Animations: property <shape-margin> from neutral to [20px] at (1) should be [20px]
 PASS Web Animations: property <shape-margin> from neutral to [20px] at (1.5) should be [25px]
-FAIL CSS Transitions: property <shape-margin> from [initial] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions: property <shape-margin> from [initial] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions: property <shape-margin> from [initial] to [20px] at (0) should be [0px]
 PASS CSS Transitions: property <shape-margin> from [initial] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions: property <shape-margin> from [initial] to [20px] at (0.6) should be [12px]
 PASS CSS Transitions: property <shape-margin> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Transitions: property <shape-margin> from [initial] to [20px] at (1.5) should be [30px]
-FAIL CSS Transitions with transition: all: property <shape-margin> from [initial] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions with transition: all: property <shape-margin> from [initial] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [initial] to [20px] at (0) should be [0px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [initial] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [initial] to [20px] at (0.6) should be [12px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [initial] to [20px] at (1.5) should be [30px]
-FAIL CSS Animations: property <shape-margin> from [initial] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Animations: property <shape-margin> from [initial] to [20px] at (-0.3) should be [0px]
 PASS CSS Animations: property <shape-margin> from [initial] to [20px] at (0) should be [0px]
 PASS CSS Animations: property <shape-margin> from [initial] to [20px] at (0.3) should be [6px]
 PASS CSS Animations: property <shape-margin> from [initial] to [20px] at (0.6) should be [12px]
 PASS CSS Animations: property <shape-margin> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Animations: property <shape-margin> from [initial] to [20px] at (1.5) should be [30px]
-FAIL Web Animations: property <shape-margin> from [initial] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS Web Animations: property <shape-margin> from [initial] to [20px] at (-0.3) should be [0px]
 PASS Web Animations: property <shape-margin> from [initial] to [20px] at (0) should be [0px]
 PASS Web Animations: property <shape-margin> from [initial] to [20px] at (0.3) should be [6px]
 PASS Web Animations: property <shape-margin> from [initial] to [20px] at (0.6) should be [12px]
@@ -71,49 +71,49 @@
 PASS Web Animations: property <shape-margin> from [inherit] to [20px] at (0.6) should be [24px]
 PASS Web Animations: property <shape-margin> from [inherit] to [20px] at (1) should be [20px]
 PASS Web Animations: property <shape-margin> from [inherit] to [20px] at (1.5) should be [15px]
-FAIL CSS Transitions: property <shape-margin> from [unset] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions: property <shape-margin> from [unset] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions: property <shape-margin> from [unset] to [20px] at (0) should be [0px]
 PASS CSS Transitions: property <shape-margin> from [unset] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions: property <shape-margin> from [unset] to [20px] at (0.6) should be [12px]
 PASS CSS Transitions: property <shape-margin> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Transitions: property <shape-margin> from [unset] to [20px] at (1.5) should be [30px]
-FAIL CSS Transitions with transition: all: property <shape-margin> from [unset] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions with transition: all: property <shape-margin> from [unset] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [unset] to [20px] at (0) should be [0px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [unset] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [unset] to [20px] at (0.6) should be [12px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [unset] to [20px] at (1.5) should be [30px]
-FAIL CSS Animations: property <shape-margin> from [unset] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Animations: property <shape-margin> from [unset] to [20px] at (-0.3) should be [0px]
 PASS CSS Animations: property <shape-margin> from [unset] to [20px] at (0) should be [0px]
 PASS CSS Animations: property <shape-margin> from [unset] to [20px] at (0.3) should be [6px]
 PASS CSS Animations: property <shape-margin> from [unset] to [20px] at (0.6) should be [12px]
 PASS CSS Animations: property <shape-margin> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Animations: property <shape-margin> from [unset] to [20px] at (1.5) should be [30px]
-FAIL Web Animations: property <shape-margin> from [unset] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS Web Animations: property <shape-margin> from [unset] to [20px] at (-0.3) should be [0px]
 PASS Web Animations: property <shape-margin> from [unset] to [20px] at (0) should be [0px]
 PASS Web Animations: property <shape-margin> from [unset] to [20px] at (0.3) should be [6px]
 PASS Web Animations: property <shape-margin> from [unset] to [20px] at (0.6) should be [12px]
 PASS Web Animations: property <shape-margin> from [unset] to [20px] at (1) should be [20px]
 PASS Web Animations: property <shape-margin> from [unset] to [20px] at (1.5) should be [30px]
-FAIL CSS Transitions: property <shape-margin> from [0px] to [100px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 30px "
+PASS CSS Transitions: property <shape-margin> from [0px] to [100px] at (-0.3) should be [0px]
 PASS CSS Transitions: property <shape-margin> from [0px] to [100px] at (0) should be [0px]
 PASS CSS Transitions: property <shape-margin> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Transitions: property <shape-margin> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Transitions: property <shape-margin> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Transitions: property <shape-margin> from [0px] to [100px] at (1.5) should be [150px]
-FAIL CSS Transitions with transition: all: property <shape-margin> from [0px] to [100px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 30px "
+PASS CSS Transitions with transition: all: property <shape-margin> from [0px] to [100px] at (-0.3) should be [0px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [0px] to [100px] at (0) should be [0px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Transitions with transition: all: property <shape-margin> from [0px] to [100px] at (1.5) should be [150px]
-FAIL CSS Animations: property <shape-margin> from [0px] to [100px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 30px "
+PASS CSS Animations: property <shape-margin> from [0px] to [100px] at (-0.3) should be [0px]
 PASS CSS Animations: property <shape-margin> from [0px] to [100px] at (0) should be [0px]
 PASS CSS Animations: property <shape-margin> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Animations: property <shape-margin> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Animations: property <shape-margin> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Animations: property <shape-margin> from [0px] to [100px] at (1.5) should be [150px]
-FAIL Web Animations: property <shape-margin> from [0px] to [100px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 30px "
+PASS Web Animations: property <shape-margin> from [0px] to [100px] at (-0.3) should be [0px]
 PASS Web Animations: property <shape-margin> from [0px] to [100px] at (0) should be [0px]
 PASS Web Animations: property <shape-margin> from [0px] to [100px] at (0.3) should be [30px]
 PASS Web Animations: property <shape-margin> from [0px] to [100px] at (0.6) should be [60px]

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-height-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-height-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-height-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <min-height> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <min-height> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <min-height> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <min-height> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <min-height> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <min-height> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "calc ( 4 % + 130px ) " but got "100px "
 FAIL Compositing: property <min-height> 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 <min-height> 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 ) ) "

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -103,25 +103,25 @@
 PASS Web Animations: property <min-height> from [unset] to [20px] at (0.6) should be [20px]
 PASS Web Animations: property <min-height> from [unset] to [20px] at (1) should be [20px]
 PASS Web Animations: property <min-height> from [unset] to [20px] at (1.5) should be [20px]
-FAIL CSS Transitions: property <min-height> from [0px] to [100px] at (-0.5) should be [0] assert_equals: expected "0px " but got "- 50px "
+PASS CSS Transitions: property <min-height> from [0px] to [100px] at (-0.5) should be [0]
 PASS CSS Transitions: property <min-height> from [0px] to [100px] at (0) should be [0]
 PASS CSS Transitions: property <min-height> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Transitions: property <min-height> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Transitions: property <min-height> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Transitions: property <min-height> from [0px] to [100px] at (1.5) should be [150px]
-FAIL CSS Transitions with transition: all: property <min-height> from [0px] to [100px] at (-0.5) should be [0] assert_equals: expected "0px " but got "- 50px "
+PASS CSS Transitions with transition: all: property <min-height> from [0px] to [100px] at (-0.5) should be [0]
 PASS CSS Transitions with transition: all: property <min-height> from [0px] to [100px] at (0) should be [0]
 PASS CSS Transitions with transition: all: property <min-height> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Transitions with transition: all: property <min-height> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Transitions with transition: all: property <min-height> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Transitions with transition: all: property <min-height> from [0px] to [100px] at (1.5) should be [150px]
-FAIL CSS Animations: property <min-height> from [0px] to [100px] at (-0.5) should be [0] assert_equals: expected "0px " but got "- 50px "
+PASS CSS Animations: property <min-height> from [0px] to [100px] at (-0.5) should be [0]
 PASS CSS Animations: property <min-height> from [0px] to [100px] at (0) should be [0]
 PASS CSS Animations: property <min-height> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Animations: property <min-height> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Animations: property <min-height> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Animations: property <min-height> from [0px] to [100px] at (1.5) should be [150px]
-FAIL Web Animations: property <min-height> from [0px] to [100px] at (-0.5) should be [0] assert_equals: expected "0px " but got "- 50px "
+PASS Web Animations: property <min-height> from [0px] to [100px] at (-0.5) should be [0]
 PASS Web Animations: property <min-height> from [0px] to [100px] at (0) should be [0]
 PASS Web Animations: property <min-height> from [0px] to [100px] at (0.3) should be [30px]
 PASS Web Animations: property <min-height> from [0px] to [100px] at (0.6) should be [60px]

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-width-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-width-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-width-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <min-width> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <min-width> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <min-width> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <min-width> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <min-width> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <min-width> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "calc ( 4 % + 130px ) " but got "100px "
 FAIL Compositing: property <min-width> 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 <min-width> 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 ) ) "

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt (273000 => 273001)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -103,25 +103,25 @@
 PASS Web Animations: property <min-width> from [unset] to [20px] at (0.6) should be [20px]
 PASS Web Animations: property <min-width> from [unset] to [20px] at (1) should be [20px]
 PASS Web Animations: property <min-width> from [unset] to [20px] at (1.5) should be [20px]
-FAIL CSS Transitions: property <min-width> from [0px] to [100px] at (-0.5) should be [0] assert_equals: expected "0px " but got "- 50px "
+PASS CSS Transitions: property <min-width> from [0px] to [100px] at (-0.5) should be [0]
 PASS CSS Transitions: property <min-width> from [0px] to [100px] at (0) should be [0]
 PASS CSS Transitions: property <min-width> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Transitions: property <min-width> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Transitions: property <min-width> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Transitions: property <min-width> from [0px] to [100px] at (1.5) should be [150px]
-FAIL CSS Transitions with transition: all: property <min-width> from [0px] to [100px] at (-0.5) should be [0] assert_equals: expected "0px " but got "- 50px "
+PASS CSS Transitions with transition: all: property <min-width> from [0px] to [100px] at (-0.5) should be [0]
 PASS CSS Transitions with transition: all: property <min-width> from [0px] to [100px] at (0) should be [0]
 PASS CSS Transitions with transition: all: property <min-width> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Transitions with transition: all: property <min-width> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Transitions with transition: all: property <min-width> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Transitions with transition: all: property <min-width> from [0px] to [100px] at (1.5) should be [150px]
-FAIL CSS Animations: property <min-width> from [0px] to [100px] at (-0.5) should be [0] assert_equals: expected "0px " but got "- 50px "
+PASS CSS Animations: property <min-width> from [0px] to [100px] at (-0.5) should be [0]
 PASS CSS Animations: property <min-width> from [0px] to [100px] at (0) should be [0]
 PASS CSS Animations: property <min-width> from [0px] to [100px] at (0.3) should be [30px]
 PASS CSS Animations: property <min-width> from [0px] to [100px] at (0.6) should be [60px]
 PASS CSS Animations: property <min-width> from [0px] to [100px] at (1) should be [100px]
 PASS CSS Animations: property <min-width> from [0px] to [100px] at (1.5) should be [150px]
-FAIL Web Animations: property <min-width> from [0px] to [100px] at (-0.5) should be [0] assert_equals: expected "0px " but got "- 50px "
+PASS Web Animations: property <min-width> from [0px] to [100px] at (-0.5) should be [0]
 PASS Web Animations: property <min-width> from [0px] to [100px] at (0) should be [0]
 PASS Web Animations: property <min-width> from [0px] to [100px] at (0.3) should be [30px]
 PASS Web Animations: property <min-width> from [0px] to [100px] at (0.6) should be [60px]

Modified: trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <padding-bottom> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <padding-bottom> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "161.36px " but got "100px "
 FAIL Compositing: property <padding-bottom> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "178.39px " but got "100px "
 FAIL Compositing: property <padding-bottom> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "206.8px " but got "128.39px "

Modified: trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt (273000 => 273001)


--- trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt	2021-02-17 16:50:30 UTC (rev 273001)
@@ -8,7 +8,7 @@
 FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "10px "
 FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "6px "
 FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "2px "
-FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "- 2px "
+FAIL Compositing: property <padding-top> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "0px "
 FAIL Compositing: property <padding-top> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "161.36px " but got "100px "
 FAIL Compositing: property <padding-top> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "178.39px " but got "100px "
 FAIL Compositing: property <padding-top> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "206.8px " but got "128.39px "

Modified: trunk/Source/WebCore/ChangeLog (273000 => 273001)


--- trunk/Source/WebCore/ChangeLog	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/Source/WebCore/ChangeLog	2021-02-17 16:50:30 UTC (rev 273001)
@@ -1,3 +1,19 @@
+2021-02-17  Antoine Quint  <[email protected]>
+
+        CSS properties that disallow negative values should not animate to negative values
+        https://bugs.webkit.org/show_bug.cgi?id=222034
+
+        Reviewed by Antti Koivisto.
+
+        Some CSS properties disallow negative values, but the blending code used for animations allows them.
+        We now add a new animation wrapper for those values, NonNegativeLengthPropertyWrapper, which will clamp
+        the blended value to 0 if negative. This new wrapper is used for the padding properties, width, height,
+        min-width, min-height and shape-margin.
+
+        * animation/CSSPropertyAnimation.cpp:
+        (WebCore::NonNegativeLengthPropertyWrapper::NonNegativeLengthPropertyWrapper):
+        (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
+
 2021-02-17  Per Arne  <[email protected]>
 
         [macOS] Deny mach-lookup to the fonts service

Modified: trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp (273000 => 273001)


--- trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp	2021-02-17 16:23:18 UTC (rev 273000)
+++ trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp	2021-02-17 16:50:30 UTC (rev 273001)
@@ -699,6 +699,33 @@
     void (RenderStyle::*m_setter)(Length&&);
 };
 
+class NonNegativeLengthPropertyWrapper : public PropertyWrapperGetter<const Length&> {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    NonNegativeLengthPropertyWrapper(CSSPropertyID prop, const Length& (RenderStyle::*getter)() const, void (RenderStyle::*setter)(Length&&))
+        : PropertyWrapperGetter<const Length&>(prop, getter)
+        , m_setter(setter)
+    {
+    }
+
+    bool canInterpolate(const RenderStyle* a, const RenderStyle* b) const override
+    {
+        return !(a->*PropertyWrapperGetter<const Length&>::m_getter)().isAuto() && !(b->*PropertyWrapperGetter<const Length&>::m_getter)().isAuto();
+    }
+
+    void blend(const CSSPropertyBlendingClient* anim, RenderStyle* dst, const RenderStyle* a, const RenderStyle* b, double progress) const override
+    {
+        auto blended = blendFunc(anim, (a->*PropertyWrapperGetter<const Length&>::m_getter)(), (b->*PropertyWrapperGetter<const Length&>::m_getter)(), progress);
+        if (blended.isNegative())
+            (dst->*m_setter)(Length(0, LengthType::Fixed));
+        else
+            (dst->*m_setter)(WTFMove(blended));
+    }
+
+protected:
+    void (RenderStyle::*m_setter)(Length&&);
+};
+
 template <typename T>
 class LengthVariantPropertyWrapper : public PropertyWrapperGetter<const T&> {
     WTF_MAKE_FAST_ALLOCATED;
@@ -1745,12 +1772,12 @@
         new LengthPropertyWrapper(CSSPropertyTop, &RenderStyle::top, &RenderStyle::setTop),
         new LengthPropertyWrapper(CSSPropertyBottom, &RenderStyle::bottom, &RenderStyle::setBottom),
 
-        new LengthPropertyWrapper(CSSPropertyWidth, &RenderStyle::width, &RenderStyle::setWidth),
-        new LengthPropertyWrapper(CSSPropertyMinWidth, &RenderStyle::minWidth, &RenderStyle::setMinWidth),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyWidth, &RenderStyle::width, &RenderStyle::setWidth),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyMinWidth, &RenderStyle::minWidth, &RenderStyle::setMinWidth),
         new LengthPropertyWrapper(CSSPropertyMaxWidth, &RenderStyle::maxWidth, &RenderStyle::setMaxWidth),
 
-        new LengthPropertyWrapper(CSSPropertyHeight, &RenderStyle::height, &RenderStyle::setHeight),
-        new LengthPropertyWrapper(CSSPropertyMinHeight, &RenderStyle::minHeight, &RenderStyle::setMinHeight),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyHeight, &RenderStyle::height, &RenderStyle::setHeight),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyMinHeight, &RenderStyle::minHeight, &RenderStyle::setMinHeight),
         new LengthPropertyWrapper(CSSPropertyMaxHeight, &RenderStyle::maxHeight, &RenderStyle::setMaxHeight),
 
         new PropertyWrapperFlex(),
@@ -1763,10 +1790,10 @@
         new LengthPropertyWrapper(CSSPropertyMarginRight, &RenderStyle::marginRight, &RenderStyle::setMarginRight),
         new LengthPropertyWrapper(CSSPropertyMarginTop, &RenderStyle::marginTop, &RenderStyle::setMarginTop),
         new LengthPropertyWrapper(CSSPropertyMarginBottom, &RenderStyle::marginBottom, &RenderStyle::setMarginBottom),
-        new LengthPropertyWrapper(CSSPropertyPaddingLeft, &RenderStyle::paddingLeft, &RenderStyle::setPaddingLeft),
-        new LengthPropertyWrapper(CSSPropertyPaddingRight, &RenderStyle::paddingRight, &RenderStyle::setPaddingRight),
-        new LengthPropertyWrapper(CSSPropertyPaddingTop, &RenderStyle::paddingTop, &RenderStyle::setPaddingTop),
-        new LengthPropertyWrapper(CSSPropertyPaddingBottom, &RenderStyle::paddingBottom, &RenderStyle::setPaddingBottom),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyPaddingLeft, &RenderStyle::paddingLeft, &RenderStyle::setPaddingLeft),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyPaddingRight, &RenderStyle::paddingRight, &RenderStyle::setPaddingRight),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyPaddingTop, &RenderStyle::paddingTop, &RenderStyle::setPaddingTop),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyPaddingBottom, &RenderStyle::paddingBottom, &RenderStyle::setPaddingBottom),
 
         new PropertyWrapperVisitedAffectedColor(CSSPropertyCaretColor, &RenderStyle::caretColor, &RenderStyle::setCaretColor, &RenderStyle::visitedLinkCaretColor, &RenderStyle::setVisitedLinkCaretColor),
 
@@ -1844,7 +1871,7 @@
         new PropertyWrapperClipPath(CSSPropertyClipPath, &RenderStyle::clipPath, &RenderStyle::setClipPath),
 
         new PropertyWrapperShape(CSSPropertyShapeOutside, &RenderStyle::shapeOutside, &RenderStyle::setShapeOutside),
-        new LengthPropertyWrapper(CSSPropertyShapeMargin, &RenderStyle::shapeMargin, &RenderStyle::setShapeMargin),
+        new NonNegativeLengthPropertyWrapper(CSSPropertyShapeMargin, &RenderStyle::shapeMargin, &RenderStyle::setShapeMargin),
         new PropertyWrapper<float>(CSSPropertyShapeImageThreshold, &RenderStyle::shapeImageThreshold, &RenderStyle::setShapeImageThreshold),
 
         new PropertyWrapperVisitedAffectedColor(CSSPropertyColumnRuleColor, MaybeInvalidColor, &RenderStyle::columnRuleColor, &RenderStyle::setColumnRuleColor, &RenderStyle::visitedLinkColumnRuleColor, &RenderStyle::setVisitedLinkColumnRuleColor),
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to