Title: [276231] trunk
Revision
276231
Author
grao...@webkit.org
Date
2021-04-18 11:12:23 -0700 (Sun, 18 Apr 2021)

Log Message

Fix interpolation of the rotate CSS property
https://bugs.webkit.org/show_bug.cgi?id=224730

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark 123 WPT progressions.

* web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt:
* web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt:
* web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt:
* web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
* web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
* web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

Implement the CSS Transforms spec about animating the rotateZ() function
for the simplified case where only the angle is interpolated.

* platform/graphics/transforms/RotateTransformOperation.cpp:
(WebCore::RotateTransformOperation::blend):

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (276230 => 276231)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2021-04-18 18:12:23 UTC (rev 276231)
@@ -1,3 +1,19 @@
+2021-04-18  Antoine Quint  <grao...@webkit.org>
+
+        Fix interpolation of the rotate CSS property
+        https://bugs.webkit.org/show_bug.cgi?id=224730
+
+        Reviewed by Dean Jackson.
+
+        Mark 123 WPT progressions.
+
+        * web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt:
+        * web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt:
+        * web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt:
+        * web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
+        * web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
+        * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:
+
 2021-04-18  Cathie Chen  <cathiec...@igalia.com>
 
         The implicit aspect-ratio from width and height attributes with float value is not accurate enough

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt (276230 => 276231)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt	2021-04-18 18:12:23 UTC (rev 276231)
@@ -35,34 +35,34 @@
 FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [0 1 0 100deg] at (0.75) should be [-1.51909e-17 1 -4.55726e-17 75deg] assert_equals: expected "0 1 0 75deg " but got "- 0.11 0.93 - 0.34 71.18deg "
 PASS Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [0 1 0 100deg] at (1) should be [0 1 0 100deg]
 FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [0 1 0 100deg] at (2) should be [-3.3235e-17 -1 -9.97049e-17 160deg] assert_equals: expected "0 - 1 0 160deg " but got "- 0.22 - 0.73 - 0.65 120.66deg "
-FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (-1) should be [-6.12323e-17 -1 1.57009e-16 90deg] assert_equals: expected "0 - 1 0 90deg " but got "0 1 0 270deg "
-FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (0) should be [-4.32978e-17 -0.707107 -0.707107 180deg] assert_equals: expected "0 - 0.71 - 0.71 180deg " but got "0 1 0 180deg "
-FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (0.25) should be [-1.48952e-16 -0.894427 -0.447214 131.81deg] assert_equals: expected "0 - 0.89 - 0.45 131.81deg " but got "0 1 0 157.5deg "
-FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (0.75) should be [-2.94392e-17 -0.707107 0.707107 70.5288deg] assert_equals: expected "0 - 0.71 0.71 70.53deg " but got "0 1 0 112.5deg "
-FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (1) should be [90deg] assert_equals: expected "90deg " but got "0 1 0 90deg "
-FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (2) should be [-6.12323e-17 -1 -4.71028e-16 90deg] assert_equals: expected "0 - 1 0 90deg " but got "none "
-FAIL Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (-1) should be [0 1 0 -100deg] assert_equals: expected "0 1 0 - 100deg " but got "- 100deg "
+FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (-1) should be [-6.12323e-17 -1 1.57009e-16 90deg] assert_equals: expected "0 - 1 0 90deg " but got "y 90deg "
+FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (0) should be [-4.32978e-17 -0.707107 -0.707107 180deg] assert_equals: expected "0 - 0.71 - 0.71 180deg " but got "0 - 1 0 180deg "
+FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (0.25) should be [-1.48952e-16 -0.894427 -0.447214 131.81deg] assert_equals: expected "0 - 0.89 - 0.45 131.81deg " but got "0 0.96 0.28 148.6deg "
+FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (0.75) should be [-2.94392e-17 -0.707107 0.707107 70.5288deg] assert_equals: expected "0 - 0.71 0.71 70.53deg " but got "0 0.51 0.86 98.42deg "
+PASS Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (1) should be [90deg]
+FAIL Compositing: property <rotate> underlying [1 0 0 90deg] from add [0 1 0 180deg] to replace [0 0 1 90deg] at (2) should be [-6.12323e-17 -1 -4.71028e-16 90deg] assert_equals: expected "0 - 1 0 90deg " but got "0 - 1 0 180deg "
+PASS Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (-1) should be [0 1 0 -100deg]
 PASS Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (0) should be [none]
-FAIL Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (0.25) should be [0 1 0 25deg] assert_equals: expected "0 1 0 25deg " but got "25deg "
-FAIL Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (0.75) should be [0 1 0 75deg] assert_equals: expected "0 1 0 75deg " but got "75deg "
-FAIL Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (1) should be [0 1 0 100deg] assert_equals: expected "0 1 0 100deg " but got "100deg "
-FAIL Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (2) should be [0 1 0 200deg] assert_equals: expected "0 1 0 200deg " but got "200deg "
-FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (-1) should be [2 4 6 540deg] assert_equals: expected "2 4 6 540deg " but got "none "
-FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (0) should be [2 4 6 270deg] assert_equals: expected "2 4 6 270deg " but got "- 0.27 - 0.53 - 0.8 90deg "
-FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (0.25) should be [2 4 6 202.5deg] assert_equals: expected "2 4 6 202.5deg " but got "- 0.25 - 0.58 - 0.77 79.33deg "
-FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (0.75) should be [2 4 6 67.5deg] assert_equals: expected "2 4 6 67.5deg " but got "0.08 - 0.75 - 0.65 9.63deg "
+PASS Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (0.25) should be [0 1 0 25deg]
+PASS Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (0.75) should be [0 1 0 75deg]
+PASS Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (1) should be [0 1 0 100deg]
+PASS Compositing: property <rotate> underlying [none] from add [none] to replace [0 1 0 100deg] at (2) should be [0 1 0 200deg]
+FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (-1) should be [2 4 6 540deg] assert_equals: expected "2 4 6 540deg " but got "0.27 0.53 0.8 540deg "
+FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (0) should be [2 4 6 270deg] assert_equals: expected "2 4 6 270deg " but got "0.27 0.53 0.8 270deg "
+FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (0.25) should be [2 4 6 202.5deg] assert_equals: expected "2 4 6 202.5deg " but got "0.27 0.53 0.8 202.5deg "
+FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (0.75) should be [2 4 6 67.5deg] assert_equals: expected "2 4 6 67.5deg " but got "0.27 0.53 0.8 67.5deg "
 PASS Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (1) should be [none]
-FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (2) should be [2 4 6 -270deg] assert_equals: expected "2 4 6 - 270deg " but got "- 0.27 - 0.53 - 0.8 90deg "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (-1) should be [0.31 -0.22 0.92 131.66deg] assert_equals: expected "0.31 - 0.22 0.92 131.66deg " but got "- 100deg "
+FAIL Compositing: property <rotate> underlying [none] from add [2 4 6 270deg] to replace [none] at (2) should be [2 4 6 -270deg] assert_equals: expected "2 4 6 - 270deg " but got "0.27 0.53 0.8 - 270deg "
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (-1) should be [0.31 -0.22 0.92 131.66deg] assert_equals: expected "0.31 - 0.22 0.92 131.66deg " but got "0 1 0 - 100deg "
 FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (0) should be [1 2 3 90deg] assert_equals: expected "1 2 3 90deg " but got "none "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (0.25) should be [0.21 0.73 0.64 86.72deg] assert_equals: expected "0.21 0.73 0.64 86.72deg " but got "25deg "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (0.75) should be [0.07 0.97 0.21 92.05deg] assert_equals: expected "0.07 0.97 0.21 92.05deg " but got "75deg "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (1) should be [0 1 0 100deg] assert_equals: expected "0 1 0 100deg " but got "100deg "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (2) should be [-0.2 0.79 -0.59 151.11deg] assert_equals: expected "- 0.2 0.79 - 0.59 151.11deg " but got "200deg "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (-1) should be [1 2 3 720deg] assert_equals: expected "1 2 3 720deg " but got "none "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (0) should be [1 2 3 360deg] assert_equals: expected "1 2 3 360deg " but got "- 0.27 - 0.53 - 0.8 90deg "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (0.25) should be [1 2 3 270deg] assert_equals: expected "1 2 3 270deg " but got "- 0.25 - 0.58 - 0.77 79.33deg "
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (0.75) should be [1 2 3 90deg] assert_equals: expected "1 2 3 90deg " but got "0.08 - 0.75 - 0.65 9.63deg "
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (0.25) should be [0.21 0.73 0.64 86.72deg] assert_equals: expected "0.21 0.73 0.64 86.72deg " but got "0 1 0 25deg "
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (0.75) should be [0.07 0.97 0.21 92.05deg] assert_equals: expected "0.07 0.97 0.21 92.05deg " but got "0 1 0 75deg "
+PASS Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (1) should be [0 1 0 100deg]
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [none] to replace [0 1 0 100deg] at (2) should be [-0.2 0.79 -0.59 151.11deg] assert_equals: expected "- 0.2 0.79 - 0.59 151.11deg " but got "0 1 0 200deg "
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (-1) should be [1 2 3 720deg] assert_equals: expected "1 2 3 720deg " but got "0.27 0.53 0.8 540deg "
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (0) should be [1 2 3 360deg] assert_equals: expected "1 2 3 360deg " but got "0.27 0.53 0.8 270deg "
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (0.25) should be [1 2 3 270deg] assert_equals: expected "1 2 3 270deg " but got "0.27 0.53 0.8 202.5deg "
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (0.75) should be [1 2 3 90deg] assert_equals: expected "1 2 3 90deg " but got "0.27 0.53 0.8 67.5deg "
 PASS Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (1) should be [none]
-FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (2) should be [1 2 3 -360deg] assert_equals: expected "1 2 3 - 360deg " but got "- 0.27 - 0.53 - 0.8 90deg "
+FAIL Compositing: property <rotate> underlying [1 2 3 90deg] from add [2 4 6 270deg] to replace [none] at (2) should be [1 2 3 -360deg] assert_equals: expected "1 2 3 - 360deg " but got "0.27 0.53 0.8 - 270deg "
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt (276230 => 276231)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt	2021-04-18 18:12:23 UTC (rev 276231)
@@ -23,54 +23,54 @@
 PASS Web Animations: property <rotate> from [100deg] to [180deg] at (0.875) should be [170deg]
 PASS Web Animations: property <rotate> from [100deg] to [180deg] at (1) should be [180deg]
 PASS Web Animations: property <rotate> from [100deg] to [180deg] at (2) should be [260deg]
-FAIL CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg] assert_equals: expected "0.45 - 0.45 0.77 104.48deg " but got "30deg "
+PASS CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg]
 PASS CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (0) should be [z 45deg]
-FAIL CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg] assert_equals: expected "- 0.14 0.14 0.98 40.6deg " but got "46.88deg "
-FAIL CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg] assert_equals: expected "- 0.7 0.7 0.11 53.2deg " but got "58.13deg "
-FAIL CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (1) should be [-0.71 0.71 0 60deg] assert_equals: expected "- 0.71 0.71 0 60deg " but got "60deg "
-FAIL CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg] assert_equals: expected "- 0.64 0.64 - 0.43 124.97deg " but got "75deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg] assert_equals: expected "0.45 - 0.45 0.77 104.48deg " but got "30deg "
+PASS CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg]
+PASS CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg]
+PASS CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (1) should be [-0.71 0.71 0 60deg]
+FAIL CSS Transitions: property <rotate> from [45deg] to [-1 1 0 60deg] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg] assert_equals: expected "- 0.64 0.64 - 0.43 124.97deg " but got "- 0.64 0.64 - 0.43 124.98deg "
+PASS CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg]
 PASS CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (0) should be [z 45deg]
-FAIL CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg] assert_equals: expected "- 0.14 0.14 0.98 40.6deg " but got "46.88deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg] assert_equals: expected "- 0.7 0.7 0.11 53.2deg " but got "58.13deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (1) should be [-0.71 0.71 0 60deg] assert_equals: expected "- 0.71 0.71 0 60deg " but got "60deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg] assert_equals: expected "- 0.64 0.64 - 0.43 124.97deg " but got "75deg "
-FAIL CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg] assert_equals: expected "0.45 - 0.45 0.77 104.48deg " but got "30deg "
+PASS CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg]
+PASS CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg]
+PASS CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (1) should be [-0.71 0.71 0 60deg]
+FAIL CSS Transitions with transition: all: property <rotate> from [45deg] to [-1 1 0 60deg] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg] assert_equals: expected "- 0.64 0.64 - 0.43 124.97deg " but got "- 0.64 0.64 - 0.43 124.98deg "
+PASS CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg]
 PASS CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0) should be [z 45deg]
-FAIL CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg] assert_equals: expected "- 0.14 0.14 0.98 40.6deg " but got "46.88deg "
-FAIL CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg] assert_equals: expected "- 0.7 0.7 0.11 53.2deg " but got "58.13deg "
-FAIL CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (1) should be [-0.71 0.71 0 60deg] assert_equals: expected "- 0.71 0.71 0 60deg " but got "60deg "
-FAIL CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg] assert_equals: expected "- 0.64 0.64 - 0.43 124.97deg " but got "75deg "
-FAIL Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg] assert_equals: expected "0.45 - 0.45 0.77 104.48deg " but got "30deg "
+PASS CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg]
+PASS CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg]
+PASS CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (1) should be [-0.71 0.71 0 60deg]
+FAIL CSS Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg] assert_equals: expected "- 0.64 0.64 - 0.43 124.97deg " but got "- 0.64 0.64 - 0.43 124.98deg "
+PASS Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg]
 PASS Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0) should be [z 45deg]
-FAIL Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg] assert_equals: expected "- 0.14 0.14 0.98 40.6deg " but got "46.88deg "
-FAIL Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg] assert_equals: expected "- 0.7 0.7 0.11 53.2deg " but got "58.13deg "
-FAIL Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (1) should be [-0.71 0.71 0 60deg] assert_equals: expected "- 0.71 0.71 0 60deg " but got "60deg "
-FAIL Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg] assert_equals: expected "- 0.64 0.64 - 0.43 124.97deg " but got "75deg "
-FAIL CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (-1) should be [0.5 -0.57 0.65 -400grad] assert_equals: expected "0.5 - 0.57 0.65 - 360deg " but got "- 360deg "
+PASS Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg]
+PASS Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg]
+PASS Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (1) should be [-0.71 0.71 0 60deg]
+FAIL Web Animations: property <rotate> from [45deg] to [-1 1 0 60deg] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg] assert_equals: expected "- 0.64 0.64 - 0.43 124.97deg " but got "- 0.64 0.64 - 0.43 124.98deg "
+PASS CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (-1) should be [0.5 -0.57 0.65 -400grad]
 PASS CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (0) should be [0.5 -0.57 0.65 0deg]
-FAIL CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (0.125) should be [0.5 -0.57 0.65 50grad] assert_equals: expected "0.5 - 0.57 0.65 45deg " but got "45deg "
-FAIL CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (0.875) should be [0.5 -0.57 0.65 350grad] assert_equals: expected "0.5 - 0.57 0.65 315deg " but got "315deg "
-FAIL CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (1) should be [0.5 -0.57 0.65 400grad] assert_equals: expected "0.5 - 0.57 0.65 360deg " but got "360deg "
-FAIL CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (2) should be [0.5 -0.57 0.65 800grad] assert_equals: expected "0.5 - 0.57 0.65 720deg " but got "720deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (-1) should be [0.5 -0.57 0.65 -400grad] assert_equals: expected "0.5 - 0.57 0.65 - 360deg " but got "- 360deg "
+PASS CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (0.125) should be [0.5 -0.57 0.65 50grad]
+PASS CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (0.875) should be [0.5 -0.57 0.65 350grad]
+PASS CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (1) should be [0.5 -0.57 0.65 400grad]
+PASS CSS Transitions: property <rotate> from [none] to [7 -8 9 400grad] at (2) should be [0.5 -0.57 0.65 800grad]
+PASS CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (-1) should be [0.5 -0.57 0.65 -400grad]
 PASS CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (0) should be [0.5 -0.57 0.65 0deg]
-FAIL CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (0.125) should be [0.5 -0.57 0.65 50grad] assert_equals: expected "0.5 - 0.57 0.65 45deg " but got "45deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (0.875) should be [0.5 -0.57 0.65 350grad] assert_equals: expected "0.5 - 0.57 0.65 315deg " but got "315deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (1) should be [0.5 -0.57 0.65 400grad] assert_equals: expected "0.5 - 0.57 0.65 360deg " but got "360deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (2) should be [0.5 -0.57 0.65 800grad] assert_equals: expected "0.5 - 0.57 0.65 720deg " but got "720deg "
-FAIL CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (-1) should be [0.5 -0.57 0.65 -400grad] assert_equals: expected "0.5 - 0.57 0.65 - 360deg " but got "- 360deg "
+PASS CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (0.125) should be [0.5 -0.57 0.65 50grad]
+PASS CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (0.875) should be [0.5 -0.57 0.65 350grad]
+PASS CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (1) should be [0.5 -0.57 0.65 400grad]
+PASS CSS Transitions with transition: all: property <rotate> from [none] to [7 -8 9 400grad] at (2) should be [0.5 -0.57 0.65 800grad]
+PASS CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (-1) should be [0.5 -0.57 0.65 -400grad]
 PASS CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0) should be [0.5 -0.57 0.65 0deg]
-FAIL CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0.125) should be [0.5 -0.57 0.65 50grad] assert_equals: expected "0.5 - 0.57 0.65 45deg " but got "45deg "
-FAIL CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0.875) should be [0.5 -0.57 0.65 350grad] assert_equals: expected "0.5 - 0.57 0.65 315deg " but got "315deg "
-FAIL CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (1) should be [0.5 -0.57 0.65 400grad] assert_equals: expected "0.5 - 0.57 0.65 360deg " but got "360deg "
-FAIL CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (2) should be [0.5 -0.57 0.65 800grad] assert_equals: expected "0.5 - 0.57 0.65 720deg " but got "720deg "
-FAIL Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (-1) should be [0.5 -0.57 0.65 -400grad] assert_equals: expected "0.5 - 0.57 0.65 - 360deg " but got "- 360deg "
+PASS CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0.125) should be [0.5 -0.57 0.65 50grad]
+PASS CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0.875) should be [0.5 -0.57 0.65 350grad]
+PASS CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (1) should be [0.5 -0.57 0.65 400grad]
+PASS CSS Animations: property <rotate> from [none] to [7 -8 9 400grad] at (2) should be [0.5 -0.57 0.65 800grad]
+PASS Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (-1) should be [0.5 -0.57 0.65 -400grad]
 PASS Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0) should be [0.5 -0.57 0.65 0deg]
-FAIL Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0.125) should be [0.5 -0.57 0.65 50grad] assert_equals: expected "0.5 - 0.57 0.65 45deg " but got "45deg "
-FAIL Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0.875) should be [0.5 -0.57 0.65 350grad] assert_equals: expected "0.5 - 0.57 0.65 315deg " but got "315deg "
-FAIL Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (1) should be [0.5 -0.57 0.65 400grad] assert_equals: expected "0.5 - 0.57 0.65 360deg " but got "360deg "
-FAIL Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (2) should be [0.5 -0.57 0.65 800grad] assert_equals: expected "0.5 - 0.57 0.65 720deg " but got "720deg "
+PASS Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0.125) should be [0.5 -0.57 0.65 50grad]
+PASS Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (0.875) should be [0.5 -0.57 0.65 350grad]
+PASS Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (1) should be [0.5 -0.57 0.65 400grad]
+PASS Web Animations: property <rotate> from [none] to [7 -8 9 400grad] at (2) should be [0.5 -0.57 0.65 800grad]
 PASS CSS Transitions: property <rotate> from [none] to [none] at (-1) should be [none]
 PASS CSS Transitions: property <rotate> from [none] to [none] at (0) should be [none]
 PASS CSS Transitions: property <rotate> from [none] to [none] at (0.125) should be [none]
@@ -239,54 +239,54 @@
 PASS Web Animations: property <rotate> from [0 1 0 100deg] to [0 1 0 -100deg] at (0.75) should be [0 1 0 -50deg]
 PASS Web Animations: property <rotate> from [0 1 0 100deg] to [0 1 0 -100deg] at (1) should be [0 1 0 -100deg]
 PASS Web Animations: property <rotate> from [0 1 0 100deg] to [0 1 0 -100deg] at (2) should be [0 1 0 -300deg]
-FAIL CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (-1) should be [0.22 -0.55 0.8 300deg] assert_equals: expected "0.22 - 0.55 0.8 300deg " but got "- 0.22 0.55 - 0.8 60deg "
+PASS CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (-1) should be [0.22 -0.55 0.8 300deg]
 PASS CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0) should be [0.22 -0.55 0.8 100deg]
-FAIL CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.25) should be [0.22 -0.55 0.8 50deg] assert_equals: expected "0.22 - 0.55 0.8 50deg " but got "0.22 - 0.55 0.8 140deg "
-FAIL CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.75) should be [0.22 -0.55 0.8 -50deg] assert_equals: expected "0.22 - 0.55 0.8 - 50deg " but got "- 0.22 0.55 - 0.8 140deg "
-FAIL CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (1) should be [0.22 -0.55 0.8 -100deg] assert_equals: expected "0.22 - 0.55 0.8 - 100deg " but got "- 0.22 0.55 - 0.8 100deg "
-FAIL CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (2) should be [0.22 -0.55 0.8 -300deg] assert_equals: expected "0.22 - 0.55 0.8 - 300deg " but got "0.22 - 0.55 0.8 60deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (-1) should be [0.22 -0.55 0.8 300deg] assert_equals: expected "0.22 - 0.55 0.8 300deg " but got "- 0.22 0.55 - 0.8 60deg "
+PASS CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.25) should be [0.22 -0.55 0.8 50deg]
+PASS CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.75) should be [0.22 -0.55 0.8 -50deg]
+PASS CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (1) should be [0.22 -0.55 0.8 -100deg]
+PASS CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (2) should be [0.22 -0.55 0.8 -300deg]
+PASS CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (-1) should be [0.22 -0.55 0.8 300deg]
 PASS CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0) should be [0.22 -0.55 0.8 100deg]
-FAIL CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.25) should be [0.22 -0.55 0.8 50deg] assert_equals: expected "0.22 - 0.55 0.8 50deg " but got "0.22 - 0.55 0.8 140deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.75) should be [0.22 -0.55 0.8 -50deg] assert_equals: expected "0.22 - 0.55 0.8 - 50deg " but got "- 0.22 0.55 - 0.8 140deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (1) should be [0.22 -0.55 0.8 -100deg] assert_equals: expected "0.22 - 0.55 0.8 - 100deg " but got "- 0.22 0.55 - 0.8 100deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (2) should be [0.22 -0.55 0.8 -300deg] assert_equals: expected "0.22 - 0.55 0.8 - 300deg " but got "0.22 - 0.55 0.8 60deg "
-FAIL CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (-1) should be [0.22 -0.55 0.8 300deg] assert_equals: expected "0.22 - 0.55 0.8 300deg " but got "- 0.22 0.55 - 0.8 60deg "
+PASS CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.25) should be [0.22 -0.55 0.8 50deg]
+PASS CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.75) should be [0.22 -0.55 0.8 -50deg]
+PASS CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (1) should be [0.22 -0.55 0.8 -100deg]
+PASS CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (2) should be [0.22 -0.55 0.8 -300deg]
+PASS CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (-1) should be [0.22 -0.55 0.8 300deg]
 PASS CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0) should be [0.22 -0.55 0.8 100deg]
-FAIL CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.25) should be [0.22 -0.55 0.8 50deg] assert_equals: expected "0.22 - 0.55 0.8 50deg " but got "0.22 - 0.55 0.8 140deg "
-FAIL CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.75) should be [0.22 -0.55 0.8 -50deg] assert_equals: expected "0.22 - 0.55 0.8 - 50deg " but got "- 0.22 0.55 - 0.8 140deg "
-FAIL CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (1) should be [0.22 -0.55 0.8 -100deg] assert_equals: expected "0.22 - 0.55 0.8 - 100deg " but got "- 0.22 0.55 - 0.8 100deg "
-FAIL CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (2) should be [0.22 -0.55 0.8 -300deg] assert_equals: expected "0.22 - 0.55 0.8 - 300deg " but got "0.22 - 0.55 0.8 60deg "
-FAIL Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (-1) should be [0.22 -0.55 0.8 300deg] assert_equals: expected "0.22 - 0.55 0.8 300deg " but got "- 0.22 0.55 - 0.8 60deg "
+PASS CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.25) should be [0.22 -0.55 0.8 50deg]
+PASS CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.75) should be [0.22 -0.55 0.8 -50deg]
+PASS CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (1) should be [0.22 -0.55 0.8 -100deg]
+PASS CSS Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (2) should be [0.22 -0.55 0.8 -300deg]
+PASS Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (-1) should be [0.22 -0.55 0.8 300deg]
 PASS Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0) should be [0.22 -0.55 0.8 100deg]
-FAIL Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.25) should be [0.22 -0.55 0.8 50deg] assert_equals: expected "0.22 - 0.55 0.8 50deg " but got "0.22 - 0.55 0.8 140deg "
-FAIL Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.75) should be [0.22 -0.55 0.8 -50deg] assert_equals: expected "0.22 - 0.55 0.8 - 50deg " but got "- 0.22 0.55 - 0.8 140deg "
-FAIL Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (1) should be [0.22 -0.55 0.8 -100deg] assert_equals: expected "0.22 - 0.55 0.8 - 100deg " but got "- 0.22 0.55 - 0.8 100deg "
-FAIL Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (2) should be [0.22 -0.55 0.8 -300deg] assert_equals: expected "0.22 - 0.55 0.8 - 300deg " but got "0.22 - 0.55 0.8 60deg "
-FAIL CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (-1) should be [0 1 0 -10deg] assert_equals: expected "0 1 0 - 10deg " but got "1 0 0 - 10deg "
+PASS Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.25) should be [0.22 -0.55 0.8 50deg]
+PASS Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (0.75) should be [0.22 -0.55 0.8 -50deg]
+PASS Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (1) should be [0.22 -0.55 0.8 -100deg]
+PASS Web Animations: property <rotate> from [1 -2.5 3.64 100deg] to [1 -2.5 3.64 -100deg] at (2) should be [0.22 -0.55 0.8 -300deg]
+PASS CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (-1) should be [0 1 0 -10deg]
 PASS CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0) should be [0 1 0 0deg]
-FAIL CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.25) should be [0 1 0 2.5deg] assert_equals: expected "0 1 0 2.5deg " but got "1 0 0 2.5deg "
-FAIL CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.75) should be [0 1 0 7.5deg] assert_equals: expected "0 1 0 7.5deg " but got "1 0 0 7.5deg "
-FAIL CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (1) should be [0 1 0 10deg] assert_equals: expected "0 1 0 10deg " but got "1 0 0 10deg "
-FAIL CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (2) should be [0 1 0 20deg] assert_equals: expected "0 1 0 20deg " but got "1 0 0 20deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (-1) should be [0 1 0 -10deg] assert_equals: expected "0 1 0 - 10deg " but got "1 0 0 - 10deg "
+PASS CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.25) should be [0 1 0 2.5deg]
+PASS CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.75) should be [0 1 0 7.5deg]
+PASS CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (1) should be [0 1 0 10deg]
+PASS CSS Transitions: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (2) should be [0 1 0 20deg]
+PASS CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (-1) should be [0 1 0 -10deg]
 PASS CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0) should be [0 1 0 0deg]
-FAIL CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.25) should be [0 1 0 2.5deg] assert_equals: expected "0 1 0 2.5deg " but got "1 0 0 2.5deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.75) should be [0 1 0 7.5deg] assert_equals: expected "0 1 0 7.5deg " but got "1 0 0 7.5deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (1) should be [0 1 0 10deg] assert_equals: expected "0 1 0 10deg " but got "1 0 0 10deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (2) should be [0 1 0 20deg] assert_equals: expected "0 1 0 20deg " but got "1 0 0 20deg "
-FAIL CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (-1) should be [0 1 0 -10deg] assert_equals: expected "0 1 0 - 10deg " but got "1 0 0 - 10deg "
+PASS CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.25) should be [0 1 0 2.5deg]
+PASS CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.75) should be [0 1 0 7.5deg]
+PASS CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (1) should be [0 1 0 10deg]
+PASS CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (2) should be [0 1 0 20deg]
+PASS CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (-1) should be [0 1 0 -10deg]
 PASS CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0) should be [0 1 0 0deg]
-FAIL CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.25) should be [0 1 0 2.5deg] assert_equals: expected "0 1 0 2.5deg " but got "1 0 0 2.5deg "
-FAIL CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.75) should be [0 1 0 7.5deg] assert_equals: expected "0 1 0 7.5deg " but got "1 0 0 7.5deg "
-FAIL CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (1) should be [0 1 0 10deg] assert_equals: expected "0 1 0 10deg " but got "1 0 0 10deg "
-FAIL CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (2) should be [0 1 0 20deg] assert_equals: expected "0 1 0 20deg " but got "1 0 0 20deg "
-FAIL Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (-1) should be [0 1 0 -10deg] assert_equals: expected "0 1 0 - 10deg " but got "1 0 0 - 10deg "
+PASS CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.25) should be [0 1 0 2.5deg]
+PASS CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.75) should be [0 1 0 7.5deg]
+PASS CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (1) should be [0 1 0 10deg]
+PASS CSS Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (2) should be [0 1 0 20deg]
+PASS Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (-1) should be [0 1 0 -10deg]
 PASS Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0) should be [0 1 0 0deg]
-FAIL Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.25) should be [0 1 0 2.5deg] assert_equals: expected "0 1 0 2.5deg " but got "1 0 0 2.5deg "
-FAIL Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.75) should be [0 1 0 7.5deg] assert_equals: expected "0 1 0 7.5deg " but got "1 0 0 7.5deg "
-FAIL Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (1) should be [0 1 0 10deg] assert_equals: expected "0 1 0 10deg " but got "1 0 0 10deg "
-FAIL Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (2) should be [0 1 0 20deg] assert_equals: expected "0 1 0 20deg " but got "1 0 0 20deg "
+PASS Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.25) should be [0 1 0 2.5deg]
+PASS Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (0.75) should be [0 1 0 7.5deg]
+PASS Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (1) should be [0 1 0 10deg]
+PASS Web Animations: property <rotate> from [1 0 0 0deg] to [0 1 0 10deg] at (2) should be [0 1 0 20deg]
 FAIL CSS Transitions: property <rotate> from [1 1 0 90deg] to [0 1 1 135deg] at (-1) should be [0.67 -0.06 -0.74 124.97deg] assert_equals: expected "0.67 - 0.06 - 0.74 124.97deg " but got "0.67 - 0.06 - 0.74 124.98deg "
 PASS CSS Transitions: property <rotate> from [1 1 0 90deg] to [0 1 1 135deg] at (0) should be [0.71 0.71 0 90deg]
 PASS CSS Transitions: property <rotate> from [1 1 0 90deg] to [0 1 1 135deg] at (0.25) should be [0.54 0.8 0.26 94.83deg]
@@ -311,30 +311,30 @@
 PASS Web Animations: property <rotate> from [1 1 0 90deg] to [0 1 1 135deg] at (0.75) should be [0.17 0.78 0.61 118.68deg]
 PASS Web Animations: property <rotate> from [1 1 0 90deg] to [0 1 1 135deg] at (1) should be [0 0.71 0.71 135deg]
 FAIL Web Animations: property <rotate> from [1 1 0 90deg] to [0 1 1 135deg] at (2) should be [-0.52 0.29 0.81 208.96deg] assert_equals: expected "- 0.52 0.29 0.81 208.96deg " but got "0.52 - 0.29 - 0.81 151.04deg "
-FAIL CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (-1) should be [1 0 0 -450deg] assert_equals: expected "1 0 0 - 450deg " but got "0 1 0 - 450deg "
+PASS CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (-1) should be [1 0 0 -450deg]
 PASS CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0) should be [1 0 0 0deg]
-FAIL CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.25) should be [1 0 0 112.5deg] assert_equals: expected "1 0 0 112.5deg " but got "0 1 0 112.5deg "
-FAIL CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.75) should be [1 0 0 337.5deg] assert_equals: expected "1 0 0 337.5deg " but got "0 1 0 337.5deg "
-FAIL CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (1) should be [1 0 0 450deg] assert_equals: expected "1 0 0 450deg " but got "0 1 0 450deg "
-FAIL CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (2) should be [1 0 0 900deg] assert_equals: expected "1 0 0 900deg " but got "0 1 0 900deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (-1) should be [1 0 0 -450deg] assert_equals: expected "1 0 0 - 450deg " but got "0 1 0 - 450deg "
+PASS CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.25) should be [1 0 0 112.5deg]
+PASS CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.75) should be [1 0 0 337.5deg]
+PASS CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (1) should be [1 0 0 450deg]
+PASS CSS Transitions: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (2) should be [1 0 0 900deg]
+PASS CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (-1) should be [1 0 0 -450deg]
 PASS CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0) should be [1 0 0 0deg]
-FAIL CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.25) should be [1 0 0 112.5deg] assert_equals: expected "1 0 0 112.5deg " but got "0 1 0 112.5deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.75) should be [1 0 0 337.5deg] assert_equals: expected "1 0 0 337.5deg " but got "0 1 0 337.5deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (1) should be [1 0 0 450deg] assert_equals: expected "1 0 0 450deg " but got "0 1 0 450deg "
-FAIL CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (2) should be [1 0 0 900deg] assert_equals: expected "1 0 0 900deg " but got "0 1 0 900deg "
-FAIL CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (-1) should be [1 0 0 -450deg] assert_equals: expected "1 0 0 - 450deg " but got "0 1 0 - 450deg "
+PASS CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.25) should be [1 0 0 112.5deg]
+PASS CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.75) should be [1 0 0 337.5deg]
+PASS CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (1) should be [1 0 0 450deg]
+PASS CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (2) should be [1 0 0 900deg]
+PASS CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (-1) should be [1 0 0 -450deg]
 PASS CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0) should be [1 0 0 0deg]
-FAIL CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.25) should be [1 0 0 112.5deg] assert_equals: expected "1 0 0 112.5deg " but got "0 1 0 112.5deg "
-FAIL CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.75) should be [1 0 0 337.5deg] assert_equals: expected "1 0 0 337.5deg " but got "0 1 0 337.5deg "
-FAIL CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (1) should be [1 0 0 450deg] assert_equals: expected "1 0 0 450deg " but got "0 1 0 450deg "
-FAIL CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (2) should be [1 0 0 900deg] assert_equals: expected "1 0 0 900deg " but got "0 1 0 900deg "
-FAIL Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (-1) should be [1 0 0 -450deg] assert_equals: expected "1 0 0 - 450deg " but got "0 1 0 - 450deg "
+PASS CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.25) should be [1 0 0 112.5deg]
+PASS CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.75) should be [1 0 0 337.5deg]
+PASS CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (1) should be [1 0 0 450deg]
+PASS CSS Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (2) should be [1 0 0 900deg]
+PASS Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (-1) should be [1 0 0 -450deg]
 PASS Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0) should be [1 0 0 0deg]
-FAIL Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.25) should be [1 0 0 112.5deg] assert_equals: expected "1 0 0 112.5deg " but got "0 1 0 112.5deg "
-FAIL Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.75) should be [1 0 0 337.5deg] assert_equals: expected "1 0 0 337.5deg " but got "0 1 0 337.5deg "
-FAIL Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (1) should be [1 0 0 450deg] assert_equals: expected "1 0 0 450deg " but got "0 1 0 450deg "
-FAIL Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (2) should be [1 0 0 900deg] assert_equals: expected "1 0 0 900deg " but got "0 1 0 900deg "
+PASS Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.25) should be [1 0 0 112.5deg]
+PASS Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (0.75) should be [1 0 0 337.5deg]
+PASS Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (1) should be [1 0 0 450deg]
+PASS Web Animations: property <rotate> from [0 1 0 0deg] to [1 0 0 450deg] at (2) should be [1 0 0 900deg]
 PASS CSS Transitions: property <rotate> from [1 0 0 450deg] to [0 1 0 0deg] at (-1) should be [1 0 0 900deg]
 PASS CSS Transitions: property <rotate> from [1 0 0 450deg] to [0 1 0 0deg] at (0) should be [1 0 0 450deg]
 PASS CSS Transitions: property <rotate> from [1 0 0 450deg] to [0 1 0 0deg] at (0.25) should be [1 0 0 337.5deg]

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt (276230 => 276231)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt	2021-04-18 18:12:23 UTC (rev 276231)
@@ -239,30 +239,30 @@
 PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
 PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
 PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
-FAIL CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)] assert_equals: expected "matrix3d ( 0.25 , - 0.36 , 0.9 , 0 , 0.93 , 0.33 , - 0.13 , 0 , - 0.25 , 0.87 , 0.42 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.25 , 0.93 , - 0.25 , 0 , - 0.36 , 0.33 , 0.87 , 0 , 0.9 , - 0.13 , 0.42 , 0 , 0 , 0 , 0 , 1 ) "
+PASS CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
 PASS CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0) should be [rotate3d(7, 8, 9, 0deg)]
-FAIL CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)] assert_equals: expected "matrix3d ( - 0.03 , 1 , - 0.08 , 0 , - 0.2 , 0.07 , 0.98 , 0 , 0.98 , 0.05 , 0.19 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.99 , 0.15 , - 0.04 , 0 , - 0.14 , 0.98 , 0.14 , 0 , 0.06 , - 0.14 , 0.99 , 0 , 0 , 0 , 0 , 1 ) "
-FAIL CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)] assert_equals: expected "matrix3d ( 0.94 , - 0.23 , 0.24 , 0 , 0.27 , 0.95 , - 0.16 , 0 , - 0.2 , 0.22 , 0.96 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.4 , 0.88 , - 0.24 , 0 , - 0.37 , 0.39 , 0.84 , 0 , 0.84 , - 0.25 , 0.49 , 0 , 0 , 0 , 0 , 1 ) "
+PASS CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)]
+PASS CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)]
 PASS CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
-FAIL CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)] assert_equals: expected "matrix3d ( - 0.49 , 0.58 , 0.65 , 0 , 0.58 , - 0.34 , 0.74 , 0 , 0.65 , 0.74 , - 0.16 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix ( 1 , 0 , 0 , 1 , 0 , 0 ) "
-FAIL CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)] assert_equals: expected "matrix3d ( 0.25 , - 0.36 , 0.9 , 0 , 0.93 , 0.33 , - 0.13 , 0 , - 0.25 , 0.87 , 0.42 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.25 , 0.93 , - 0.25 , 0 , - 0.36 , 0.33 , 0.87 , 0 , 0.9 , - 0.13 , 0.42 , 0 , 0 , 0 , 0 , 1 ) "
+PASS CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
+PASS CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
 PASS CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0) should be [rotate3d(7, 8, 9, 0deg)]
-FAIL CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)] assert_equals: expected "matrix3d ( - 0.03 , 1 , - 0.08 , 0 , - 0.2 , 0.07 , 0.98 , 0 , 0.98 , 0.05 , 0.19 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.99 , 0.15 , - 0.04 , 0 , - 0.14 , 0.98 , 0.14 , 0 , 0.06 , - 0.14 , 0.99 , 0 , 0 , 0 , 0 , 1 ) "
-FAIL CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)] assert_equals: expected "matrix3d ( 0.94 , - 0.23 , 0.24 , 0 , 0.27 , 0.95 , - 0.16 , 0 , - 0.2 , 0.22 , 0.96 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.4 , 0.88 , - 0.24 , 0 , - 0.37 , 0.39 , 0.84 , 0 , 0.84 , - 0.25 , 0.49 , 0 , 0 , 0 , 0 , 1 ) "
+PASS CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)]
+PASS CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)]
 PASS CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
-FAIL CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)] assert_equals: expected "matrix3d ( - 0.49 , 0.58 , 0.65 , 0 , 0.58 , - 0.34 , 0.74 , 0 , 0.65 , 0.74 , - 0.16 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix ( 1 , 0 , 0 , 1 , 0 , 0 ) "
-FAIL CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)] assert_equals: expected "matrix3d ( 0.25 , - 0.36 , 0.9 , 0 , 0.93 , 0.33 , - 0.13 , 0 , - 0.25 , 0.87 , 0.42 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.25 , 0.93 , - 0.25 , 0 , - 0.36 , 0.33 , 0.87 , 0 , 0.9 , - 0.13 , 0.42 , 0 , 0 , 0 , 0 , 1 ) "
+PASS CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
+PASS CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
 PASS CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0) should be [rotate3d(7, 8, 9, 0deg)]
-FAIL CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)] assert_equals: expected "matrix3d ( - 0.03 , 1 , - 0.08 , 0 , - 0.2 , 0.07 , 0.98 , 0 , 0.98 , 0.05 , 0.19 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.99 , 0.15 , - 0.04 , 0 , - 0.14 , 0.98 , 0.14 , 0 , 0.06 , - 0.14 , 0.99 , 0 , 0 , 0 , 0 , 1 ) "
-FAIL CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)] assert_equals: expected "matrix3d ( 0.94 , - 0.23 , 0.24 , 0 , 0.27 , 0.95 , - 0.16 , 0 , - 0.2 , 0.22 , 0.96 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.4 , 0.88 , - 0.24 , 0 , - 0.37 , 0.39 , 0.84 , 0 , 0.84 , - 0.25 , 0.49 , 0 , 0 , 0 , 0 , 1 ) "
+PASS CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)]
+PASS CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)]
 PASS CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
-FAIL CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)] assert_equals: expected "matrix3d ( - 0.49 , 0.58 , 0.65 , 0 , 0.58 , - 0.34 , 0.74 , 0 , 0.65 , 0.74 , - 0.16 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix ( 1 , 0 , 0 , 1 , 0 , 0 ) "
-FAIL Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)] assert_equals: expected "matrix3d ( 0.25 , - 0.36 , 0.9 , 0 , 0.93 , 0.33 , - 0.13 , 0 , - 0.25 , 0.87 , 0.42 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.25 , 0.93 , - 0.25 , 0 , - 0.36 , 0.33 , 0.87 , 0 , 0.9 , - 0.13 , 0.42 , 0 , 0 , 0 , 0 , 1 ) "
+PASS CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
+PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
 PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0) should be [rotate3d(7, 8, 9, 0deg)]
-FAIL Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)] assert_equals: expected "matrix3d ( - 0.03 , 1 , - 0.08 , 0 , - 0.2 , 0.07 , 0.98 , 0 , 0.98 , 0.05 , 0.19 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.99 , 0.15 , - 0.04 , 0 , - 0.14 , 0.98 , 0.14 , 0 , 0.06 , - 0.14 , 0.99 , 0 , 0 , 0 , 0 , 1 ) "
-FAIL Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)] assert_equals: expected "matrix3d ( 0.94 , - 0.23 , 0.24 , 0 , 0.27 , 0.95 , - 0.16 , 0 , - 0.2 , 0.22 , 0.96 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 0.4 , 0.88 , - 0.24 , 0 , - 0.37 , 0.39 , 0.84 , 0 , 0.84 , - 0.25 , 0.49 , 0 , 0 , 0 , 0 , 1 ) "
+PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)]
+PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)]
 PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
-FAIL Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)] assert_equals: expected "matrix3d ( - 0.49 , 0.58 , 0.65 , 0 , 0.58 , - 0.34 , 0.74 , 0 , 0.65 , 0.74 , - 0.16 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix ( 1 , 0 , 0 , 1 , 0 , 0 ) "
+PASS Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
 PASS CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 1, 0, 450deg)] at (-1) should be [rotate3d(0, 1, 0, -450deg)]
 PASS CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 1, 0, 450deg)] at (0) should be [rotate3d(0, 1, 0, 0deg)]
 PASS CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 1, 0, 450deg)] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)]

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt (276230 => 276231)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt	2021-04-18 18:12:23 UTC (rev 276231)
@@ -173,7 +173,7 @@
 PASS rotate (type: rotateList) has testAccumulation function
 FAIL rotate without rotation axes assert_equals: The value should be -45deg at 0ms expected "-45deg" but got "-90deg"
 FAIL rotate with underlying transform assert_equals: The value should be x 45deg at 0ms expected "x 45deg" but got "1 0 0 90deg"
-FAIL rotate with different rotation axes assert_approx_equals: expected 0.707107 0 0.707107 90deg but got 0 1 0 90deg: The value should be 0.707107 0 0.707107 90deg at 500ms but got 0 1 0 90deg expected 0.707107 +/- 0.0001 but got 0
+PASS rotate with different rotation axes
 PASS translate (type: translateList) has testAccumulation function
 FAIL translate assert_equals: The value should be -100px at 0ms expected "-100px" but got "-200px"
 FAIL translate with transform assert_equals: The value should be -100px at 0ms expected "-100px" but got "-200px"

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt (276230 => 276231)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt	2021-04-18 18:12:23 UTC (rev 276231)
@@ -168,7 +168,7 @@
 PASS rotate (type: rotateList) has testAddition function
 FAIL rotate without rotation axes assert_equals: The value should be -45deg at 0ms expected "-45deg" but got "-90deg"
 FAIL rotate with underlying transform assert_equals: The value should be y 45deg at 0ms expected "y 45deg" but got "0 1 0 90deg"
-FAIL rotate with different rotation axes assert_approx_equals: expected 0.57735 0.57735 0.57735 135deg but got 0 1 0 135deg: The value should be 0.57735 0.57735 0.57735 135deg at 500ms but got 0 1 0 135deg expected 0.57735 +/- 0.0001 but got 0
+PASS rotate with different rotation axes
 PASS translate (type: translateList) has testAddition function
 FAIL translate assert_equals: The value should be -100px at 0ms expected "-100px" but got "-200px"
 FAIL translate with underlying transform assert_equals: The value should be -100px at 0ms expected "-100px" but got "-200px"

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


--- trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt	2021-04-18 18:12:23 UTC (rev 276231)
@@ -192,7 +192,7 @@
 FAIL transform: extend shorter list (to) assert_approx_equals: expected matrix(-1, 0, 0, -1, -50, 0) but got matrix(1, 0, 0, 1, 50, 0): The value should be matrix(-1, 0, 0, -1, -50, 0) at 500ms but got matrix(1, 0, 0, 1, 50, 0) expected -1 +/- 0.0001 but got 1
 PASS transform: mismatch order of translate and rotate
 PASS transform: matrix
-FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.853553, 0.146447, -0.5, 0, 0.146447, 0.853553, 0.5, 0, 0.5, -0.5, 0.707107, 0, 0, 0, 0, 1) but got matrix3d(0.866025, 0.288675, -0.408248, 0, 0, 0.816497, 0.57735, 0, 0.5, -0.5, 0.707107, 0, 0, 0, 0, 1): The value should be matrix3d(0.853553, 0.146447, -0.5, 0, 0.146447, 0.853553, 0.5, 0, 0.5, -0.5, 0.707107, 0, 0, 0, 0, 1) at 500ms but got matrix3d(0.866025, 0.288675, -0.408248, 0, 0, 0.816497, 0.57735, 0, 0.5, -0.5, 0.707107, 0, 0, 0, 0, 1) expected 0.853553 +/- 0.0001 but got 0.866025
+PASS transform: rotate3d
 PASS transform: matrix3d
 PASS transform: mismatched 3D transforms
 PASS transform: rotateY
@@ -212,7 +212,7 @@
 PASS rotate without rotation axes
 FAIL rotate with rotation axes assert_equals: The value should be y 45deg at 500ms expected "y 45deg" but got "0 1 0 45deg"
 FAIL rotate with rotation axes and range over 360 degrees assert_equals: The value should be y 180deg at 250ms expected "y 180deg" but got "0 1 0 180deg"
-FAIL rotate with different rotation axes assert_approx_equals: expected 0 0.707107 0.707107 45deg but got 0 1 0 45deg: The value should be 0 0.707107 0.707107 45deg at 500ms but got 0 1 0 45deg expected 0.707107 +/- 0.0001 but got 1
+PASS rotate with different rotation axes
 PASS translate (type: translateList) has testInterpolation function
 PASS translate with two unspecified values
 PASS translate with one unspecified value

Modified: trunk/Source/WebCore/ChangeLog (276230 => 276231)


--- trunk/Source/WebCore/ChangeLog	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/Source/WebCore/ChangeLog	2021-04-18 18:12:23 UTC (rev 276231)
@@ -1,3 +1,16 @@
+2021-04-18  Antoine Quint  <grao...@webkit.org>
+
+        Fix interpolation of the rotate CSS property
+        https://bugs.webkit.org/show_bug.cgi?id=224730
+
+        Reviewed by Dean Jackson.
+
+        Implement the CSS Transforms spec about animating the rotateZ() function
+        for the simplified case where only the angle is interpolated.
+
+        * platform/graphics/transforms/RotateTransformOperation.cpp:
+        (WebCore::RotateTransformOperation::blend):
+
 2021-04-18  Youenn Fablet  <you...@apple.com>
 
         Blob URLs should use for their owner origin for CSP checks

Modified: trunk/Source/WebCore/platform/graphics/transforms/RotateTransformOperation.cpp (276230 => 276231)


--- trunk/Source/WebCore/platform/graphics/transforms/RotateTransformOperation.cpp	2021-04-18 16:42:06 UTC (rev 276230)
+++ trunk/Source/WebCore/platform/graphics/transforms/RotateTransformOperation.cpp	2021-04-18 18:12:23 UTC (rev 276231)
@@ -46,20 +46,33 @@
         return RotateTransformOperation::create(m_x, m_y, m_z, m_angle - m_angle * context.progress, type());
     
     const RotateTransformOperation* fromOp = downcast<RotateTransformOperation>(from);
-    
-    // Optimize for single axis rotation
-    if (!fromOp || (fromOp->m_x == 0 && fromOp->m_y == 0 && fromOp->m_z == 1) || 
-                   (fromOp->m_x == 0 && fromOp->m_y == 1 && fromOp->m_z == 0) || 
-                   (fromOp->m_x == 1 && fromOp->m_y == 0 && fromOp->m_z == 0)) {
-        double fromAngle = fromOp ? fromOp->m_angle : 0;
-        return RotateTransformOperation::create(fromOp ? fromOp->m_x : m_x, 
-                                                fromOp ? fromOp->m_y : m_y, 
-                                                fromOp ? fromOp->m_z : m_z, 
-                                                WebCore::blend(fromAngle, m_angle, context), type());
+    const RotateTransformOperation* toOp = this;
+
+    // Interpolation of primitives and derived transform functions
+    //
+    // https://drafts.csswg.org/css-transforms-2/#interpolation-of-transform-functions
+    //
+    // For interpolations with the primitive rotate3d(), the direction vectors of the transform functions get
+    // normalized first. If the normalized vectors are not equal and both rotation angles are non-zero the transform
+    // functions get converted into 4x4 matrices first and interpolated as defined in section Interpolation of Matrices
+    // afterwards. Otherwise the rotation angle gets interpolated numerically and the rotation vector of the non-zero
+    // angle is used or (0, 0, 1) if both angles are zero.
+
+    auto normalizedVector = [](const RotateTransformOperation& op) -> FloatPoint3D {
+        FloatPoint3D vector { static_cast<float>(op.m_x), static_cast<float>(op.m_y), static_cast<float>(op.m_z) };
+        vector.normalize();
+        return vector;
+    };
+
+    double fromAngle = fromOp ? fromOp->m_angle : 0.0;
+    double toAngle = toOp->m_angle;
+    auto fromNormalizedVector = fromOp ? normalizedVector(*fromOp) : FloatPoint3D(0, 0, 1);
+    auto toNormalizedVector = normalizedVector(*toOp);
+    if (!fromAngle || !toAngle || fromNormalizedVector == toNormalizedVector) {
+        auto vector = (!fromAngle && toAngle) ? toNormalizedVector : fromNormalizedVector;
+        return RotateTransformOperation::create(vector.x(), vector.y(), vector.z(), WebCore::blend(fromAngle, toAngle, context), type());
     }
 
-    const RotateTransformOperation* toOp = this;
-
     // Create the 2 rotation matrices
     TransformationMatrix fromT;
     TransformationMatrix toT;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to