blob: c9b94606309548383419b92ff4f7baa4760d8c27 [file] [log] [blame]
<!DOCTYPE html>
<meta charset=utf-8>
<title>Tests for the finish event</title>
<link rel="help" href="https://w3c.github.io/web-animations/#the-current-finished-promise">
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../imported/wpt/web-animations/testcommon.js"></script>
<body>
<script>
'use strict';
function validateFinishEvent(t, event, animation) {
t.step(function() {
assert_equals(event, animation, 'Animation should be target');
assert_times_equal(event.currentTime, animation.currentTime, 'Event currentTime should be animation currentTime');
});
}
async_test(function(t) {
var div = createDiv(t);
var animation = div.animate(null, 70.0);
animation.finished.then(function(event) {
t.unreached_func("Seeking to finish should not queue finished event");
})
animation.finish();
animation.currentTime = 0;
animation.pause();
t.done();
}, "animation.finished doesn't run when the animation seeks to finish");
async_test(function(t) {
var div = createDiv(t);
var animation = div.animate(null, 70.0);
animation.finished.then(function (event) {
t.unreached_func("Seeking past finish should not queue finished event");
})
animation.currentTime = 80.0;
animation.currentTime = 0;
animation.pause();
t.done();
}, "animation.finished doesn't run when the animation seeks past finish");
async_test(function(t) {
var div = createDiv(t);
var animation = div.animate(null, 90.0);
animation.finished.then(function(event) {
validateFinishEvent(t, event, animation);
t.done();
})
animation.finish();
}, "animation.finished runs when the animation completes with .finish()");
async_test(function(t) {
var div = createDiv(t);
var animation = div.animate(null, 100);
animation.finished.then(function(event) {
validateFinishEvent(t, event, animation);
t.done();
})
}, "animation.finished runs when the animation completes");
// TODO(alancutter): Change this to a promise_test.
async_test(function(t) {
var animation1 = createDiv(t).animate(null, 0.05);
animation1.finished.then(function(event) {
validateFinishEvent(t, event, animation1);
animation1.currentTime = 0;
return animation1.finished;
}).then(function(event) {
var animation2 = createDiv(t).animate(null, 0.05);
// TODO(alancutter): Move this .then to the outer promise chain.
animation2.finished.then(function(event) {
validateFinishEvent(t, event, animation2);
animation2.play();
return animation2.finished;
})
return animation2.finished;
}).then(function(event) {
t.done();
})
}, "animation.finished calls can be chained");
</script>