| <!DOCTYPE html> |
| <title>Test media element's "played" attribute and ranges.</title> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="video-played.js"></script> |
| <video></video> |
| <script> |
| var video; |
| async_test(function(t) { |
| var expectedStartTimes = []; |
| var expectedEndTimes = []; |
| video = document.querySelector("video"); |
| |
| video.oncanplay = t.step_func(function() { |
| video.oncanplay = null; |
| testRanges(expectedStartTimes, expectedEndTimes); |
| // Test playing when there are no ranges. |
| timeRangeCount = currentTimeRange = 0; |
| startPlayingInNewRange(t, expectedStartTimes); |
| }); |
| waitForPauseAndContinue(t, jumpAndPlayFwd, false, expectedStartTimes, expectedEndTimes); |
| |
| function jumpAndPlayFwd() { |
| // Test jumping forward into a new range and play. |
| video.currentTime = (video.duration - 1.0).toFixed(2); |
| currentTimeRange = 1; |
| startPlayingInNewRange(t, expectedStartTimes); |
| waitForPauseAndContinue(t, jumpBackAndPlayToNewRange, false, expectedStartTimes, expectedEndTimes); |
| } |
| |
| function jumpBackAndPlayToNewRange() { |
| // Test jumping backwards into a new range and play, should insert new range. |
| video.currentTime = 3.0; |
| startPlayingInNewRange(t, expectedStartTimes); |
| waitForPauseAndContinue(t, jumpAndExtendRangeStart, false, expectedStartTimes, expectedEndTimes); |
| } |
| |
| function jumpAndExtendRangeStart() { |
| // Test playing into an existing range, should extend range start. |
| var newTime = (video.played.start(currentTimeRange) - 0.05).toFixed(2); |
| video.currentTime = newTime; |
| expectedStartTimes[currentTimeRange] = newTime; |
| playForDuration(0.1, t); |
| waitForPauseAndContinue(t, jumpAndExtendRangeEnd, true, expectedStartTimes, expectedEndTimes); |
| } |
| |
| function jumpAndExtendRangeEnd() { |
| // Test jumping into an existing range and play beyond end, should extend range end. |
| var newTime = (video.played.end(currentTimeRange) - 0.05).toFixed(2); |
| video.currentTime = newTime; |
| playForDuration(0.03, t); |
| waitForPauseAndContinue(t, null, true, expectedStartTimes, expectedEndTimes); |
| } |
| |
| video.src = "content/test.ogv"; |
| }); |
| </script> |