blob: 33bdae34dbf780c38200e09ba0957dc8ebc9b23d [file] [log] [blame]
<!DOCTYPE html>
<title>Test event dispatches and attribute changes for seek to middle.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<video></video>
<script>
async_test(function(t) {
var video = document.querySelector("video");
video.onended = t.unreached_func();
var watcher = new EventWatcher(t, video, ["durationchange", "loadedmetadata", "loadeddata", "seeking", "timeupdate", "seeked"]);
watcher.wait_for(["durationchange", "loadedmetadata", "loadeddata"]).then(t.step_func(function() {
assert_less_than(video.currentTime, video.duration);
assert_false(video.ended);
assert_false(video.seeking);
assert_false(video.paused);
// Starting seek to middle by setting video.currentTime to half the duration.
video.currentTime = video.duration / 2;
testCommonAttributes(true);
assert_less_than(video.currentTime, video.duration);
assert_greater_than(video.currentTime, 0);
return watcher.wait_for("seeking");
})).then(t.step_func(function() {
testCommonAttributes(true);
return watcher.wait_for("timeupdate");
})).then(t.step_func(function() {
testCommonAttributes(false);
return watcher.wait_for("seeked");
})).then(t.step_func_done(function() {
testCommonAttributes(false);
}));
function testCommonAttributes(seekingExpected) {
assert_equals(video.seeking, seekingExpected);
assert_false(video.ended);
if (seekingExpected) {
assert_equals(video.currentTime, video.duration / 2);
} else {
// If seek has completed, the currentTime may have advanced slightly
// beyond the initial seek point since the video is not paused.
assert_greater_than_equal(video.currentTime, video.duration / 2);
}
assert_false(video.paused);
}
video.src = "resources/test.ogv";
video.play();
});
</script>