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),