| <html> |
| <head> |
| <title>Test of 'played' attribute</title> |
| <script src=media-file.js></script> |
| <script src=video-test.js></script> |
| <script src=video-played.js></script> |
| <script> |
| |
| var testFunctions = |
| [ |
| PlayWithNoRanges, |
| CreateANewRange, |
| JumpAndCollapseTwoRanges, |
| TestLoopingAndPassToTheEnd |
| ]; |
| |
| // NOTE: Result details are not printed for this test because time values are different from machine |
| // to machine and run to run. Commenting out the following line turns on detailed logging back on, which |
| // can be useful for debugging test failure. |
| disableFullTestDetailsPrinting(); |
| |
| function PlayWithNoRanges() |
| { |
| consoleWrite("<br><b><em>Test playing when there are no ranges</em></b>"); |
| |
| willPauseInExistingRange = false; |
| willExtendAnExistingRange = false; |
| timeRangeCount = currentTimeRange = 0; |
| |
| runSilently("video.currentTime = 0.5"); |
| |
| currentTimeRange++; |
| |
| waitForEventOnce("seeked", startPlayingInNewRange); |
| } |
| |
| |
| function CreateANewRange() |
| { |
| consoleWrite("<br><b><em>Create a new range</em></b>"); |
| |
| var newTime = (video.played.end(0) + 0.05).toFixed(2); |
| runSilently("video.currentTime = " + newTime); |
| |
| willPauseInExistingRange = false; |
| willExtendAnExistingRange = false; |
| |
| waitForEventOnce("seeked", startPlayingInNewRange); |
| } |
| |
| function JumpAndCollapseTwoRanges() |
| { |
| consoleWrite("<br><b><em>Test playing from one range into another, should collapse the two ranges</em></b>"); |
| |
| timeRangeCount--; |
| currentTimeRange = timeRangeCount - 1; |
| var startTime = expectedStartTimes[0] - 0.1; |
| expectedStartTimes[0] = startTime; |
| expectedEndTimes[0] = expectedEndTimes[1]; |
| |
| willPauseInExistingRange = false; |
| willExtendAnExistingRange = false; |
| runSilently("video.currentTime = " + startTime); |
| |
| waitForEventOnce("seeked", function() { |
| playForMillisecs(secToMilli(expectedEndTimes[1] - startTime + 0.1)); // Triggers pause() |
| }); |
| } |
| |
| function TestLoopingAndPassToTheEnd() |
| { |
| consoleWrite("<br><b><em>Test looping</em></b>"); |
| |
| // Start playing near the end of the movie so it will loop quickly. |
| run("video.loop = true"); |
| var startTime = (video.duration - 0.05).toFixed(2); |
| runSilently("video.currentTime = " + startTime); |
| |
| // We will end in the very first time range |
| currentTimeRange = 0; |
| |
| willPauseInExistingRange = true; |
| willExtendAnExistingRange = true; |
| |
| // Playing from near the end so we will create a new time range from startTime .. duration |
| timeRangeCount++; |
| expectedStartTimes[timeRangeCount-1] = startTime; |
| expectedEndTimes[timeRangeCount-1] = video.duration.toFixed(2); |
| |
| // Have to play for long enough to loop and play into the existing range. |
| var playDuration = 1.25; |
| |
| // Playback restarts from beginning, so expect the beginning of first time range to be 0. |
| expectedStartTimes[0] = 0; |
| |
| waitForEventOnce("seeked", function() { |
| playForMillisecs(secToMilli(playDuration)); // Triggers pause() |
| }); |
| } |
| |
| </script> |
| </head> |
| |
| <body onload="videoPlayedMain()"> |
| |
| <video controls></video> |
| <p>Test of the media element 'played' attribute</p> |
| |
| </body> |
| </html> |