| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Test Animation.ready attribute</title> |
| <link rel="https://w3c.github.io/web-animations/#the-animation-interface"> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="../imported/wpt/web-animations/testcommon.js"></script> |
| |
| <script> |
| test(function() { |
| var animation = document.documentElement.animate([], 100000); |
| assert_true(animation.ready instanceof Promise); |
| }, 'The ready attribute should be a Promise'); |
| |
| async_test(function(t) { |
| var animation = document.documentElement.animate([], 100000); |
| animation.cancel(); |
| animation.ready.then(function(p) { |
| t.step(function() { |
| assert_equals(p, animation); |
| }); |
| t.done(); |
| }); |
| }, 'The ready promise should be resolved when an animation is in the idle play state'); |
| |
| test(function() { |
| var animation = document.documentElement.animate([], 100000); |
| var promise = animation.ready; |
| animation.cancel(); |
| assert_not_equals(animation.ready, promise); |
| }, 'The ready promise should be replaced when the animation is cancelled'); |
| |
| test(function() { |
| var animation = document.documentElement.animate([], 100000); |
| animation.cancel(); |
| var promise = animation.ready; |
| animation.play(); |
| assert_not_equals(animation.ready, promise); |
| }, 'The ready promise should be replaced when the animation enters the pending state'); |
| |
| async_test(function(t) { |
| var animation = document.documentElement.animate([], 100000); |
| animation.ready.then(function() { |
| t.step(function() { |
| assert_unreached(); |
| }); |
| }, function(e) { |
| t.step(function() { |
| assert_equals(e.code, DOMException.ABORT_ERR); |
| }); |
| t.done(); |
| }); |
| animation.cancel(); |
| }, 'A pending ready promise should be rejected when the animation is cancelled'); |
| |
| async_test(function(t) { |
| var animation = document.documentElement.animate([], 100000); |
| var promise = animation.ready; |
| promise.then(function(p) { |
| t.step(function() { |
| assert_equals(p, animation); |
| assert_equals(animation.ready, promise); |
| }); |
| t.done(); |
| }); |
| }, 'A pending ready promise should be resolved and not replaced when the animation enters the running state'); |
| |
| async_test(function(t) { |
| var animation = document.documentElement.animate([], 100000); |
| var promise = animation.ready; |
| animation.finish(); |
| promise.then(function(p) { |
| t.step(function() { |
| assert_equals(p, animation); |
| assert_equals(animation.ready, promise); |
| }); |
| t.done(); |
| }); |
| }, 'A pending ready promise should be resolved and not replaced when the animation enters the finished state'); |
| |
| async_test(function(t) { |
| var animation = document.documentElement.animate([], 100000); |
| var promise = animation.ready; |
| animation.pause(); |
| promise.then(function(p) { |
| t.step(function() { |
| assert_equals(p, animation); |
| assert_equals(animation.ready, promise); |
| }); |
| t.done(); |
| }); |
| }, 'A pending ready promise should be resolved and not replaced when the animation enters the paused state'); |
| </script> |