REGRESSION (r235962-r235963): Layout Test animations/suspend-resume-animation-events...
authorgraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 21 Sep 2018 16:57:10 +0000 (16:57 +0000)
committergraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 21 Sep 2018 16:57:10 +0000 (16:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=189607
<rdar://problem/44652315>

Reviewed by Dean Jackson.

Source/WebCore:

There is no reason we shouldn't return the document timeline's time when suspended as otherwise animations may
report an unresolved current time when suspended which would wreak havoc when invalidating what DOM events to
dispatch for CSS Animations and Transitions. We also shouldn't be invalidation DOM events when suspended.

* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::currentTime):
(WebCore::DocumentTimeline::DocumentTimeline::performInvalidationTask):

LayoutTests:

* animations/suspend-resume-animation-events.html: Ensure the test always opts into Web Animations backing CSS Animations and Transitions.
* platform/mac-wk2/TestExpectations: Mark the test as no longer flaky.

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

LayoutTests/ChangeLog
LayoutTests/animations/suspend-resume-animation-events.html
LayoutTests/platform/mac-wk2/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/animation/DocumentTimeline.cpp

index 4eaf239..e3d0781 100644 (file)
@@ -1,3 +1,14 @@
+2018-09-21  Antoine Quint  <graouts@apple.com>
+
+        REGRESSION (r235962-r235963): Layout Test animations/suspend-resume-animation-events.html is a flaky failure
+        https://bugs.webkit.org/show_bug.cgi?id=189607
+        <rdar://problem/44652315>
+
+        Reviewed by Dean Jackson.
+
+        * animations/suspend-resume-animation-events.html: Ensure the test always opts into Web Animations backing CSS Animations and Transitions.
+        * platform/mac-wk2/TestExpectations: Mark the test as no longer flaky.
+
 2018-09-21  Per Arne Vollan  <pvollan@apple.com>
 
         Layout Test webanimations/accelerated-animation-suspension.html is failing
index 6ce62e9..f926739 100644 (file)
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype html><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=true ] -->
 <html lang="en">
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
index c808fc9..640a8c3 100644 (file)
@@ -877,5 +877,3 @@ imported/w3c/web-platform-tests/payment-request/user-abort-algorithm-manual.http
 imported/w3c/web-platform-tests/payment-request/user-accepts-payment-request-algo-manual.https.html [ Skip ]
 
 webkit.org/b/184204 [ Sierra ] http/wpt/cache-storage/cache-put-keys.https.any.worker.html [ Pass Failure ]
-
-webkit.org/b/189607 animations/suspend-resume-animation-events.html [ Pass Failure ]
index 58ac17d..633aeeb 100644 (file)
@@ -1,3 +1,19 @@
+2018-09-21  Antoine Quint  <graouts@apple.com>
+
+        REGRESSION (r235962-r235963): Layout Test animations/suspend-resume-animation-events.html is a flaky failure
+        https://bugs.webkit.org/show_bug.cgi?id=189607
+        <rdar://problem/44652315>
+
+        Reviewed by Dean Jackson.
+
+        There is no reason we shouldn't return the document timeline's time when suspended as otherwise animations may
+        report an unresolved current time when suspended which would wreak havoc when invalidating what DOM events to
+        dispatch for CSS Animations and Transitions. We also shouldn't be invalidation DOM events when suspended.
+
+        * animation/DocumentTimeline.cpp:
+        (WebCore::DocumentTimeline::currentTime):
+        (WebCore::DocumentTimeline::DocumentTimeline::performInvalidationTask):
+
 2018-09-21  Mike Gorse  <mgorse@suse.com>
 
         Build tools should work when the /usr/bin/python is python3
index 033bc7a..19ad805 100644 (file)
@@ -141,7 +141,7 @@ unsigned DocumentTimeline::numberOfActiveAnimationsForTesting() const
 
 std::optional<Seconds> DocumentTimeline::currentTime()
 {
-    if (m_paused || m_isSuspended || !m_document || !m_document->domWindow())
+    if (m_paused || !m_document || !m_document->domWindow())
         return AnimationTimeline::currentTime();
 
     if (auto* mainDocumentTimeline = m_document->existingTimeline()) {
@@ -216,9 +216,11 @@ void DocumentTimeline::scheduleInvalidationTaskIfNeeded()
 void DocumentTimeline::performInvalidationTask()
 {
     // Now that the timing model has changed we can see if there are DOM events to dispatch for declarative animations.
-    for (auto& animation : animations()) {
-        if (is<DeclarativeAnimation>(animation))
-            downcast<DeclarativeAnimation>(*animation).invalidateDOMEvents();
+    if (!m_isSuspended) {
+        for (auto& animation : animations()) {
+            if (is<DeclarativeAnimation>(animation))
+                downcast<DeclarativeAnimation>(*animation).invalidateDOMEvents();
+        }
     }
 
     applyPendingAcceleratedAnimations();