blob: fa8be1f97c4ac4584d65551b8d8256f92c25541c [file] [log] [blame]
<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>