Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(289)

Unified Diff: third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animations/updating-the-finished-state.html

Issue 2434563008: Import wpt@26c8d4e87448d1c4e5ebf2ddb4917c0633c201db (Closed)
Patch Set: Mark one more test as potentially timing out Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animations/updating-the-finished-state.html
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animations/updating-the-finished-state.html b/third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animations/updating-the-finished-state.html
index 0b77443f2ca274c058952895c0ec8d5efe72c570..7b9efedbf63c6c59b317a2b94023700a8d24faba 100644
--- a/third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animations/updating-the-finished-state.html
+++ b/third_party/WebKit/LayoutTests/imported/wpt/web-animations/timing-model/animations/updating-the-finished-state.html
@@ -10,27 +10,11 @@
<script>
'use strict';
+// --------------------------------------------------------------------
//
-// NOTE TO THE POOR PERSON WHO HAS TO MERGE THIS WITH THE TEST OF THE SAME
-// NAME FROM BLINK
-//
-// There is a pull request from Blink at:
-//
-// https://github.com/w3c/web-platform-tests/pull/3328
-//
-// which this file will surely conflict with.
-//
-// However, those tests cover a different part of the same algorithm. They
-// are mostly concerned with testing events and promises rather than the
-// timing part of the algorithm.
-//
-// The tests below cover the first part of the algorithm. So, please keep both
-// sets of tests and delete this comment. Preferably put the tests in this
-// file first.
-//
-// Thank you!
+// TESTS FOR UPDATING THE HOLD TIME
//
-
+// --------------------------------------------------------------------
// CASE 1: playback rate > 0 and current time >= target effect end
// (Also the start time is resolved and there is pending task)
@@ -327,5 +311,100 @@ test(function(t) {
}, 'Updating the finished state when start time is unresolved and'
+ ' did seek = true');
+// --------------------------------------------------------------------
+//
+// TESTS FOR RUNNING FINISH NOTIFICATION STEPS
+//
+// --------------------------------------------------------------------
+
+function waitForFinishEventAndPromise(animation) {
+ var eventPromise = new Promise(function(resolve) {
+ animation.onfinish = function() { resolve(); }
+ });
+ return Promise.all([eventPromise, animation.finished]);
+}
+
+promise_test(function(t) {
+ var animation = createDiv(t).animate(null, 1);
+ animation.onfinish =
+ t.unreached_func('Seeking to finish should not fire finish event');
+ animation.finished.then(
+ t.unreached_func('Seeking to finish should not resolve finished promise'));
+ animation.currentTime = 1;
+ animation.currentTime = 0;
+ animation.pause();
+ return waitForAnimationFrames(3);
+}, 'Finish notification steps don\'t run when the animation seeks to finish'
+ + ' and then seeks back again');
+
+promise_test(function(t) {
+ var animation = createDiv(t).animate(null, 1);
+ return animation.ready.then(function() {
+ return waitForFinishEventAndPromise(animation);
+ });
+}, 'Finish notification steps run when the animation completes normally');
+
+promise_test(function(t) {
+ var animation = createDiv(t).animate(null, 1);
+ return animation.ready.then(function() {
+ animation.currentTime = 10;
+ return waitForFinishEventAndPromise(animation);
+ });
+}, 'Finish notification steps run when the animation seeks past finish');
+
+promise_test(function(t) {
+ var animation = createDiv(t).animate(null, 1);
+ return animation.ready.then(function() {
+ // Register for notifications now since once we seek away from being
+ // finished the 'finished' promise will be replaced.
+ var finishNotificationSteps = waitForFinishEventAndPromise(animation);
+ animation.finish();
+ animation.currentTime = 0;
+ animation.pause();
+ return finishNotificationSteps;
+ });
+}, 'Finish notification steps run when the animation completes with .finish(),'
+ + ' even if we then seek away');
+
+promise_test(function(t) {
+ var animation = createDiv(t).animate(null, 1);
+ var initialFinishedPromise = animation.finished;
+
+ return animation.finished.then(function(target) {
+ animation.currentTime = 0;
+ assert_not_equals(initialFinishedPromise, animation.finished);
+ });
+}, 'Animation finished promise is replaced after seeking back to start');
+
+promise_test(function(t) {
+ var animation = createDiv(t).animate(null, 1);
+ var initialFinishedPromise = animation.finished;
+
+ return animation.finished.then(function(target) {
+ animation.play();
+ assert_not_equals(initialFinishedPromise, animation.finished);
+ });
+}, 'Animation finished promise is replaced after replaying from start');
+
+async_test(function(t) {
+ var animation = createDiv(t).animate(null, 1);
+ animation.onfinish = function(event) {
+ animation.currentTime = 0;
+ animation.onfinish = function(event) {
+ t.done();
+ };
+ };
+}, 'Animation finish event is fired again after seeking back to start');
+
+async_test(function(t) {
+ var animation = createDiv(t).animate(null, 1);
+ animation.onfinish = function(event) {
+ animation.play();
+ animation.onfinish = function(event) {
+ t.done();
+ };
+ };
+}, 'Animation finish event is fired again after replaying from start');
+
</script>
</body>

Powered by Google App Engine
This is Rietveld 408576698