| OLD | NEW |
| 1 <html> | 1 <!DOCTYPE html> |
| 2 <head> | 2 <title>Test media element's "played" attribute and range collapse.</title> |
| 3 <title>Test of 'played' attribute</title> | 3 <script src="../resources/testharness.js"></script> |
| 4 <script src=media-file.js></script> | 4 <script src="../resources/testharnessreport.js"></script> |
| 5 <!-- TODO(foolip): Convert test to testharness.js. crbug.com/588956 | 5 <script src="media-file.js"></script> |
| 6 (Please avoid writing new tests using video-test.js) --> | 6 <script src="video-played.js"></script> |
| 7 <script src=video-test.js></script> | 7 <video></video> |
| 8 <script src=video-played.js></script> | 8 <script> |
| 9 <script> | 9 var video; |
| 10 async_test(function(t) { |
| 11 var expectedStartTimes = []; |
| 12 var expectedEndTimes = []; |
| 13 video = document.querySelector("video"); |
| 10 | 14 |
| 11 var testFunctions = | 15 video.oncanplay = t.step_func(function() { |
| 12 [ | 16 video.oncanplay = null; |
| 13 PlayWithNoRanges, | 17 testRanges(expectedStartTimes, expectedEndTimes); |
| 14 CreateANewRange, | 18 // Test playing when there are no ranges. |
| 15 JumpAndCollapseTwoRanges, | 19 timeRangeCount = currentTimeRange = 0; |
| 16 TestLoopingAndPassToTheEnd | 20 video.currentTime = 0.5; |
| 17 ]; | 21 currentTimeRange++; |
| 22 startPlayingInNewRange(t, expectedStartTimes); |
| 23 }); |
| 24 waitForPauseAndContinue(t, createANewRange, false, expectedStartTimes, expec
tedEndTimes); |
| 18 | 25 |
| 19 // NOTE: Result details are not printed for this test because time v
alues are different from machine | 26 function createANewRange() { |
| 20 // to machine and run to run. Commenting out the following line turn
s on detailed logging back on, which | 27 // Create a new range. |
| 21 // can be useful for debugging test failure. | 28 var newTime = (video.played.end(0) + 0.05).toFixed(2); |
| 22 disableFullTestDetailsPrinting(); | 29 video.currentTime = newTime; |
| 30 startPlayingInNewRange(t, expectedStartTimes); |
| 31 waitForPauseAndContinue(t, jumpAndCollapseTwoRanges, false, expectedStar
tTimes, expectedEndTimes); |
| 32 } |
| 23 | 33 |
| 24 function PlayWithNoRanges() | 34 function jumpAndCollapseTwoRanges() { |
| 25 { | 35 // Test playing from one range into another, should collapse the two ran
ges. |
| 26 consoleWrite("<br><b><em>Test playing when there are no ranges</
em></b>"); | 36 timeRangeCount--; |
| 37 currentTimeRange = timeRangeCount - 1; |
| 38 expectedStartTimes[0] = (expectedStartTimes[0] - 0.1).toFixed(2); |
| 39 expectedEndTimes[0] = expectedEndTimes[1]; |
| 40 video.currentTime = expectedStartTimes[0]; |
| 41 playForDuration(expectedEndTimes[1] - expectedStartTimes[0], t); |
| 42 waitForPauseAndContinue(t, testLoopingAndPassToTheEnd, false, expectedSt
artTimes, expectedEndTimes); |
| 43 } |
| 27 | 44 |
| 28 willPauseInExistingRange = false; | 45 function testLoopingAndPassToTheEnd() { |
| 29 willExtendAnExistingRange = false; | 46 // Start playing near the end of the movie so it will loop quickly. |
| 30 timeRangeCount = currentTimeRange = 0; | 47 video.loop = true; |
| 48 var startTime = (video.duration - 0.05).toFixed(2); |
| 49 video.currentTime = startTime; |
| 31 | 50 |
| 32 runSilently("video.currentTime = 0.5"); | 51 // We will end in the very first time range |
| 52 currentTimeRange = 0; |
| 33 | 53 |
| 34 currentTimeRange++; | 54 // Playing from near the end so we will create a new time range from sta
rtTime, duration. |
| 35 startPlayingInNewRange(); | 55 timeRangeCount++; |
| 36 } | 56 expectedStartTimes[timeRangeCount - 1] = startTime; |
| 57 expectedEndTimes[timeRangeCount - 1] = video.duration.toFixed(2); |
| 37 | 58 |
| 59 // Playback restarts from beginning, so expect the beginning of first ti
me range to be 0. |
| 60 expectedStartTimes[0] = "0.00"; |
| 61 // Have to play for long enough to loop and play into the existing range
. |
| 62 playForDuration(1.25, t); |
| 63 waitForPauseAndContinue(t, null, true, expectedStartTimes, expectedEndTi
mes); |
| 64 } |
| 38 | 65 |
| 39 function CreateANewRange() | 66 video.src = findMediaFile("video", "content/test"); |
| 40 { | 67 }); |
| 41 consoleWrite("<br><b><em>Create a new range</em></b>"); | 68 </script> |
| 42 | |
| 43 var newTime = (video.played.end(0) + 0.05).toFixed(2); | |
| 44 runSilently("video.currentTime = " + newTime); | |
| 45 | |
| 46 willPauseInExistingRange = false; | |
| 47 willExtendAnExistingRange = false; | |
| 48 | |
| 49 startPlayingInNewRange(); | |
| 50 } | |
| 51 | |
| 52 function JumpAndCollapseTwoRanges() | |
| 53 { | |
| 54 consoleWrite("<br><b><em>Test playing from one range into anothe
r, should collapse the two ranges</em></b>"); | |
| 55 | |
| 56 timeRangeCount--; | |
| 57 currentTimeRange = timeRangeCount - 1; | |
| 58 var startTime = expectedStartTimes[0] - 0.1; | |
| 59 expectedStartTimes[0] = startTime; | |
| 60 expectedEndTimes[0] = expectedEndTimes[1]; | |
| 61 | |
| 62 willPauseInExistingRange = false; | |
| 63 willExtendAnExistingRange = false; | |
| 64 runSilently("video.currentTime = " + startTime); | |
| 65 | |
| 66 playForMillisecs(secToMilli(expectedEndTimes[1] - startTime + 0.
1)); // Triggers pause() | |
| 67 } | |
| 68 | |
| 69 function TestLoopingAndPassToTheEnd() | |
| 70 { | |
| 71 consoleWrite("<br><b><em>Test looping</em></b>"); | |
| 72 | |
| 73 // Start playing near the end of the movie so it will loop quick
ly. | |
| 74 run("video.loop = true"); | |
| 75 var startTime = (video.duration - 0.05).toFixed(2); | |
| 76 runSilently("video.currentTime = " + startTime); | |
| 77 | |
| 78 // We will end in the very first time range | |
| 79 currentTimeRange = 0; | |
| 80 | |
| 81 willPauseInExistingRange = true; | |
| 82 willExtendAnExistingRange = true; | |
| 83 | |
| 84 // Playing from near the end so we will create a new time range
from startTime .. duration | |
| 85 timeRangeCount++; | |
| 86 expectedStartTimes[timeRangeCount-1] = startTime; | |
| 87 expectedEndTimes[timeRangeCount-1] = video.duration.toFixed(2); | |
| 88 | |
| 89 // Have to play for long enough to loop and play into the existi
ng range. | |
| 90 var playDuration = 1.25; | |
| 91 | |
| 92 // Playback restarts from beginning, so expect the beginning of
first time range to be 0. | |
| 93 expectedStartTimes[0] = 0; | |
| 94 playForMillisecs(secToMilli(playDuration)); // Triggers pause() | |
| 95 } | |
| 96 | |
| 97 </script> | |
| 98 </head> | |
| 99 | |
| 100 <body onload="videoPlayedMain()"> | |
| 101 | |
| 102 <video controls></video> | |
| 103 <p>Test of the media element 'played' attribute</p> | |
| 104 | |
| 105 </body> | |
| 106 </html> | |
| OLD | NEW |