Title: [275869] trunk
Revision
275869
Author
grao...@webkit.org
Date
2021-04-13 01:08:24 -0700 (Tue, 13 Apr 2021)

Log Message

calc() simplification for a multiplication should apply the multiplication to each value of an addition
https://bugs.webkit.org/show_bug.cgi?id=224376

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Mark 99 WPT progressions.

* web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
* web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:
* web-platform-tests/css/css-shapes/shape-outside/values/shape-margin-003-expected.txt:
* web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt:
* web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt:
* web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt:
* web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt:
* web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt:
* web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt:
* web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt:
* web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

An _expression_ such as calc(0.5 * (100% + 100px)) should be simplified to calc(50% + 50px). We produce
these types of expressions when blending between a percentage and a dimension, and they can also be
specified explicitly in style.

* css/CSSCalculationValue.cpp:
(WebCore::CSSCalcOperationNode::combineChildren):

LayoutTests:

Rebase some non-WPT tests to account for new results.

* css3/calc/simplification-expected.txt:
* transitions/background-position-transitions-expected.txt:
* transitions/background-position-transitions.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (275868 => 275869)


--- trunk/LayoutTests/ChangeLog	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/ChangeLog	2021-04-13 08:08:24 UTC (rev 275869)
@@ -1,3 +1,16 @@
+2021-04-13  Antoine Quint  <grao...@webkit.org>
+
+        calc() simplification for a multiplication should apply the multiplication to each value of an addition
+        https://bugs.webkit.org/show_bug.cgi?id=224376
+
+        Reviewed by Simon Fraser.
+
+        Rebase some non-WPT tests to account for new results.
+
+        * css3/calc/simplification-expected.txt:
+        * transitions/background-position-transitions-expected.txt:
+        * transitions/background-position-transitions.html:
+
 2021-04-13  Said Abou-Hallawa  <s...@apple.com>
 
         SVG paced value animations overwrite user-provided keyTimes

Modified: trunk/LayoutTests/css3/calc/simplification-expected.txt (275868 => 275869)


--- trunk/LayoutTests/css3/calc/simplification-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/css3/calc/simplification-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -8,7 +8,7 @@
 100in * (6 * (5 - 4) / 8) => calc(7200px)
 1px * (3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + 1/(1 + 1/(1 + 1/(1 + 1)))))))) => calc(3.1415926535583574px)
 100pc * 20 + 100rem * 10 - 100ch * 5 + 100pc => calc(-500ch + 33600px + 1000rem)
-((100px + 20 * 5px) * 10 - 5 * (10em * 5 + 10em)) * 2 => calc(2 * (-300em + 2000px))
+((100px + 20 * 5px) * 10 - 5 * (10em * 5 + 10em)) * 2 => calc(-600em + 4000px)
 100px + 1in => calc(196px)
 10 * 10px + 0.5 * 2in => calc(196px)
 100px + 1in + 10% => calc(10% + 196px)

Modified: trunk/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt (275868 => 275869)


--- trunk/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -19,9 +19,9 @@
 PASS - "webkitShapeOutside" property for "circle-auto-box" element at 1s saw something close to: circle(50% at 50% 50%)
 PASS - "webkitShapeOutside" property for "circle-to-topleft-box" element at 1s saw something close to: circle(35% at 25% 25%)
 PASS - "webkitShapeOutside" property for "circle-to-topleft-box" element at 1s saw something close to: circle(35% at 25% 25%)
-PASS - "webkitShapeOutside" property for "circle-to-bottomright-using-keyword-box" element at 1s saw something close to: circle(35% at calc(25% + (0.5 * (100% + 0px))) calc(25% + (0.5 * (100% + 0px))))
-PASS - "webkitShapeOutside" property for "circle-to-bottomright-using-keyword-box" element at 1s saw something close to: circle(35% at calc(25% + (0.5 * (100% + 0px))) calc(25% + (0.5 * (100% + 0px))))
+PASS - "webkitShapeOutside" property for "circle-to-bottomright-using-keyword-box" element at 1s saw something close to: circle(35% at calc(75% + 0px) calc(75% + 0px))
+PASS - "webkitShapeOutside" property for "circle-to-bottomright-using-keyword-box" element at 1s saw something close to: circle(35% at calc(75% + 0px) calc(75% + 0px))
 PASS - "webkitShapeOutside" property for "circle-to-bottomright-extended-box" element at 1s saw something close to: circle(35% at 75% 75%)
-PASS - "webkitShapeOutside" property for "circle-to-bottomright-extended-using-keyword-box" element at 1s saw something close to: circle(35% at 70% calc(25% + (0.5 * (100% - 20px))))
-PASS - "webkitShapeOutside" property for "circle-to-bottomright-extended-using-keyword-2-box" element at 1s saw something close to: circle(35% at 70% calc(25% + (0.5 * (100% - 10px))))
+PASS - "webkitShapeOutside" property for "circle-to-bottomright-extended-using-keyword-box" element at 1s saw something close to: circle(35% at 70% calc(75% - 10px))
+PASS - "webkitShapeOutside" property for "circle-to-bottomright-extended-using-keyword-2-box" element at 1s saw something close to: circle(35% at 70% calc(75% - 5px)) border-box
 

Modified: trunk/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation.html (275868 => 275869)


--- trunk/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation.html	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation.html	2021-04-13 08:08:24 UTC (rev 275869)
@@ -143,11 +143,11 @@
       ["circle-auto-anim",  1, "circle-auto-box", "webkitShapeOutside", "circle(50% at 50% 50%)", 0.05],
       ["circle-to-topleft-anim",  1, "circle-to-topleft-box", "webkitShapeOutside", "circle(35% at 25% 25%)", 0.05],
       ["circle-to-topleft-anim",  1, "circle-to-topleft-box", "webkitShapeOutside", "circle(35% at 25% 25%)", 0.05],
-      ["circle-to-bottomright-using-keyword-anim",  1, "circle-to-bottomright-using-keyword-box", "webkitShapeOutside", "circle(35% at calc(25% + (0.5 * (100% + 0px))) calc(25% + (0.5 * (100% + 0px))))", 0.05],
-      ["circle-to-bottomright-using-keyword-anim",  1, "circle-to-bottomright-using-keyword-box", "webkitShapeOutside", "circle(35% at calc(25% + (0.5 * (100% + 0px))) calc(25% + (0.5 * (100% + 0px))))", 0.05],
+      ["circle-to-bottomright-using-keyword-anim",  1, "circle-to-bottomright-using-keyword-box", "webkitShapeOutside", "circle(35% at calc(75% + 0px) calc(75% + 0px))", 0.05],
+      ["circle-to-bottomright-using-keyword-anim",  1, "circle-to-bottomright-using-keyword-box", "webkitShapeOutside", "circle(35% at calc(75% + 0px) calc(75% + 0px))", 0.05],
       ["circle-to-bottomright-extended-anim",  1, "circle-to-bottomright-extended-box", "webkitShapeOutside", "circle(35% at 75% 75%)", 0.05],
-      ["circle-to-bottomright-extended-using-keyword-anim",  1, "circle-to-bottomright-extended-using-keyword-box", "webkitShapeOutside", "circle(35% at 70% calc(25% + (0.5 * (100% - 20px))))", 0.01],
-      ["circle-to-bottomright-extended-using-keyword-2-anim",  1, "circle-to-bottomright-extended-using-keyword-2-box", "webkitShapeOutside", "circle(35% at 70% calc(25% + (0.5 * (100% - 10px))))", 0.01],
+      ["circle-to-bottomright-extended-using-keyword-anim",  1, "circle-to-bottomright-extended-using-keyword-box", "webkitShapeOutside", "circle(35% at 70% calc(75% - 10px))", 0.01],
+      ["circle-to-bottomright-extended-using-keyword-2-anim",  1, "circle-to-bottomright-extended-using-keyword-2-box", "webkitShapeOutside", "circle(35% at 70% calc(75% - 5px)) border-box", 0.01],
     ];
     
     runAnimationTest(expectedValues);

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2021-04-13 08:08:24 UTC (rev 275869)
@@ -1,3 +1,24 @@
+2021-04-13  Antoine Quint  <grao...@webkit.org>
+
+        calc() simplification for a multiplication should apply the multiplication to each value of an addition
+        https://bugs.webkit.org/show_bug.cgi?id=224376
+
+        Reviewed by Simon Fraser.
+
+        Mark 99 WPT progressions.
+
+        * web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
+        * web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:
+        * web-platform-tests/css/css-shapes/shape-outside/values/shape-margin-003-expected.txt:
+        * web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt:
+        * web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt:
+        * web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt:
+        * web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt:
+        * web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt:
+        * web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt:
+        * web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt:
+        * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:
+
 2021-04-13  Said Abou-Hallawa  <s...@apple.com>
 
         SVG paced value animations overwrite user-provided keyTimes

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -120,24 +120,24 @@
 PASS Web Animations: property <background-position> from [center center] to [center top 20px] at (0.75) should be [50% calc(15px + 12.5%)]
 PASS Web Animations: property <background-position> from [center center] to [center top 20px] at (1) should be [50% 20px]
 PASS CSS Transitions: property <background-position> from [center center] to [right 20px top 20px] at (0) should be [50% 50%]
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px top 20px] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)] assert_equals: expected "calc ( 62.5 % - 5px ) calc ( 37.5 % + 5px ) " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) calc ( 37.5 % + 5px ) "
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px top 20px] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)] assert_equals: expected "calc ( 75 % - 10px ) calc ( 25 % + 10px ) " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) calc ( 25 % + 10px ) "
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px top 20px] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)] assert_equals: expected "calc ( 87.5 % - 15px ) calc ( 12.5 % + 15px ) " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) calc ( 12.5 % + 15px ) "
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px top 20px] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)]
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px top 20px] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)]
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px top 20px] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)]
 PASS CSS Transitions: property <background-position> from [center center] to [right 20px top 20px] at (1) should be [calc(-20px + 100%) 20px]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px top 20px] at (0) should be [50% 50%]
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px top 20px] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)] assert_equals: expected "calc ( 62.5 % - 5px ) calc ( 37.5 % + 5px ) " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) calc ( 37.5 % + 5px ) "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px top 20px] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)] assert_equals: expected "calc ( 75 % - 10px ) calc ( 25 % + 10px ) " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) calc ( 25 % + 10px ) "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px top 20px] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)] assert_equals: expected "calc ( 87.5 % - 15px ) calc ( 12.5 % + 15px ) " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) calc ( 12.5 % + 15px ) "
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px top 20px] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px top 20px] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px top 20px] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px top 20px] at (1) should be [calc(-20px + 100%) 20px]
 PASS CSS Animations: property <background-position> from [center center] to [right 20px top 20px] at (0) should be [50% 50%]
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)] assert_equals: expected "calc ( 62.5 % - 5px ) calc ( 37.5 % + 5px ) " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) calc ( 37.5 % + 5px ) "
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)] assert_equals: expected "calc ( 75 % - 10px ) calc ( 25 % + 10px ) " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) calc ( 25 % + 10px ) "
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)] assert_equals: expected "calc ( 87.5 % - 15px ) calc ( 12.5 % + 15px ) " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) calc ( 12.5 % + 15px ) "
+PASS CSS Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)]
+PASS CSS Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)]
+PASS CSS Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)]
 PASS CSS Animations: property <background-position> from [center center] to [right 20px top 20px] at (1) should be [calc(-20px + 100%) 20px]
 PASS Web Animations: property <background-position> from [center center] to [right 20px top 20px] at (0) should be [50% 50%]
-FAIL Web Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)] assert_equals: expected "calc ( 62.5 % - 5px ) calc ( 37.5 % + 5px ) " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) calc ( 37.5 % + 5px ) "
-FAIL Web Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)] assert_equals: expected "calc ( 75 % - 10px ) calc ( 25 % + 10px ) " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) calc ( 25 % + 10px ) "
-FAIL Web Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)] assert_equals: expected "calc ( 87.5 % - 15px ) calc ( 12.5 % + 15px ) " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) calc ( 12.5 % + 15px ) "
+PASS Web Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)]
+PASS Web Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)]
+PASS Web Animations: property <background-position> from [center center] to [right 20px top 20px] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)]
 PASS Web Animations: property <background-position> from [center center] to [right 20px top 20px] at (1) should be [calc(-20px + 100%) 20px]
 PASS CSS Transitions: property <background-position> from [center center] to [left 20px center] at (0) should be [50% 50%]
 PASS CSS Transitions: property <background-position> from [center center] to [left 20px center] at (0.25) should be [calc(5px + 37.5%) 50%]
@@ -180,84 +180,84 @@
 PASS Web Animations: property <background-position> from [center center] to [center center] at (0.75) should be [50% 50%]
 PASS Web Animations: property <background-position> from [center center] to [center center] at (1) should be [50% 50%]
 PASS CSS Transitions: property <background-position> from [center center] to [right 20px center] at (0) should be [50% 50%]
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px center] at (0.25) should be [calc(-5px + 62.5%) 50%] assert_equals: expected "calc ( 62.5 % - 5px ) 50 % " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) 50 % "
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px center] at (0.5) should be [calc(-10px + 75%) 50%] assert_equals: expected "calc ( 75 % - 10px ) 50 % " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) 50 % "
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px center] at (0.75) should be [calc(-15px + 87.5%) 50%] assert_equals: expected "calc ( 87.5 % - 15px ) 50 % " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) 50 % "
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px center] at (0.25) should be [calc(-5px + 62.5%) 50%]
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px center] at (0.5) should be [calc(-10px + 75%) 50%]
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px center] at (0.75) should be [calc(-15px + 87.5%) 50%]
 PASS CSS Transitions: property <background-position> from [center center] to [right 20px center] at (1) should be [calc(-20px + 100%) 50%]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px center] at (0) should be [50% 50%]
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px center] at (0.25) should be [calc(-5px + 62.5%) 50%] assert_equals: expected "calc ( 62.5 % - 5px ) 50 % " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) 50 % "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px center] at (0.5) should be [calc(-10px + 75%) 50%] assert_equals: expected "calc ( 75 % - 10px ) 50 % " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) 50 % "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px center] at (0.75) should be [calc(-15px + 87.5%) 50%] assert_equals: expected "calc ( 87.5 % - 15px ) 50 % " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) 50 % "
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px center] at (0.25) should be [calc(-5px + 62.5%) 50%]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px center] at (0.5) should be [calc(-10px + 75%) 50%]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px center] at (0.75) should be [calc(-15px + 87.5%) 50%]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px center] at (1) should be [calc(-20px + 100%) 50%]
 PASS CSS Animations: property <background-position> from [center center] to [right 20px center] at (0) should be [50% 50%]
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px center] at (0.25) should be [calc(-5px + 62.5%) 50%] assert_equals: expected "calc ( 62.5 % - 5px ) 50 % " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) 50 % "
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px center] at (0.5) should be [calc(-10px + 75%) 50%] assert_equals: expected "calc ( 75 % - 10px ) 50 % " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) 50 % "
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px center] at (0.75) should be [calc(-15px + 87.5%) 50%] assert_equals: expected "calc ( 87.5 % - 15px ) 50 % " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) 50 % "
+PASS CSS Animations: property <background-position> from [center center] to [right 20px center] at (0.25) should be [calc(-5px + 62.5%) 50%]
+PASS CSS Animations: property <background-position> from [center center] to [right 20px center] at (0.5) should be [calc(-10px + 75%) 50%]
+PASS CSS Animations: property <background-position> from [center center] to [right 20px center] at (0.75) should be [calc(-15px + 87.5%) 50%]
 PASS CSS Animations: property <background-position> from [center center] to [right 20px center] at (1) should be [calc(-20px + 100%) 50%]
 PASS Web Animations: property <background-position> from [center center] to [right 20px center] at (0) should be [50% 50%]
-FAIL Web Animations: property <background-position> from [center center] to [right 20px center] at (0.25) should be [calc(-5px + 62.5%) 50%] assert_equals: expected "calc ( 62.5 % - 5px ) 50 % " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) 50 % "
-FAIL Web Animations: property <background-position> from [center center] to [right 20px center] at (0.5) should be [calc(-10px + 75%) 50%] assert_equals: expected "calc ( 75 % - 10px ) 50 % " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) 50 % "
-FAIL Web Animations: property <background-position> from [center center] to [right 20px center] at (0.75) should be [calc(-15px + 87.5%) 50%] assert_equals: expected "calc ( 87.5 % - 15px ) 50 % " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) 50 % "
+PASS Web Animations: property <background-position> from [center center] to [right 20px center] at (0.25) should be [calc(-5px + 62.5%) 50%]
+PASS Web Animations: property <background-position> from [center center] to [right 20px center] at (0.5) should be [calc(-10px + 75%) 50%]
+PASS Web Animations: property <background-position> from [center center] to [right 20px center] at (0.75) should be [calc(-15px + 87.5%) 50%]
 PASS Web Animations: property <background-position> from [center center] to [right 20px center] at (1) should be [calc(-20px + 100%) 50%]
 PASS CSS Transitions: property <background-position> from [center center] to [left 20px bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Transitions: property <background-position> from [center center] to [left 20px bottom 20px] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)] assert_equals: expected "calc ( 37.5 % + 5px ) calc ( 62.5 % - 5px ) " but got "calc ( 37.5 % + 5px ) calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions: property <background-position> from [center center] to [left 20px bottom 20px] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)] assert_equals: expected "calc ( 25 % + 10px ) calc ( 75 % - 10px ) " but got "calc ( 25 % + 10px ) calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions: property <background-position> from [center center] to [left 20px bottom 20px] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)] assert_equals: expected "calc ( 12.5 % + 15px ) calc ( 87.5 % - 15px ) " but got "calc ( 12.5 % + 15px ) calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Transitions: property <background-position> from [center center] to [left 20px bottom 20px] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)]
+PASS CSS Transitions: property <background-position> from [center center] to [left 20px bottom 20px] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)]
+PASS CSS Transitions: property <background-position> from [center center] to [left 20px bottom 20px] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)]
 PASS CSS Transitions: property <background-position> from [center center] to [left 20px bottom 20px] at (1) should be [20px calc(-20px + 100%)]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [left 20px bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [left 20px bottom 20px] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)] assert_equals: expected "calc ( 37.5 % + 5px ) calc ( 62.5 % - 5px ) " but got "calc ( 37.5 % + 5px ) calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [left 20px bottom 20px] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)] assert_equals: expected "calc ( 25 % + 10px ) calc ( 75 % - 10px ) " but got "calc ( 25 % + 10px ) calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [left 20px bottom 20px] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)] assert_equals: expected "calc ( 12.5 % + 15px ) calc ( 87.5 % - 15px ) " but got "calc ( 12.5 % + 15px ) calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [left 20px bottom 20px] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [left 20px bottom 20px] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [left 20px bottom 20px] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [left 20px bottom 20px] at (1) should be [20px calc(-20px + 100%)]
 PASS CSS Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)] assert_equals: expected "calc ( 37.5 % + 5px ) calc ( 62.5 % - 5px ) " but got "calc ( 37.5 % + 5px ) calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)] assert_equals: expected "calc ( 25 % + 10px ) calc ( 75 % - 10px ) " but got "calc ( 25 % + 10px ) calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)] assert_equals: expected "calc ( 12.5 % + 15px ) calc ( 87.5 % - 15px ) " but got "calc ( 12.5 % + 15px ) calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)]
+PASS CSS Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)]
+PASS CSS Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)]
 PASS CSS Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (1) should be [20px calc(-20px + 100%)]
 PASS Web Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0) should be [50% 50%]
-FAIL Web Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)] assert_equals: expected "calc ( 37.5 % + 5px ) calc ( 62.5 % - 5px ) " but got "calc ( 37.5 % + 5px ) calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL Web Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)] assert_equals: expected "calc ( 25 % + 10px ) calc ( 75 % - 10px ) " but got "calc ( 25 % + 10px ) calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL Web Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)] assert_equals: expected "calc ( 12.5 % + 15px ) calc ( 87.5 % - 15px ) " but got "calc ( 12.5 % + 15px ) calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS Web Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)]
+PASS Web Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)]
+PASS Web Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)]
 PASS Web Animations: property <background-position> from [center center] to [left 20px bottom 20px] at (1) should be [20px calc(-20px + 100%)]
 PASS CSS Transitions: property <background-position> from [center center] to [center bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Transitions: property <background-position> from [center center] to [center bottom 20px] at (0.25) should be [50% calc(-5px + 62.5%)] assert_equals: expected "50 % calc ( 62.5 % - 5px ) " but got "50 % calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions: property <background-position> from [center center] to [center bottom 20px] at (0.5) should be [50% calc(-10px + 75%)] assert_equals: expected "50 % calc ( 75 % - 10px ) " but got "50 % calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions: property <background-position> from [center center] to [center bottom 20px] at (0.75) should be [50% calc(-15px + 87.5%)] assert_equals: expected "50 % calc ( 87.5 % - 15px ) " but got "50 % calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Transitions: property <background-position> from [center center] to [center bottom 20px] at (0.25) should be [50% calc(-5px + 62.5%)]
+PASS CSS Transitions: property <background-position> from [center center] to [center bottom 20px] at (0.5) should be [50% calc(-10px + 75%)]
+PASS CSS Transitions: property <background-position> from [center center] to [center bottom 20px] at (0.75) should be [50% calc(-15px + 87.5%)]
 PASS CSS Transitions: property <background-position> from [center center] to [center bottom 20px] at (1) should be [50% calc(-20px + 100%)]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [center bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [center bottom 20px] at (0.25) should be [50% calc(-5px + 62.5%)] assert_equals: expected "50 % calc ( 62.5 % - 5px ) " but got "50 % calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [center bottom 20px] at (0.5) should be [50% calc(-10px + 75%)] assert_equals: expected "50 % calc ( 75 % - 10px ) " but got "50 % calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [center bottom 20px] at (0.75) should be [50% calc(-15px + 87.5%)] assert_equals: expected "50 % calc ( 87.5 % - 15px ) " but got "50 % calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [center bottom 20px] at (0.25) should be [50% calc(-5px + 62.5%)]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [center bottom 20px] at (0.5) should be [50% calc(-10px + 75%)]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [center bottom 20px] at (0.75) should be [50% calc(-15px + 87.5%)]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [center bottom 20px] at (1) should be [50% calc(-20px + 100%)]
 PASS CSS Animations: property <background-position> from [center center] to [center bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Animations: property <background-position> from [center center] to [center bottom 20px] at (0.25) should be [50% calc(-5px + 62.5%)] assert_equals: expected "50 % calc ( 62.5 % - 5px ) " but got "50 % calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Animations: property <background-position> from [center center] to [center bottom 20px] at (0.5) should be [50% calc(-10px + 75%)] assert_equals: expected "50 % calc ( 75 % - 10px ) " but got "50 % calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Animations: property <background-position> from [center center] to [center bottom 20px] at (0.75) should be [50% calc(-15px + 87.5%)] assert_equals: expected "50 % calc ( 87.5 % - 15px ) " but got "50 % calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Animations: property <background-position> from [center center] to [center bottom 20px] at (0.25) should be [50% calc(-5px + 62.5%)]
+PASS CSS Animations: property <background-position> from [center center] to [center bottom 20px] at (0.5) should be [50% calc(-10px + 75%)]
+PASS CSS Animations: property <background-position> from [center center] to [center bottom 20px] at (0.75) should be [50% calc(-15px + 87.5%)]
 PASS CSS Animations: property <background-position> from [center center] to [center bottom 20px] at (1) should be [50% calc(-20px + 100%)]
 PASS Web Animations: property <background-position> from [center center] to [center bottom 20px] at (0) should be [50% 50%]
-FAIL Web Animations: property <background-position> from [center center] to [center bottom 20px] at (0.25) should be [50% calc(-5px + 62.5%)] assert_equals: expected "50 % calc ( 62.5 % - 5px ) " but got "50 % calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL Web Animations: property <background-position> from [center center] to [center bottom 20px] at (0.5) should be [50% calc(-10px + 75%)] assert_equals: expected "50 % calc ( 75 % - 10px ) " but got "50 % calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL Web Animations: property <background-position> from [center center] to [center bottom 20px] at (0.75) should be [50% calc(-15px + 87.5%)] assert_equals: expected "50 % calc ( 87.5 % - 15px ) " but got "50 % calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS Web Animations: property <background-position> from [center center] to [center bottom 20px] at (0.25) should be [50% calc(-5px + 62.5%)]
+PASS Web Animations: property <background-position> from [center center] to [center bottom 20px] at (0.5) should be [50% calc(-10px + 75%)]
+PASS Web Animations: property <background-position> from [center center] to [center bottom 20px] at (0.75) should be [50% calc(-15px + 87.5%)]
 PASS Web Animations: property <background-position> from [center center] to [center bottom 20px] at (1) should be [50% calc(-20px + 100%)]
 PASS CSS Transitions: property <background-position> from [center center] to [right 20px bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px bottom 20px] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)] assert_equals: expected "calc ( 62.5 % - 5px ) calc ( 62.5 % - 5px ) " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px bottom 20px] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)] assert_equals: expected "calc ( 75 % - 10px ) calc ( 75 % - 10px ) " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions: property <background-position> from [center center] to [right 20px bottom 20px] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)] assert_equals: expected "calc ( 87.5 % - 15px ) calc ( 87.5 % - 15px ) " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px bottom 20px] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)]
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px bottom 20px] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)]
+PASS CSS Transitions: property <background-position> from [center center] to [right 20px bottom 20px] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)]
 PASS CSS Transitions: property <background-position> from [center center] to [right 20px bottom 20px] at (1) should be [calc(-20px + 100%) calc(-20px + 100%)]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px bottom 20px] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)] assert_equals: expected "calc ( 62.5 % - 5px ) calc ( 62.5 % - 5px ) " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px bottom 20px] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)] assert_equals: expected "calc ( 75 % - 10px ) calc ( 75 % - 10px ) " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px bottom 20px] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)] assert_equals: expected "calc ( 87.5 % - 15px ) calc ( 87.5 % - 15px ) " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px bottom 20px] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px bottom 20px] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)]
+PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px bottom 20px] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)]
 PASS CSS Transitions with transition: all: property <background-position> from [center center] to [right 20px bottom 20px] at (1) should be [calc(-20px + 100%) calc(-20px + 100%)]
 PASS CSS Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0) should be [50% 50%]
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)] assert_equals: expected "calc ( 62.5 % - 5px ) calc ( 62.5 % - 5px ) " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)] assert_equals: expected "calc ( 75 % - 10px ) calc ( 75 % - 10px ) " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL CSS Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)] assert_equals: expected "calc ( 87.5 % - 15px ) calc ( 87.5 % - 15px ) " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS CSS Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)]
+PASS CSS Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)]
+PASS CSS Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)]
 PASS CSS Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (1) should be [calc(-20px + 100%) calc(-20px + 100%)]
 PASS Web Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0) should be [50% 50%]
-FAIL Web Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)] assert_equals: expected "calc ( 62.5 % - 5px ) calc ( 62.5 % - 5px ) " but got "calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) calc ( 37.5 % + ( 0.25 * ( 100 % - 20px ) ) ) "
-FAIL Web Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)] assert_equals: expected "calc ( 75 % - 10px ) calc ( 75 % - 10px ) " but got "calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) calc ( 25 % + ( 0.5 * ( 100 % - 20px ) ) ) "
-FAIL Web Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)] assert_equals: expected "calc ( 87.5 % - 15px ) calc ( 87.5 % - 15px ) " but got "calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) calc ( 12.5 % + ( 0.75 * ( 100 % - 20px ) ) ) "
+PASS Web Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)]
+PASS Web Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)]
+PASS Web Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)]
 PASS Web Animations: property <background-position> from [center center] to [right 20px bottom 20px] at (1) should be [calc(-20px + 100%) calc(-20px + 100%)]
 PASS CSS Transitions: property <background-position> from [center] to [bottom] at (0) should be [50% 50%]
 PASS CSS Transitions: property <background-position> from [center] to [bottom] at (0.25) should be [50% 62.5%]

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -255,16 +255,16 @@
 PASS Web Animations: property <shape-outside> from [none] to [ellipse(100% 100% at 0% 0%)] at (0.6) should be [ellipse(100% 100% at 0% 0%)]
 PASS Web Animations: property <shape-outside> from [none] to [ellipse(100% 100% at 0% 0%)] at (1) should be [ellipse(100% 100% at 0% 0%)]
 PASS Web Animations: property <shape-outside> from [none] to [ellipse(100% 100% at 0% 0%)] at (1.5) should be [ellipse(100% 100% at 0% 0%)]
-FAIL CSS Transitions: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.25) should be [circle(30% at 90% calc(-20px + 100%))] assert_equals: expected "circle ( 30 % at 90 % calc ( 100 % - 20px ) ) " but got "circle ( 30 % at 90 % calc ( ( 0.75 * ( 100 % - 15px ) ) + ( 0.25 * ( 100 % - 35px ) ) ) ) "
-FAIL CSS Transitions: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.5) should be [circle(35% at 85% calc(-25px + 100%))] assert_equals: expected "circle ( 35 % at 85 % calc ( 100 % - 25px ) ) " but got "circle ( 35 % at 85 % calc ( ( 0.5 * ( 100 % - 15px ) ) + ( 0.5 * ( 100 % - 35px ) ) ) ) "
-FAIL CSS Transitions: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.75) should be [circle(40% at 80% calc(-30px + 100%))] assert_equals: expected "circle ( 40 % at 80 % calc ( 100 % - 30px ) ) " but got "circle ( 40 % at 80 % calc ( ( 0.25 * ( 100 % - 15px ) ) + ( 0.75 * ( 100 % - 35px ) ) ) ) "
-FAIL CSS Transitions with transition: all: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.25) should be [circle(30% at 90% calc(-20px + 100%))] assert_equals: expected "circle ( 30 % at 90 % calc ( 100 % - 20px ) ) " but got "circle ( 30 % at 90 % calc ( ( 0.75 * ( 100 % - 15px ) ) + ( 0.25 * ( 100 % - 35px ) ) ) ) "
-FAIL CSS Transitions with transition: all: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.5) should be [circle(35% at 85% calc(-25px + 100%))] assert_equals: expected "circle ( 35 % at 85 % calc ( 100 % - 25px ) ) " but got "circle ( 35 % at 85 % calc ( ( 0.5 * ( 100 % - 15px ) ) + ( 0.5 * ( 100 % - 35px ) ) ) ) "
-FAIL CSS Transitions with transition: all: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.75) should be [circle(40% at 80% calc(-30px + 100%))] assert_equals: expected "circle ( 40 % at 80 % calc ( 100 % - 30px ) ) " but got "circle ( 40 % at 80 % calc ( ( 0.25 * ( 100 % - 15px ) ) + ( 0.75 * ( 100 % - 35px ) ) ) ) "
-FAIL CSS Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.25) should be [circle(30% at 90% calc(-20px + 100%))] assert_equals: expected "circle ( 30 % at 90 % calc ( 100 % - 20px ) ) " but got "circle ( 30 % at 90 % calc ( ( 0.75 * ( 100 % - 15px ) ) + ( 0.25 * ( 100 % - 35px ) ) ) ) "
-FAIL CSS Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.5) should be [circle(35% at 85% calc(-25px + 100%))] assert_equals: expected "circle ( 35 % at 85 % calc ( 100 % - 25px ) ) " but got "circle ( 35 % at 85 % calc ( ( 0.5 * ( 100 % - 15px ) ) + ( 0.5 * ( 100 % - 35px ) ) ) ) "
-FAIL CSS Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.75) should be [circle(40% at 80% calc(-30px + 100%))] assert_equals: expected "circle ( 40 % at 80 % calc ( 100 % - 30px ) ) " but got "circle ( 40 % at 80 % calc ( ( 0.25 * ( 100 % - 15px ) ) + ( 0.75 * ( 100 % - 35px ) ) ) ) "
-FAIL Web Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.25) should be [circle(30% at 90% calc(-20px + 100%))] assert_equals: expected "circle ( 30 % at 90 % calc ( 100 % - 20px ) ) " but got "circle ( 30 % at 90 % calc ( ( 0.75 * ( 100 % - 15px ) ) + ( 0.25 * ( 100 % - 35px ) ) ) ) "
-FAIL Web Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.5) should be [circle(35% at 85% calc(-25px + 100%))] assert_equals: expected "circle ( 35 % at 85 % calc ( 100 % - 25px ) ) " but got "circle ( 35 % at 85 % calc ( ( 0.5 * ( 100 % - 15px ) ) + ( 0.5 * ( 100 % - 35px ) ) ) ) "
-FAIL Web Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.75) should be [circle(40% at 80% calc(-30px + 100%))] assert_equals: expected "circle ( 40 % at 80 % calc ( 100 % - 30px ) ) " but got "circle ( 40 % at 80 % calc ( ( 0.25 * ( 100 % - 15px ) ) + ( 0.75 * ( 100 % - 35px ) ) ) ) "
+PASS CSS Transitions: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.25) should be [circle(30% at 90% calc(-20px + 100%))]
+PASS CSS Transitions: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.5) should be [circle(35% at 85% calc(-25px + 100%))]
+PASS CSS Transitions: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.75) should be [circle(40% at 80% calc(-30px + 100%))]
+PASS CSS Transitions with transition: all: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.25) should be [circle(30% at 90% calc(-20px + 100%))]
+PASS CSS Transitions with transition: all: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.5) should be [circle(35% at 85% calc(-25px + 100%))]
+PASS CSS Transitions with transition: all: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.75) should be [circle(40% at 80% calc(-30px + 100%))]
+PASS CSS Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.25) should be [circle(30% at 90% calc(-20px + 100%))]
+PASS CSS Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.5) should be [circle(35% at 85% calc(-25px + 100%))]
+PASS CSS Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.75) should be [circle(40% at 80% calc(-30px + 100%))]
+PASS Web Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.25) should be [circle(30% at 90% calc(-20px + 100%))]
+PASS Web Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.5) should be [circle(35% at 85% calc(-25px + 100%))]
+PASS Web Animations: property <shape-outside> from [circle(25% at right 5% bottom 15px)] to [circle(45% at right 25% bottom 35px)] at (0.75) should be [circle(40% at 80% calc(-30px + 100%))]
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-margin-003-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-margin-003-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-margin-003-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -5,7 +5,7 @@
 PASS calc(100%/4) - inline style
 PASS calc(25%*3) - inline style
 PASS calc(25%*3 - 10in) - inline style
-FAIL calc((12.5%*6 + 10in) / 4) - inline style assert_equals: expected "calc(18.75% + 240px)" but got "calc(0.25 * (75% + 960px))"
+PASS calc((12.5%*6 + 10in) / 4) - inline style
 PASS calc(10in) - computed style
 PASS calc(10in + 20px) - computed style
 PASS calc(30%) - computed style
@@ -12,5 +12,5 @@
 PASS calc(100%/4) - computed style
 PASS calc(25%*3) - computed style
 PASS calc(25%*3 - 10in) - computed style
-FAIL calc((12.5%*6 + 10in) / 4) - computed style assert_equals: expected "calc(18.75% + 240px)" but got "calc(0.25 * (75% + 960px))"
+PASS calc((12.5%*6 + 10in) / 4) - computed style
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -5,7 +5,7 @@
 PASS circle(calc(100%/4)) - inline style
 PASS circle(calc(25%*3)) - inline style
 PASS circle(calc(25%*3 - 10in)) - inline style
-FAIL circle(calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "circle(calc(18.75% + 240px) at 50% 50%)" but got "circle(calc(0.25 * (75% + 960px)) at 50% 50%)"
+PASS circle(calc((12.5%*6 + 10in) / 4)) - inline style
 PASS circle(calc(10in)) - computed style
 PASS circle(calc(10in + 20px)) - computed style
 PASS circle(calc(30%)) - computed style
@@ -12,5 +12,5 @@
 PASS circle(calc(100%/4)) - computed style
 PASS circle(calc(25%*3)) - computed style
 PASS circle(calc(25%*3 - 10in)) - computed style
-FAIL circle(calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "circle(calc(18.75% + 240px) at 50% 50%)" but got "circle(calc(0.25 * (75% + 960px)) at 50% 50%)"
+PASS circle(calc((12.5%*6 + 10in) / 4)) - computed style
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -5,7 +5,7 @@
 PASS circle(at calc(100%/4)) - inline style
 PASS circle(at calc(25%*3)) - inline style
 PASS circle(at calc(25%*3 - 10in)) - inline style
-FAIL circle(at calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "circle(at calc(18.75% + 240px) 50%)" but got "circle(at calc(0.25 * (75% + 960px)) 50%)"
+PASS circle(at calc((12.5%*6 + 10in) / 4)) - inline style
 PASS circle(at calc(10in)) - computed style
 PASS circle(at calc(10in + 20px)) - computed style
 PASS circle(at calc(30%)) - computed style
@@ -12,5 +12,5 @@
 PASS circle(at calc(100%/4)) - computed style
 PASS circle(at calc(25%*3)) - computed style
 PASS circle(at calc(25%*3 - 10in)) - computed style
-FAIL circle(at calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "circle(at calc(18.75% + 240px) 50%)" but got "circle(at calc(0.25 * (75% + 960px)) 50%)"
+PASS circle(at calc((12.5%*6 + 10in) / 4)) - computed style
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -5,7 +5,7 @@
 PASS ellipse(farthest-side calc(100%/4)) - inline style
 PASS ellipse(farthest-side calc(25%*3)) - inline style
 PASS ellipse(farthest-side calc(25%*3 - 10in)) - inline style
-FAIL ellipse(farthest-side calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "ellipse(farthest-side calc(18.75% + 240px) at 50% 50%)" but got "ellipse(farthest-side calc(0.25 * (75% + 960px)) at 50% 50%)"
+PASS ellipse(farthest-side calc((12.5%*6 + 10in) / 4)) - inline style
 PASS ellipse(calc(10in) calc(10in)) - inline style
 PASS ellipse(calc(10in + 20px) calc(10in + 20px)) - inline style
 PASS ellipse(calc(30%) calc(30%)) - inline style
@@ -12,7 +12,7 @@
 PASS ellipse(calc(100%/4) calc(100%/4)) - inline style
 PASS ellipse(calc(25%*3) calc(25%*3)) - inline style
 PASS ellipse(calc(25%*3 - 10in) calc(25%*3 - 10in)) - inline style
-FAIL ellipse(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "ellipse(calc(18.75% + 240px) calc(18.75% + 240px) at 50% 50%)" but got "ellipse(calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)) at 50% 50%)"
+PASS ellipse(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style
 PASS ellipse(farthest-side calc(10in)) - computed style
 PASS ellipse(farthest-side calc(10in + 20px)) - computed style
 PASS ellipse(farthest-side calc(30%)) - computed style
@@ -19,7 +19,7 @@
 PASS ellipse(farthest-side calc(100%/4)) - computed style
 PASS ellipse(farthest-side calc(25%*3)) - computed style
 PASS ellipse(farthest-side calc(25%*3 - 10in)) - computed style
-FAIL ellipse(farthest-side calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "ellipse(farthest-side calc(18.75% + 240px) at 50% 50%)" but got "ellipse(farthest-side calc(0.25 * (75% + 960px)) at 50% 50%)"
+PASS ellipse(farthest-side calc((12.5%*6 + 10in) / 4)) - computed style
 PASS ellipse(calc(10in) calc(10in)) - computed style
 PASS ellipse(calc(10in + 20px) calc(10in + 20px)) - computed style
 PASS ellipse(calc(30%) calc(30%)) - computed style
@@ -26,5 +26,5 @@
 PASS ellipse(calc(100%/4) calc(100%/4)) - computed style
 PASS ellipse(calc(25%*3) calc(25%*3)) - computed style
 PASS ellipse(calc(25%*3 - 10in) calc(25%*3 - 10in)) - computed style
-FAIL ellipse(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "ellipse(calc(18.75% + 240px) calc(18.75% + 240px) at 50% 50%)" but got "ellipse(calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)) at 50% 50%)"
+PASS ellipse(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -5,7 +5,7 @@
 PASS ellipse(at calc(100%/4) 50%) - inline style
 PASS ellipse(at calc(25%*3) 50%) - inline style
 PASS ellipse(at calc(25%*3 - 10in) 50%) - inline style
-FAIL ellipse(at calc((12.5%*6 + 10in) / 4) 50%) - inline style assert_equals: expected "ellipse(at calc(18.75% + 240px) 50%)" but got "ellipse(at calc(0.25 * (75% + 960px)) 50%)"
+PASS ellipse(at calc((12.5%*6 + 10in) / 4) 50%) - inline style
 PASS ellipse(closest-side farthest-side at calc(10in) calc(10in)) - inline style
 PASS ellipse(closest-side farthest-side at calc(10in + 20px) calc(10in + 20px)) - inline style
 PASS ellipse(closest-side farthest-side at calc(30%) calc(30%)) - inline style
@@ -12,7 +12,7 @@
 PASS ellipse(closest-side farthest-side at calc(100%/4) calc(100%/4)) - inline style
 PASS ellipse(closest-side farthest-side at calc(25%*3) calc(25%*3)) - inline style
 PASS ellipse(closest-side farthest-side at calc(25%*3 - 10in) calc(25%*3 - 10in)) - inline style
-FAIL ellipse(closest-side farthest-side at calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "ellipse(closest-side farthest-side at calc(18.75% + 240px) calc(18.75% + 240px))" but got "ellipse(closest-side farthest-side at calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)))"
+PASS ellipse(closest-side farthest-side at calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style
 PASS ellipse(at calc(10in) 50%) - computed style
 PASS ellipse(at calc(10in + 20px) 50%) - computed style
 PASS ellipse(at calc(30%) 50%) - computed style
@@ -19,7 +19,7 @@
 PASS ellipse(at calc(100%/4) 50%) - computed style
 PASS ellipse(at calc(25%*3) 50%) - computed style
 PASS ellipse(at calc(25%*3 - 10in) 50%) - computed style
-FAIL ellipse(at calc((12.5%*6 + 10in) / 4) 50%) - computed style assert_equals: expected "ellipse(at calc(18.75% + 240px) 50%)" but got "ellipse(at calc(0.25 * (75% + 960px)) 50%)"
+PASS ellipse(at calc((12.5%*6 + 10in) / 4) 50%) - computed style
 PASS ellipse(closest-side farthest-side at calc(10in) calc(10in)) - computed style
 PASS ellipse(closest-side farthest-side at calc(10in + 20px) calc(10in + 20px)) - computed style
 PASS ellipse(closest-side farthest-side at calc(30%) calc(30%)) - computed style
@@ -26,5 +26,5 @@
 PASS ellipse(closest-side farthest-side at calc(100%/4) calc(100%/4)) - computed style
 PASS ellipse(closest-side farthest-side at calc(25%*3) calc(25%*3)) - computed style
 PASS ellipse(closest-side farthest-side at calc(25%*3 - 10in) calc(25%*3 - 10in)) - computed style
-FAIL ellipse(closest-side farthest-side at calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "ellipse(closest-side farthest-side at calc(18.75% + 240px) calc(18.75% + 240px))" but got "ellipse(closest-side farthest-side at calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)))"
+PASS ellipse(closest-side farthest-side at calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -5,7 +5,7 @@
 PASS inset(calc(100%/4)) - inline style
 PASS inset(calc(25%*3)) - inline style
 PASS inset(calc(25%*3 - 10in)) - inline style
-FAIL inset(calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "inset(calc(18.75% + 240px))" but got "inset(calc(0.25 * (75% + 960px)))"
+PASS inset(calc((12.5%*6 + 10in) / 4)) - inline style
 PASS inset(calc(10in) calc(10in)) - inline style
 PASS inset(calc(10in + 20px) calc(10in + 20px)) - inline style
 PASS inset(calc(30%) calc(30%)) - inline style
@@ -12,7 +12,7 @@
 PASS inset(calc(100%/4) calc(100%/4)) - inline style
 PASS inset(calc(25%*3) calc(25%*3)) - inline style
 PASS inset(calc(25%*3 - 10in) calc(25%*3 - 10in)) - inline style
-FAIL inset(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "inset(calc(18.75% + 240px))" but got "inset(calc(0.25 * (75% + 960px)))"
+PASS inset(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style
 PASS inset(calc(10in)) - computed style
 PASS inset(calc(10in + 20px)) - computed style
 PASS inset(calc(30%)) - computed style
@@ -19,7 +19,7 @@
 PASS inset(calc(100%/4)) - computed style
 PASS inset(calc(25%*3)) - computed style
 PASS inset(calc(25%*3 - 10in)) - computed style
-FAIL inset(calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "inset(calc(18.75% + 240px))" but got "inset(calc(0.25 * (75% + 960px)))"
+PASS inset(calc((12.5%*6 + 10in) / 4)) - computed style
 PASS inset(calc(10in) calc(10in)) - computed style
 PASS inset(calc(10in + 20px) calc(10in + 20px)) - computed style
 PASS inset(calc(30%) calc(30%)) - computed style
@@ -26,5 +26,5 @@
 PASS inset(calc(100%/4) calc(100%/4)) - computed style
 PASS inset(calc(25%*3) calc(25%*3)) - computed style
 PASS inset(calc(25%*3 - 10in) calc(25%*3 - 10in)) - computed style
-FAIL inset(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "inset(calc(18.75% + 240px))" but got "inset(calc(0.25 * (75% + 960px)))"
+PASS inset(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -5,7 +5,7 @@
 PASS inset(10px 10px 10px 10px round calc(100%/4)) - inline style
 PASS inset(10px 10px 10px 10px round calc(25%*3)) - inline style
 PASS inset(10px 10px 10px 10px round calc(25%*3 - 10in)) - inline style
-FAIL inset(10px 10px 10px 10px round calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "inset(10px round calc(18.75% + 240px))" but got "inset(10px round calc(0.25 * (75% + 960px)))"
+PASS inset(10px 10px 10px 10px round calc((12.5%*6 + 10in) / 4)) - inline style
 PASS inset(10px 10px 10px 10px round calc(10in) calc(10in)) - inline style
 PASS inset(10px 10px 10px 10px round calc(10in + 20px) calc(10in + 20px)) - inline style
 PASS inset(10px 10px 10px 10px round calc(30%) calc(30%)) - inline style
@@ -12,7 +12,7 @@
 PASS inset(10px 10px 10px 10px round calc(100%/4) calc(100%/4)) - inline style
 PASS inset(10px 10px 10px 10px round calc(25%*3) calc(25%*3)) - inline style
 PASS inset(10px 10px 10px 10px round calc(25%*3 - 10in) calc(25%*3 - 10in)) - inline style
-FAIL inset(10px 10px 10px 10px round calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "inset(10px round calc(18.75% + 240px))" but got "inset(10px round calc(0.25 * (75% + 960px)))"
+PASS inset(10px 10px 10px 10px round calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style
 PASS inset(10px 10px 10px 10px round calc(10in)) - computed style
 PASS inset(10px 10px 10px 10px round calc(10in + 20px)) - computed style
 PASS inset(10px 10px 10px 10px round calc(30%)) - computed style
@@ -19,7 +19,7 @@
 PASS inset(10px 10px 10px 10px round calc(100%/4)) - computed style
 PASS inset(10px 10px 10px 10px round calc(25%*3)) - computed style
 PASS inset(10px 10px 10px 10px round calc(25%*3 - 10in)) - computed style
-FAIL inset(10px 10px 10px 10px round calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "inset(10px round calc(18.75% + 240px))" but got "inset(10px round calc(0.25 * (75% + 960px)))"
+PASS inset(10px 10px 10px 10px round calc((12.5%*6 + 10in) / 4)) - computed style
 PASS inset(10px 10px 10px 10px round calc(10in) calc(10in)) - computed style
 PASS inset(10px 10px 10px 10px round calc(10in + 20px) calc(10in + 20px)) - computed style
 PASS inset(10px 10px 10px 10px round calc(30%) calc(30%)) - computed style
@@ -26,5 +26,5 @@
 PASS inset(10px 10px 10px 10px round calc(100%/4) calc(100%/4)) - computed style
 PASS inset(10px 10px 10px 10px round calc(25%*3) calc(25%*3)) - computed style
 PASS inset(10px 10px 10px 10px round calc(25%*3 - 10in) calc(25%*3 - 10in)) - computed style
-FAIL inset(10px 10px 10px 10px round calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "inset(10px round calc(18.75% + 240px))" but got "inset(10px round calc(0.25 * (75% + 960px)))"
+PASS inset(10px 10px 10px 10px round calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -5,7 +5,7 @@
 PASS polygon(calc(100%/4) calc(100%/4)) - inline style
 PASS polygon(calc(25%*3) calc(25%*3)) - inline style
 PASS polygon(calc(25%*3 - 10in) calc(25%*3 - 10in)) - inline style
-FAIL polygon(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "polygon(calc(18.75% + 240px) calc(18.75% + 240px))" but got "polygon(calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)))"
+PASS polygon(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style
 PASS polygon(evenodd, calc(10in) calc(10in), calc(10in) calc(10in)) - inline style
 PASS polygon(evenodd, calc(10in + 20px) calc(10in + 20px), calc(10in + 20px) calc(10in + 20px)) - inline style
 PASS polygon(evenodd, calc(30%) calc(30%), calc(30%) calc(30%)) - inline style
@@ -12,7 +12,7 @@
 PASS polygon(evenodd, calc(100%/4) calc(100%/4), calc(100%/4) calc(100%/4)) - inline style
 PASS polygon(evenodd, calc(25%*3) calc(25%*3), calc(25%*3) calc(25%*3)) - inline style
 PASS polygon(evenodd, calc(25%*3 - 10in) calc(25%*3 - 10in), calc(25%*3 - 10in) calc(25%*3 - 10in)) - inline style
-FAIL polygon(evenodd, calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4), calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style assert_equals: expected "polygon(evenodd, calc(18.75% + 240px) calc(18.75% + 240px), calc(18.75% + 240px) calc(18.75% + 240px))" but got "polygon(evenodd, calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)), calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)))"
+PASS polygon(evenodd, calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4), calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - inline style
 PASS polygon(calc(10in) calc(10in)) - computed style
 PASS polygon(calc(10in + 20px) calc(10in + 20px)) - computed style
 PASS polygon(calc(30%) calc(30%)) - computed style
@@ -19,7 +19,7 @@
 PASS polygon(calc(100%/4) calc(100%/4)) - computed style
 PASS polygon(calc(25%*3) calc(25%*3)) - computed style
 PASS polygon(calc(25%*3 - 10in) calc(25%*3 - 10in)) - computed style
-FAIL polygon(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "polygon(calc(18.75% + 240px) calc(18.75% + 240px))" but got "polygon(calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)))"
+PASS polygon(calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style
 PASS polygon(evenodd, calc(10in) calc(10in), calc(10in) calc(10in)) - computed style
 PASS polygon(evenodd, calc(10in + 20px) calc(10in + 20px), calc(10in + 20px) calc(10in + 20px)) - computed style
 PASS polygon(evenodd, calc(30%) calc(30%), calc(30%) calc(30%)) - computed style
@@ -26,5 +26,5 @@
 PASS polygon(evenodd, calc(100%/4) calc(100%/4), calc(100%/4) calc(100%/4)) - computed style
 PASS polygon(evenodd, calc(25%*3) calc(25%*3), calc(25%*3) calc(25%*3)) - computed style
 PASS polygon(evenodd, calc(25%*3 - 10in) calc(25%*3 - 10in), calc(25%*3 - 10in) calc(25%*3 - 10in)) - computed style
-FAIL polygon(evenodd, calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4), calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style assert_equals: expected "polygon(evenodd, calc(18.75% + 240px) calc(18.75% + 240px), calc(18.75% + 240px) calc(18.75% + 240px))" but got "polygon(evenodd, calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)), calc(0.25 * (75% + 960px)) calc(0.25 * (75% + 960px)))"
+PASS polygon(evenodd, calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4), calc((12.5%*6 + 10in) / 4) calc((12.5%*6 + 10in) / 4)) - computed style
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt (275868 => 275869)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -201,7 +201,7 @@
 FAIL flex-basis supports animating as combination units "%" and "em" assert_equals: The value should be calc(5% + 10px) at 500ms expected "calc(5% + 10px)" but got "20px"
 PASS flex-basis supports animating as combination units "em" and "rem"
 FAIL flex-basis supports animating as combination units "px" and "calc" assert_equals: The value should be calc(10% + 10px) at 500ms expected "calc(10% + 10px)" but got "calc(20% + 10px)"
-FAIL flex-basis supports animating as a calc assert_equals: The value should be calc(15% + 15px) at 500ms expected "calc(15% + 15px)" but got "calc((0.5 * (10% + 10px)) + (0.5 * (20% + 20px)))"
+PASS flex-basis supports animating as a calc
 PASS flex-basis (type: discrete) has testInterpolation function
 PASS flex-basis uses discrete animation when animating between "auto" and "10px" with linear easing
 PASS flex-basis uses discrete animation when animating between "auto" and "10px" with effect easing

Modified: trunk/LayoutTests/transitions/background-position-transitions-expected.txt (275868 => 275869)


--- trunk/LayoutTests/transitions/background-position-transitions-expected.txt	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/transitions/background-position-transitions-expected.txt	2021-04-13 08:08:24 UTC (rev 275869)
@@ -2,6 +2,6 @@
 PASS - "background-position-y" property for "box1" element at 0.5s saw something close to: 60px
 PASS - "background-position-x" property for "box2" element at 0.5s saw something close to: 45px
 PASS - "background-position-y" property for "box2" element at 0.5s saw something close to: 60px
-PASS - "background-position-x" property for "box3" element at 0.5s saw something close to: calc(5px + (0.5 * (100% - 80px)))
-PASS - "background-position-y" property for "box3" element at 0.5s saw something close to: calc(10px + (0.5 * (100% - 100px)))
+PASS - "background-position-x" property for "box3" element at 0.5s saw something close to: calc(50% - 35px)
+PASS - "background-position-y" property for "box3" element at 0.5s saw something close to: calc(50% - 40px)
 

Modified: trunk/LayoutTests/transitions/background-position-transitions.html (275868 => 275869)


--- trunk/LayoutTests/transitions/background-position-transitions.html	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/LayoutTests/transitions/background-position-transitions.html	2021-04-13 08:08:24 UTC (rev 275869)
@@ -45,8 +45,8 @@
         [0.5, 'box1', 'background-position-y', "60px"],
         [0.5, 'box2', 'background-position-x', "45px"],
         [0.5, 'box2', 'background-position-y', "60px"],
-        [0.5, 'box3', 'background-position-x', "calc(5px + (0.5 * (100% - 80px)))"],
-        [0.5, 'box3', 'background-position-y', "calc(10px + (0.5 * (100% - 100px)))"],
+        [0.5, 'box3', 'background-position-x', "calc(50% - 35px)"],
+        [0.5, 'box3', 'background-position-y', "calc(50% - 40px)"],
         ];
 
         function setupTest()

Modified: trunk/Source/WebCore/ChangeLog (275868 => 275869)


--- trunk/Source/WebCore/ChangeLog	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/Source/WebCore/ChangeLog	2021-04-13 08:08:24 UTC (rev 275869)
@@ -1,3 +1,17 @@
+2021-04-13  Antoine Quint  <grao...@webkit.org>
+
+        calc() simplification for a multiplication should apply the multiplication to each value of an addition
+        https://bugs.webkit.org/show_bug.cgi?id=224376
+
+        Reviewed by Simon Fraser.
+
+        An _expression_ such as calc(0.5 * (100% + 100px)) should be simplified to calc(50% + 50px). We produce
+        these types of expressions when blending between a percentage and a dimension, and they can also be
+        specified explicitly in style.
+
+        * css/CSSCalculationValue.cpp:
+        (WebCore::CSSCalcOperationNode::combineChildren):
+
 2021-04-13  Said Abou-Hallawa  <s...@apple.com>
 
         SVG paced value animations overwrite user-provided keyTimes

Modified: trunk/Source/WebCore/css/CSSCalculationValue.cpp (275868 => 275869)


--- trunk/Source/WebCore/css/CSSCalculationValue.cpp	2021-04-13 08:05:24 UTC (rev 275868)
+++ trunk/Source/WebCore/css/CSSCalculationValue.cpp	2021-04-13 08:08:24 UTC (rev 275869)
@@ -835,7 +835,7 @@
     };
     static void buildCSSTextRecursive(const CSSCalcExpressionNode&, StringBuilder&, GroupingParens = GroupingParens::Include);
 
-    const CalcOperator m_operator;
+    CalcOperator m_operator;
     Vector<Ref<CSSCalcExpressionNode>> m_children;
 };
 
@@ -1119,17 +1119,39 @@
         // which is a Sum whose children are all numeric values, multiply all of the Sum’s children by the number, then
         // return the Sum.
         // The Sum's children simplification will have happened already.
-        bool didMultipy = false;
+        bool didMultiply = false;
         if (leadingNumberNodeCount && m_children.size() - leadingNumberNodeCount == 1) {
             auto multiplicandCategory = calcUnitCategory(primitiveTypeForCombination(m_children.last().get()));
             if (multiplicandCategory != CalculationCategory::Other) {
                 newChildren.uncheckedAppend(m_children.last().copyRef());
                 downcast<CSSCalcPrimitiveValueNode>(newChildren[0].get()).multiply(multiplier);
-                didMultipy = true;
+                didMultiply = true;
+            } else if (is<CSSCalcOperationNode>(m_children.last().get()) && downcast<CSSCalcOperationNode>(m_children.last().get()).calcOperator() == CalcOperator::Add) {
+                // If we're multiplying with another operation that is an addition and all the added children
+                // are percentages or dimensions, we should multiply each child and make this _expression_ an
+                // addition.
+                auto allChildrenArePrimitiveValues = [](const Vector<Ref<CSSCalcExpressionNode>>& children) -> bool
+                {
+                    for (auto& child : children) {
+                        if (!is<CSSCalcPrimitiveValueNode>(child.get()))
+                            return false;
+                    }
+                    return true;
+                };
+
+                auto& children = downcast<CSSCalcOperationNode>(m_children.last().get()).children();
+                if (allChildrenArePrimitiveValues(children)) {
+                    for (auto& child : children) {
+                        newChildren.append(child.copyRef());
+                        downcast<CSSCalcPrimitiveValueNode>(newChildren.last().get()).multiply(multiplier);
+                    }
+                    m_operator = CalcOperator::Add;
+                    didMultiply = true;
+                }
             }
         }
-        
-        if (!didMultipy) {
+
+        if (!didMultiply) {
             if (leadingNumberNodeCount) {
                 auto multiplierNode = CSSCalcPrimitiveValueNode::create(CSSPrimitiveValue::create(multiplier, CSSUnitType::CSS_NUMBER));
                 newChildren.uncheckedAppend(WTFMove(multiplierNode));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to