blob: 347bbf8521cc86d1892193c1095844cd09bf3558 [file] [edit]
<!DOCTYPE html>
<html>
<head>
<title>'stalled' event test</title>
<script src=../../media-resources/media-file.js></script>
<script src=../../media-resources/video-test.js></script>
<script src=../../media-resources/utilities.js></script>
<script>
var bufferedend = 0;
var gotCanplay = false;
function start()
{
findMediaElement();
waitForEvent('durationchange');
waitForEvent('loadedmetadata');
waitForEvent('loadeddata');
once(mediaElement, 'canplay', () => {
video.play()
gotCanplay = true;
});
waitForEvent('stalled', function () {
// The test simulates a load stalled by blocking the http server for several seconds.
// Under loads, it is possible that we failed to retrieve any content at all.
// The aim of the test being that we do emit the stalled event and that currentTime
// didn't progress we output data that would pass the expectations under both conditions.
if (video.buffered.length > 0)
bufferedend = video.buffered.end(0);
test("video.currentTime <= bufferedend", false);
// If we loaded some content, playback has started
test("gotCanplay ? video.paused == false : video.paused == true");
testExpected("video.playbackRate", 1, "===");
test("video.duration > bufferedend", false);
// TestRunner waits for the complete frame download before finishing, so having the video load stalled
// prevents TestRunner from finishing. Changing the src will abort the download and let the test finish.
video.src = "";
endTest();
} );
var mediaFile = findMediaFile("video", "../../../../media/content/long-test");
var mimeType = mimeTypeForFile(mediaFile);
video.src = "http://127.0.0.1:8000/media/resources/serve_video.py?name=" + mediaFile + "&type=" + mimeType + "&stallOffset=50000&stallDuration=20&chunkSize=1024";
}
</script>
</head>
<body onload="setTimeout(start, 0)">
<video controls></video>
<p>Test that a stalled event is sent when media loading stalls.</p>
</body>
</html>