[Web Animations] Removing an element should only cancel its declarative animations
authorgraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Sep 2019 06:53:42 +0000 (06:53 +0000)
committergraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Sep 2019 06:53:42 +0000 (06:53 +0000)
https://bugs.webkit.org/show_bug.cgi?id=202165

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark a WPT progression and a change in FAIL expectation in a test where we used to cancel an animation and now don't.

* web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/canceling-an-animation-expected.txt:

Source/WebCore:

When an element is removed, an Animation created using the JS API should not be canceled.
Only declarative animations should be.

* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::elementWasRemoved):

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

LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/animation/AnimationTimeline.cpp

index ca237c1..743d170 100644 (file)
@@ -1,5 +1,17 @@
 2019-09-24  Antoine Quint  <graouts@apple.com>
 
+        [Web Animations] Removing an element should only cancel its declarative animations
+        https://bugs.webkit.org/show_bug.cgi?id=202165
+
+        Reviewed by Dean Jackson.
+
+        Mark a WPT progression and a change in FAIL expectation in a test where we used to cancel an animation and now don't.
+
+        * web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt:
+        * web-platform-tests/web-animations/timing-model/animations/canceling-an-animation-expected.txt:
+
+2019-09-24  Antoine Quint  <graouts@apple.com>
+
         [Web Animations] Unflake web-animations/timing-model/animations/updating-the-finished-state.html WPT test
         https://bugs.webkit.org/show_bug.cgi?id=181121
 
index 85a7001..4386403 100644 (file)
@@ -2,6 +2,6 @@
 FAIL Effect values reflect changes to font-size on element assert_equals: Effect value after updating font-size expected "300px" but got "150px"
 FAIL Effect values reflect changes to font-size on parent element assert_equals: Effect value after updating font-size on parent element expected "300px" but got "150px"
 PASS Effect values reflect changes to font-size when computed style is not immediately flushed 
-FAIL Effect values reflect changes to font-size from reparenting assert_equals: Effect value after attaching to font-size:20px parent expected "300px" but got "0px"
+FAIL Effect values reflect changes to font-size from reparenting assert_equals: Effect value after attaching to font-size:20px parent expected "300px" but got "150px"
 PASS Effect values reflect changes to target element 
 
index c12795e..2a280db 100644 (file)
@@ -1,6 +1,4 @@
 
-Harness Error (TIMEOUT), message = null
-
 PASS Canceling an animation should cause its start time and hold time to be unresolved 
 PASS A play-pending ready promise should be rejected when the animation is canceled 
 PASS A pause-pending ready promise should be rejected when the animation is canceled 
@@ -8,5 +6,5 @@ PASS When an animation is canceled, it should create a resolved Promise
 PASS The ready promise should be replaced when the animation is canceled 
 PASS The finished promise should NOT be rejected if the animation is already idle 
 PASS The cancel event should NOT be fired if the animation is already idle 
-TIMEOUT Canceling an animation should fire cancel event on orphaned element Test timed out
+PASS Canceling an animation should fire cancel event on orphaned element 
 
index dd5d46f..14bd573 100644 (file)
@@ -1,3 +1,16 @@
+2019-09-24  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Removing an element should only cancel its declarative animations
+        https://bugs.webkit.org/show_bug.cgi?id=202165
+
+        Reviewed by Dean Jackson.
+
+        When an element is removed, an Animation created using the JS API should not be canceled.
+        Only declarative animations should be.
+
+        * animation/AnimationTimeline.cpp:
+        (WebCore::AnimationTimeline::elementWasRemoved):
+
 2019-09-24  Alex Christensen  <achristensen@webkit.org>
 
         Remove SchemeRegistry's list of URL schemes allowing local storage in private browsing, which is unused
index 5612926..1100102 100644 (file)
@@ -197,8 +197,10 @@ Vector<RefPtr<WebAnimation>> AnimationTimeline::animationsForElement(Element& el
 
 void AnimationTimeline::elementWasRemoved(Element& element)
 {
-    for (auto& animation : animationsForElement(element))
-        animation->cancel(WebAnimation::Silently::Yes);
+    for (auto& cssTransition : m_elementToCSSTransitionsMap.get(&element))
+        cssTransition->cancel(WebAnimation::Silently::Yes);
+    for (auto& cssAnimation : m_elementToCSSAnimationsMap.get(&element))
+        cssAnimation->cancel(WebAnimation::Silently::Yes);
 }
 
 void AnimationTimeline::removeAnimationsForElement(Element& element)