Title: [233500] trunk
- Revision
- 233500
- Author
- [email protected]
- Date
- 2018-07-04 00:58:30 -0700 (Wed, 04 Jul 2018)
Log Message
[Web Animations] Make WPT test at timing-model/timelines/timelines.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=186508
<rdar://problem/41000260>
Reviewed by Dean Jackson.
LayoutTests/imported/w3c:
Record WPT test progressions.
* web-platform-tests/web-animations/interfaces/Animation/finished-expected.txt:
* web-platform-tests/web-animations/timing-model/timelines/timelines-expected.txt:
Source/WebCore:
The remaining failing assertion in this test assumes that the ready promise for an animation is fired
prior to requestAnimationFrame callbacks being fired in the current event loop such that registering
the requestAnimationFrame() call within the ready promise has its callback fired with the same timeline
time. To ensure that is true, we perform a microtask checkpoint as soon as we're done running pending
tasks, which will resolve the ready promise for any play-pending animations.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::updateAnimations):
LayoutTests:
We're now passing this test reliably.
* TestExpectations:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (233499 => 233500)
--- trunk/LayoutTests/ChangeLog 2018-07-04 07:43:20 UTC (rev 233499)
+++ trunk/LayoutTests/ChangeLog 2018-07-04 07:58:30 UTC (rev 233500)
@@ -1,3 +1,15 @@
+2018-07-03 Antoine Quint <[email protected]>
+
+ [Web Animations] Make WPT test at timing-model/timelines/timelines.html pass reliably
+ https://bugs.webkit.org/show_bug.cgi?id=186508
+ <rdar://problem/41000260>
+
+ Reviewed by Dean Jackson.
+
+ We're now passing this test reliably.
+
+ * TestExpectations:
+
2018-07-03 Ryosuke Niwa <[email protected]>
Nullptr crash accessing Document in GenericEventQueue::dispatchOneEvent()
Modified: trunk/LayoutTests/TestExpectations (233499 => 233500)
--- trunk/LayoutTests/TestExpectations 2018-07-04 07:43:20 UTC (rev 233499)
+++ trunk/LayoutTests/TestExpectations 2018-07-04 07:58:30 UTC (rev 233500)
@@ -1974,7 +1974,6 @@
webkit.org/b/179069 imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox_032.htm [ Pass Failure ]
-webkit.org/b/179287 imported/w3c/web-platform-tests/web-animations/timing-model/timelines/timelines.html [ Pass Failure ]
webkit.org/b/181116 imported/w3c/web-platform-tests/web-animations/interfaces/Animation/finished.html [ Pass Failure ]
webkit.org/b/181120 imported/w3c/web-platform-tests/web-animations/interfaces/Animation/onfinish.html [ Pass Failure ]
webkit.org/b/181121 imported/w3c/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html [ Pass Failure ]
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (233499 => 233500)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2018-07-04 07:43:20 UTC (rev 233499)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2018-07-04 07:58:30 UTC (rev 233500)
@@ -1,3 +1,16 @@
+2018-07-03 Antoine Quint <[email protected]>
+
+ [Web Animations] Make WPT test at timing-model/timelines/timelines.html pass reliably
+ https://bugs.webkit.org/show_bug.cgi?id=186508
+ <rdar://problem/41000260>
+
+ Reviewed by Dean Jackson.
+
+ Record WPT test progressions.
+
+ * web-platform-tests/web-animations/interfaces/Animation/finished-expected.txt:
+ * web-platform-tests/web-animations/timing-model/timelines/timelines-expected.txt:
+
2018-07-03 Chris Dumez <[email protected]>
Improve window.event compliance: Should not be set when target is in shadow tree
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/finished-expected.txt (233499 => 233500)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/finished-expected.txt 2018-07-04 07:43:20 UTC (rev 233499)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/finished-expected.txt 2018-07-04 07:58:30 UTC (rev 233500)
@@ -8,7 +8,7 @@
PASS The finished promise is fulfilled with its Animation
PASS finished promise is rejected when an animation is canceled by calling cancel()
PASS canceling an already-finished animation replaces the finished promise
-FAIL Test finished promise changes for animation duration changes assert_not_equals: Finished promise should change after lengthening the duration causes the animation to become active got disallowed value object "[object Promise]"
+FAIL Test finished promise changes for animation duration changes assert_false: shortening of the animation duration should resolve the finished promise expected false got true
PASS Test finished promise changes when playbackRate == 0
PASS Test finished promise resolves when reaching to the natural boundary.
PASS Test finished promise changes when a prior finished promise resolved and the animation falls out finished state
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/timelines-expected.txt (233499 => 233500)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/timelines-expected.txt 2018-07-04 07:43:20 UTC (rev 233499)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/timelines-expected.txt 2018-07-04 07:58:30 UTC (rev 233500)
@@ -2,5 +2,5 @@
PASS Timeline time increases once per animation frame
PASS Timeline time increases once per animation frame in an iframe
PASS Timeline time should be the same for all RAF callbacks in an animation frame
-FAIL Performs a microtask checkpoint after updating timelins assert_equals: There should be a microtask checkpoint expected 300 but got 233
+PASS Performs a microtask checkpoint after updating timelins
Modified: trunk/Source/WebCore/ChangeLog (233499 => 233500)
--- trunk/Source/WebCore/ChangeLog 2018-07-04 07:43:20 UTC (rev 233499)
+++ trunk/Source/WebCore/ChangeLog 2018-07-04 07:58:30 UTC (rev 233500)
@@ -1,3 +1,20 @@
+2018-07-03 Antoine Quint <[email protected]>
+
+ [Web Animations] Make WPT test at timing-model/timelines/timelines.html pass reliably
+ https://bugs.webkit.org/show_bug.cgi?id=186508
+ <rdar://problem/41000260>
+
+ Reviewed by Dean Jackson.
+
+ The remaining failing assertion in this test assumes that the ready promise for an animation is fired
+ prior to requestAnimationFrame callbacks being fired in the current event loop such that registering
+ the requestAnimationFrame() call within the ready promise has its callback fired with the same timeline
+ time. To ensure that is true, we perform a microtask checkpoint as soon as we're done running pending
+ tasks, which will resolve the ready promise for any play-pending animations.
+
+ * animation/DocumentTimeline.cpp:
+ (WebCore::DocumentTimeline::updateAnimations):
+
2018-07-03 Ryosuke Niwa <[email protected]>
Nullptr crash accessing Document in GenericEventQueue::dispatchOneEvent()
Modified: trunk/Source/WebCore/animation/DocumentTimeline.cpp (233499 => 233500)
--- trunk/Source/WebCore/animation/DocumentTimeline.cpp 2018-07-04 07:43:20 UTC (rev 233499)
+++ trunk/Source/WebCore/animation/DocumentTimeline.cpp 2018-07-04 07:58:30 UTC (rev 233500)
@@ -31,6 +31,7 @@
#include "DeclarativeAnimation.h"
#include "Document.h"
#include "KeyframeEffect.h"
+#include "Microtasks.h"
#include "Page.h"
#include "RenderElement.h"
@@ -272,6 +273,10 @@
for (const auto& animation : animations())
animation->runPendingTasks();
+ // Perform a microtask checkpoint such that all promises that may have resolved while
+ // running pending tasks can fire right away.
+ MicrotaskQueue::mainThreadQueue().performMicrotaskCheckpoint();
+
if (m_document && hasElementAnimations()) {
for (const auto& elementToAnimationsMapItem : elementToAnimationsMap())
elementToAnimationsMapItem.key->invalidateStyleAndLayerComposition();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes