blob: 25037c84960ee53cd816476bb70767b99abd7ff8 [file] [log] [blame]
<!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>