[Web Animations] Animated transform styles are ignored when calling getComputedStyle()
authorgraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Mar 2018 11:45:40 +0000 (11:45 +0000)
committergraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Mar 2018 11:45:40 +0000 (11:45 +0000)
https://bugs.webkit.org/show_bug.cgi?id=183918

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

We obtain one more PASS by correctly serializing the transform property on getComputedStyle().

* css-animations/test_animation-cancel-expected.txt:

LayoutTests/imported/w3c:

We obtain a number of progressions by correctly serializing the transform property on getComputedStyle().

* web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
* web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
* web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:
* web-platform-tests/web-animations/interfaces/Animation/cancel-expected.txt:

Source/WebCore:

Strictly looking at whether the renderer has a transform is a bad idea when determining whether a
transform is applied for an element. Looking at the RenderStyle is preferable because in the case
of animations running on the compositor, such as a transform-only animation or transition, the
renderer doesn't necessarily have a transform style on it, since we don't blend properties in
software as the animation progresses. Instead, all of the blending is performed by the compositor,
and only the computed style object has the software-blended transform style on it.

We do need to account for inline renderers though as these do not support transforms.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::computedTransform):

LayoutTests:

We obtain a number of progressions by correctly serializing the transform property on getComputedStyle().

* platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
* platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@229889 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 files changed:
LayoutTests/ChangeLog
LayoutTests/imported/mozilla/ChangeLog
LayoutTests/imported/mozilla/css-animations/test_animation-cancel-expected.txt
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/cancel-expected.txt
LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/css/CSSComputedStyleDeclaration.cpp

index 5e98ab7..5168952 100644 (file)
@@ -1,3 +1,15 @@
+2018-03-23  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Animated transform styles are ignored when calling getComputedStyle()
+        https://bugs.webkit.org/show_bug.cgi?id=183918
+
+        Reviewed by Dean Jackson.
+
+        We obtain a number of progressions by correctly serializing the transform property on getComputedStyle().
+
+        * platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
+        * platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
+
 2018-03-23  Zan Dobersek  <zdobersek@igalia.com>
 
         Unreviewed GTK+ gardening.
index 00d96f6..3cc73a8 100644 (file)
@@ -1,3 +1,14 @@
+2018-03-23  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Animated transform styles are ignored when calling getComputedStyle()
+        https://bugs.webkit.org/show_bug.cgi?id=183918
+
+        Reviewed by Dean Jackson.
+
+        We obtain one more PASS by correctly serializing the transform property on getComputedStyle().
+
+        * css-animations/test_animation-cancel-expected.txt:
+
 2018-03-22  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] Support "transition: all" for CSS Transitions as Web Animations
index 0d6211f..9cd9ef7 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL Animated style is cleared after cancelling a running CSS animation assert_not_equals: transform style is animated before cancelling got disallowed value "none"
+PASS Animated style is cleared after cancelling a running CSS animation 
 PASS Animated style is cleared after cancelling a filling CSS animation 
 PASS After canceling an animation, it can still be seeked 
 PASS After cancelling an animation, it can still be re-used 
index e18c144..39c683c 100644 (file)
@@ -1,3 +1,17 @@
+2018-03-23  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Animated transform styles are ignored when calling getComputedStyle()
+        https://bugs.webkit.org/show_bug.cgi?id=183918
+
+        Reviewed by Dean Jackson.
+
+        We obtain a number of progressions by correctly serializing the transform property on getComputedStyle().
+
+        * web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
+        * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
+        * web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:
+        * web-platform-tests/web-animations/interfaces/Animation/cancel-expected.txt:
+
 2018-03-22  Frederic Wang  <fwang@igalia.com>
 
         [MathML] Import WPT test to replace mathml/opentype/large-operators-italic-correction.html
index 0a7d5ca..d9007a0 100644 (file)
@@ -207,12 +207,12 @@ FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,100,0) but
 FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.4999999999999999
 FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5000000000000001
 FAIL transform: none assert_equals: dimension of the matrix: The value should be matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1) at 0ms but got matrix(1, 0, 0, 1, 0, 0) expected 16 but got 6
-FAIL transform: non-invertible matrices (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in matched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in matched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in mismatched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in mismatched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices (non-invertible onto invertible) assert_approx_equals: expected matrix(1,1,0,0,0,100) but got matrix(1, 1, 0, 0, 49.999999999999986, 49.999999999999986): The value should be matrix(1,1,0,0,0,100) at 0ms but got matrix(1, 1, 0, 0, 49.999999999999986, 49.999999999999986) expected 0 +/- 0.0001 but got 49.999999999999986
+PASS transform: non-invertible matrices (invertible onto non-invertible) 
+PASS transform: non-invertible matrices in matched transform lists (non-invertible onto invertible) 
+PASS transform: non-invertible matrices in matched transform lists (invertible onto non-invertible) 
+PASS transform: non-invertible matrices in mismatched transform lists (non-invertible onto invertible) 
+PASS transform: non-invertible matrices in mismatched transform lists (invertible onto non-invertible) 
 PASS visibility (type: visibility) has testAccumulation function 
 FAIL visibility: onto "visible" assert_equals: The value should be visible at 1000ms expected "visible" but got "hidden"
 PASS visibility: onto "hidden" 
index 24f14c6..0b05d9b 100644 (file)
@@ -236,21 +236,21 @@ FAIL text-shadow: mismatched list length (from longer to shorter) assert_equals:
 FAIL text-shadow: mismatched list length (from shorter to longer) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.501961) 5px 5px 5px"
 FAIL text-shadow: with currentcolor assert_equals: The value should be rgb(0, 255, 0) 5px 5px 5px at 500ms expected "rgb(0, 255, 0) 5px 5px 5px" but got "rgb(0, 0, 0) 5px 5px 5px"
 PASS transform (type: transformList) has testInterpolation function 
-FAIL transform: translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: scale assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: skew assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: rotate and translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: mismatch order of translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: matrix assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: rotate3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: matrix3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: mismatched 3D transforms assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: rotateY assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in matched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in mismatched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+PASS transform: translate 
+PASS transform: rotate 
+PASS transform: scale 
+FAIL transform: skew assert_approx_equals: expected matrix(1,0.9999999999999999,0.9999999999999999,1,0,0) but got matrix(1.1153550716504106, 0.9659258262890682, 0.9659258262890681, 1.1153550716504106, 0, 0): The value should be matrix(1,0.9999999999999999,0.9999999999999999,1,0,0) at 500ms but got matrix(1.1153550716504106, 0.9659258262890682, 0.9659258262890681, 1.1153550716504106, 0, 0) expected 1 +/- 0.0001 but got 1.1153550716504106
+PASS transform: rotate and translate 
+FAIL transform: translate and rotate assert_approx_equals: expected matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,9.184850993605149e-15,150) but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, -35.35533905932736, 106.06601717798213): The value should be matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,9.184850993605149e-15,150) at 500ms but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, -35.35533905932736, 106.06601717798213) expected 9.184850993605149e-15 +/- 0.0001 but got -35.35533905932736
+PASS transform: mismatch order of translate and rotate 
+PASS transform: matrix 
+FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.7499999999999999, 0.2499999999999999, -0.3535533905932737, 0, 0.24999999999999983, 0.75, 0.3535533905932737, 0, 0.35355339059327373, -0.3535533905932737, 0.5000000000000002, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,0,0,0,1) at 500ms but got matrix3d(0.7499999999999999, 0.2499999999999999, -0.3535533905932737, 0, 0.24999999999999983, 0.75, 0.3535533905932737, 0, 0.35355339059327373, -0.3535533905932737, 0.5000000000000002, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.7499999999999999
+PASS transform: matrix3d 
+PASS transform: mismatched 3D transforms 
+FAIL transform: rotateY assert_approx_equals: expected matrix3d(0.8660254037844387,0,-0.49999999999999994,0,0,1,0,0,0.49999999999999994,0,0.8660254037844387,0,0,0,0,1) but got matrix3d(0.75, 0, -0.4330127018922192, 0, 0, 1, 0, 0, 0.4330127018922192, 0, 0.75, 0, 0, 0, 0, 1): The value should be matrix3d(0.8660254037844387,0,-0.49999999999999994,0,0,1,0,0,0.49999999999999994,0,0.8660254037844387,0,0,0,0,1) at 500ms but got matrix3d(0.75, 0, -0.4330127018922192, 0, 0, 1, 0, 0, 0.4330127018922192, 0, 0.75, 0, 0, 0, 0, 1) expected 0.8660254037844387 +/- 0.0001 but got 0.75
+FAIL transform: non-invertible matrices assert_approx_equals: expected matrix(-1,0,0,-1,200,0) but got matrix(-0.0706572801427673, 0.719997959550522, -0.39514637992795165, -0.26007870466007205, 87.65015, 62.44984999999999): The value should be matrix(-1,0,0,-1,200,0) at 499ms but got matrix(-0.0706572801427673, 0.719997959550522, -0.39514637992795165, -0.26007870466007205, 87.65015, 62.44984999999999) expected -1 +/- 0.0001 but got -0.0706572801427673
+FAIL transform: non-invertible matrices in matched transform lists assert_approx_equals: expected matrix(0,-1,1,0,250,0) but got matrix(-0.7873989159254222, -1.115200903528419, 0.1364810122627057, -0.19136080826235746, 112.65025, 49.89999999999999): The value should be matrix(0,-1,1,0,250,0) at 499ms but got matrix(-0.7873989159254222, -1.115200903528419, 0.1364810122627057, -0.19136080826235746, 112.65025, 49.89999999999999) expected 0 +/- 0.0001 but got -0.7873989159254222
+FAIL transform: non-invertible matrices in mismatched transform lists assert_approx_equals: expected matrix(-2,0,0,-2,250,0) but got matrix(0.457235039557905, 1.5761580466297944, -1.1176085646538838, -0.6572212090027189, 112.65025, 49.89999999999999): The value should be matrix(-2,0,0,-2,250,0) at 499ms but got matrix(0.457235039557905, 1.5761580466297944, -1.1176085646538838, -0.6572212090027189, 112.65025, 49.89999999999999) expected -2 +/- 0.0001 but got 0.457235039557905
 PASS visibility (type: visibility) has testInterpolation function 
 PASS visibility uses visibility animation when animating from "visible" to "hidden" 
 PASS visibility uses visibility animation when animating from "hidden" to "visible" 
index d32bfa9..6b7be26 100644 (file)
@@ -17,17 +17,17 @@ FAIL iteration composition of filter drop-shadow animation assert_equals: Animat
 FAIL iteration composition of same filter list animation assert_equals: Animated filter list at 50s of the first iteration expected "brightness(1.5) contrast(1.5)" but got "brightness(2) contrast(2)"
 FAIL iteration composition of discrete filter list because of mismatch of the order assert_equals: Animated filter list at 0s of the third iteration expected "brightness(1) contrast(1)" but got "contrast(2) brightness(2)"
 FAIL iteration composition of different length filter list animation assert_equals: Animated filter list at 50s of the first iteration expected "sepia(0.5) contrast(1.5)" but got "sepia(1) contrast(2)"
-FAIL iteration composition of transform(rotate) animation assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform: [ scale(0), scale(1) ] animation assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform: [ scale(1), scale(2) ] animation assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform: scale(2) animation assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform list animation assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform of matrix function assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform list animation whose order is mismatched assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform list animation whose order is mismatched because of missing functions assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform from none to translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform of matrix3d function assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL iteration composition of transform of rotate3d function assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL iteration composition of transform(rotate) animation assert_approx_equals: expected matrix(0, 1, -1, 0, 0, 0) but got matrix(-0.00000000000000018369701987210297, -1, 1, -0.00000000000000018369701987210297, 0, 0): Animated transform(rotate) style at 50s of the first iteration expected 1 +/- 0.0001 but got -1
+FAIL iteration composition of transform: [ scale(0), scale(1) ] animation assert_approx_equals: expected matrix(0.5, 0, 0, 0.5, 0, 0) but got matrix(0.25, -0.00000000000000006123233995736766, 0.00000000000000006123233995736766, 0.25, 0, 0): Animated transform(scale) style at 50s of the first iteration expected 0.5 +/- 0.0001 but got 0.25
+FAIL iteration composition of transform: [ scale(1), scale(2) ] animation assert_approx_equals: expected matrix(3, 0, 0, 3, 0, 0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 0, 0): Animated transform(scale) style at 0s of the third iteration expected 3 +/- 0.0001 but got 1
+FAIL iteration composition of transform: scale(2) animation assert_approx_equals: expected matrix(1, 0, 0, 1, 0, 0) but got matrix(0.5, -0.00000000000000012246467991473532, 0.00000000000000012246467991473532, 0.5, 0, 0): Animated transform(scale) style at 50s of the first iteration expected 1 +/- 0.0001 but got 0.5
+FAIL iteration composition of transform list animation assert_approx_equals: expected matrix(0, 1, -1, 0, 0, 5) but got matrix(-0.00000000000000018369701987210297, -1, 1, -0.00000000000000018369701987210297, -5, 0.0000000000000006123233995736766): Animated transform list at 50s of the first iteration expected 1 +/- 0.0001 but got -1
+FAIL iteration composition of transform of matrix function assert_approx_equals: expected matrix(6, 0, 0, 6, 60, 0) but got matrix(2, -0.0000000000000004898587196589413, 0.0000000000000004898587196589413, 2, 0, 0): Animated transform of matrix function at 0s of the third iteration expected 6 +/- 0.0001 but got 2
+FAIL iteration composition of transform list animation whose order is mismatched assert_approx_equals: expected matrix(6, 0, 0, 6, 60, 0) but got matrix(2, -0.0000000000000004898587196589413, 0.0000000000000004898587196589413, 2, 0, 0): Animated transform list at 0s of the third iteration expected 6 +/- 0.0001 but got 2
+FAIL iteration composition of transform list animation whose order is mismatched because of missing functions assert_approx_equals: expected matrix(3, 0, 0, 3, 40, 0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 0, 0): Animated transform list at 0s of the third iteration expected 3 +/- 0.0001 but got 1
+FAIL iteration composition of transform from none to translate assert_approx_equals: expected matrix(1, 0, 0, 1, 20, 0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 0, 0): Animated transform list at 0s of the third iteration expected 20 +/- 0.0001 but got 0
+FAIL iteration composition of transform of matrix3d function assert_approx_equals: expected matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 130, 1) but got matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 30, 1): Animated transform of matrix3d function at 0s of the third iteration expected 130 +/- 0.0001 but got 30
+FAIL iteration composition of transform of rotate3d function assert_equals: dimension of the matrix: Animated transform of rotate3d function at 0s of the third iteration expected 16 but got 6
 FAIL iteration composition starts with non-zero value animation assert_equals: Animated margin-left style at 0s of the third iteration expected "50px" but got "10px"
 FAIL iteration composition with negative final value animation assert_equals: Animated margin-left style at 0s of the third iteration expected "-10px" but got "10px"
 FAIL duration changes with an iteration composition operation of accumulate assert_equals: Animated style at 50s of the third iteration expected "25px" but got "5px"
index 518ed18..eff8a4e 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL Animated style is cleared after calling Animation.cancel() assert_not_equals: transform style is animated before cancelling got disallowed value "none"
+PASS Animated style is cleared after calling Animation.cancel() 
 PASS After cancelling an animation, it can still be seeked 
 PASS After cancelling an animation, it can still be re-used 
 
index 7d60e21..b13df45 100644 (file)
@@ -200,12 +200,12 @@ FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,100,0) but
 FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.4999999999999999
 FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5000000000000001
 FAIL transform: none assert_equals: dimension of the matrix: The value should be matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1) at 0ms but got matrix(1, 0, 0, 1, 0, 0) expected 16 but got 6
-FAIL transform: non-invertible matrices (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in matched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in matched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in mismatched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in mismatched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices (non-invertible onto invertible) assert_approx_equals: expected matrix(1,1,0,0,0,100) but got matrix(1, 1, 0, 0, 49.999999999999986, 49.999999999999986): The value should be matrix(1,1,0,0,0,100) at 0ms but got matrix(1, 1, 0, 0, 49.999999999999986, 49.999999999999986) expected 0 +/- 0.0001 but got 49.999999999999986
+PASS transform: non-invertible matrices (invertible onto non-invertible) 
+PASS transform: non-invertible matrices in matched transform lists (non-invertible onto invertible) 
+PASS transform: non-invertible matrices in matched transform lists (invertible onto non-invertible) 
+PASS transform: non-invertible matrices in mismatched transform lists (non-invertible onto invertible) 
+PASS transform: non-invertible matrices in mismatched transform lists (invertible onto non-invertible) 
 PASS visibility (type: visibility) has testAccumulation function 
 FAIL visibility: onto "visible" assert_equals: The value should be visible at 1000ms expected "visible" but got "hidden"
 PASS visibility: onto "hidden" 
index 197e5c7..48674d6 100644 (file)
@@ -225,21 +225,21 @@ FAIL text-shadow: mismatched list length (from longer to shorter) assert_equals:
 FAIL text-shadow: mismatched list length (from shorter to longer) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.501961) 5px 5px 5px"
 FAIL text-shadow: with currentcolor assert_equals: The value should be rgb(0, 255, 0) 5px 5px 5px at 500ms expected "rgb(0, 255, 0) 5px 5px 5px" but got "rgb(0, 0, 0) 5px 5px 5px"
 PASS transform (type: transformList) has testInterpolation function 
-FAIL transform: translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: scale assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: skew assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: rotate and translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: mismatch order of translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: matrix assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: rotate3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: matrix3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: mismatched 3D transforms assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: rotateY assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in matched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
-FAIL transform: non-invertible matrices in mismatched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+PASS transform: translate 
+PASS transform: rotate 
+PASS transform: scale 
+FAIL transform: skew assert_approx_equals: expected matrix(1,0.9999999999999999,0.9999999999999999,1,0,0) but got matrix(1.1153550716504106, 0.9659258262890682, 0.9659258262890681, 1.1153550716504106, 0, 0): The value should be matrix(1,0.9999999999999999,0.9999999999999999,1,0,0) at 500ms but got matrix(1.1153550716504106, 0.9659258262890682, 0.9659258262890681, 1.1153550716504106, 0, 0) expected 1 +/- 0.0001 but got 1.1153550716504106
+PASS transform: rotate and translate 
+FAIL transform: translate and rotate assert_approx_equals: expected matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,9.184850993605149e-15,150) but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, -35.35533905932736, 106.06601717798213): The value should be matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,9.184850993605149e-15,150) at 500ms but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, -35.35533905932736, 106.06601717798213) expected 9.184850993605149e-15 +/- 0.0001 but got -35.35533905932736
+PASS transform: mismatch order of translate and rotate 
+PASS transform: matrix 
+FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.7499999999999999, 0.2499999999999999, -0.3535533905932737, 0, 0.24999999999999983, 0.75, 0.3535533905932737, 0, 0.35355339059327373, -0.3535533905932737, 0.5000000000000002, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,-0.5,0,0.1464466094067262,0.8535533905932737,0.5,0,0.5,-0.5,0.7071067811865476,0,0,0,0,1) at 500ms but got matrix3d(0.7499999999999999, 0.2499999999999999, -0.3535533905932737, 0, 0.24999999999999983, 0.75, 0.3535533905932737, 0, 0.35355339059327373, -0.3535533905932737, 0.5000000000000002, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.7499999999999999
+PASS transform: matrix3d 
+PASS transform: mismatched 3D transforms 
+FAIL transform: rotateY assert_approx_equals: expected matrix3d(0.8660254037844387,0,-0.49999999999999994,0,0,1,0,0,0.49999999999999994,0,0.8660254037844387,0,0,0,0,1) but got matrix3d(0.75, 0, -0.4330127018922192, 0, 0, 1, 0, 0, 0.4330127018922192, 0, 0.75, 0, 0, 0, 0, 1): The value should be matrix3d(0.8660254037844387,0,-0.49999999999999994,0,0,1,0,0,0.49999999999999994,0,0.8660254037844387,0,0,0,0,1) at 500ms but got matrix3d(0.75, 0, -0.4330127018922192, 0, 0, 1, 0, 0, 0.4330127018922192, 0, 0.75, 0, 0, 0, 0, 1) expected 0.8660254037844387 +/- 0.0001 but got 0.75
+FAIL transform: non-invertible matrices assert_approx_equals: expected matrix(-1,0,0,-1,200,0) but got matrix(-0.0706572801427673, 0.719997959550522, -0.39514637992795165, -0.26007870466007205, 87.65015, 62.44984999999999): The value should be matrix(-1,0,0,-1,200,0) at 499ms but got matrix(-0.0706572801427673, 0.719997959550522, -0.39514637992795165, -0.26007870466007205, 87.65015, 62.44984999999999) expected -1 +/- 0.0001 but got -0.0706572801427673
+FAIL transform: non-invertible matrices in matched transform lists assert_approx_equals: expected matrix(0,-1,1,0,250,0) but got matrix(-0.7873989159254222, -1.115200903528419, 0.1364810122627057, -0.19136080826235746, 112.65025, 49.89999999999999): The value should be matrix(0,-1,1,0,250,0) at 499ms but got matrix(-0.7873989159254222, -1.115200903528419, 0.1364810122627057, -0.19136080826235746, 112.65025, 49.89999999999999) expected 0 +/- 0.0001 but got -0.7873989159254222
+FAIL transform: non-invertible matrices in mismatched transform lists assert_approx_equals: expected matrix(-2,0,0,-2,250,0) but got matrix(0.457235039557905, 1.5761580466297944, -1.1176085646538838, -0.6572212090027189, 112.65025, 49.89999999999999): The value should be matrix(-2,0,0,-2,250,0) at 499ms but got matrix(0.457235039557905, 1.5761580466297944, -1.1176085646538838, -0.6572212090027189, 112.65025, 49.89999999999999) expected -2 +/- 0.0001 but got 0.457235039557905
 PASS visibility (type: visibility) has testInterpolation function 
 PASS visibility uses visibility animation when animating from "visible" to "hidden" 
 PASS visibility uses visibility animation when animating from "hidden" to "visible" 
index 52a038e..be08d7b 100644 (file)
@@ -1,3 +1,22 @@
+2018-03-23  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Animated transform styles are ignored when calling getComputedStyle()
+        https://bugs.webkit.org/show_bug.cgi?id=183918
+
+        Reviewed by Dean Jackson.
+
+        Strictly looking at whether the renderer has a transform is a bad idea when determining whether a
+        transform is applied for an element. Looking at the RenderStyle is preferable because in the case
+        of animations running on the compositor, such as a transform-only animation or transition, the
+        renderer doesn't necessarily have a transform style on it, since we don't blend properties in
+        software as the animation progresses. Instead, all of the blending is performed by the compositor,
+        and only the computed style object has the software-blended transform style on it.
+
+        We do need to account for inline renderers though as these do not support transforms.
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::computedTransform):
+
 2018-03-22  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] Support "transition: all" for CSS Transitions as Web Animations
index 18ff918..923ab54 100644 (file)
@@ -62,6 +62,7 @@
 #include "Rect.h"
 #include "RenderBlock.h"
 #include "RenderBox.h"
+#include "RenderInline.h"
 #include "RenderStyle.h"
 #include "RuntimeEnabledFeatures.h"
 #include "SVGElement.h"
@@ -923,7 +924,8 @@ static Ref<CSSFunctionValue> matrixTransformValue(const TransformationMatrix& tr
 
 static Ref<CSSValue> computedTransform(RenderObject* renderer, const RenderStyle& style)
 {
-    if (!renderer || !renderer->hasTransform())
+    // Inline renderers do not support transforms.
+    if (!renderer || is<RenderInline>(*renderer) || !style.hasTransform())
         return CSSValuePool::singleton().createIdentifierValue(CSSValueNone);
 
     FloatRect pixelSnappedRect;