| <!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> |