[Web Animations] Don't reset pending tasks when setting a null effect
authorgraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Nov 2018 11:15:47 +0000 (11:15 +0000)
committergraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Nov 2018 11:15:47 +0000 (11:15 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191301
<rdar://problem/45838422>

Reviewed by Dean Jackson.

The issue https://github.com/w3c/csswg-drafts/issues/2077 has changed the Web Animations API such that
we no longer reset pending tasks when setting a null effect on an animation.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::setEffect):

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

Source/WebCore/ChangeLog
Source/WebCore/animation/WebAnimation.cpp

index d8a4713..fc77ac0 100644 (file)
@@ -1,5 +1,19 @@
 2018-11-06  Antoine Quint  <graouts@apple.com>
 
+        [Web Animations] Don't reset pending tasks when setting a null effect
+        https://bugs.webkit.org/show_bug.cgi?id=191301
+        <rdar://problem/45838422>
+
+        Reviewed by Dean Jackson.
+
+        The issue https://github.com/w3c/csswg-drafts/issues/2077 has changed the Web Animations API such that
+        we no longer reset pending tasks when setting a null effect on an animation.
+
+        * animation/WebAnimation.cpp:
+        (WebCore::WebAnimation::setEffect):
+
+2018-11-06  Antoine Quint  <graouts@apple.com>
+
         [Web Animations] Update the API to allow the "auto" composite value
         https://bugs.webkit.org/show_bug.cgi?id=191300
         <rdar://problem/45838373>
index 3528757..2767ead 100644 (file)
@@ -106,24 +106,20 @@ void WebAnimation::setEffect(RefPtr<AnimationEffect>&& newEffect)
     if (newEffect == oldEffect)
         return;
 
-    // 3. If new effect is null and old effect is not null, run the procedure to reset an animation's pending tasks on animation.
-    if (!newEffect && oldEffect)
-        resetPendingTasks();
-
-    // 4. If animation has a pending pause task, reschedule that task to run as soon as animation is ready.
+    // 3. If animation has a pending pause task, reschedule that task to run as soon as animation is ready.
     if (hasPendingPauseTask())
         m_timeToRunPendingPauseTask = TimeToRunPendingTask::WhenReady;
 
-    // 5. If animation has a pending play task, reschedule that task to run as soon as animation is ready to play new effect.
+    // 4. If animation has a pending play task, reschedule that task to run as soon as animation is ready to play new effect.
     if (hasPendingPlayTask())
         m_timeToRunPendingPlayTask = TimeToRunPendingTask::WhenReady;
 
-    // 6. If new effect is not null and if new effect is the target effect of another animation, previous animation, run the
+    // 5. If new effect is not null and if new effect is the target effect of another animation, previous animation, run the
     // procedure to set the target effect of an animation (this procedure) on previous animation passing null as new effect.
     if (newEffect && newEffect->animation())
         newEffect->animation()->setEffect(nullptr);
 
-    // 7. Let the target effect of animation be new effect.
+    // 6. Let the target effect of animation be new effect.
     // In the case of a declarative animation, we don't want to remove the animation from the relevant maps because
     // while the effect was set via the API, the element still has a transition or animation set up and we must
     // not break the timeline-to-animation relationship.
@@ -134,7 +130,7 @@ void WebAnimation::setEffect(RefPtr<AnimationEffect>&& newEffect)
     auto protectedThis = makeRef(*this);
     setEffectInternal(WTFMove(newEffect), isDeclarativeAnimation());
 
-    // 8. Run the procedure to update an animation's finished state for animation with the did seek flag set to false,
+    // 7. Run the procedure to update an animation's finished state for animation with the did seek flag set to false,
     // and the synchronously notify flag set to false.
     timingDidChange(DidSeek::No, SynchronouslyNotify::No);