blob: d4a7cdfd29f21254bddaa0a02b21079949e195c4 [file] [log] [blame]
<!DOCTYPE html>
<title>Verifies preload=metadata doesn't buffer the entire clip.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../../media-resources/media-file.js"></script>
<div id="log"></div>
<video controls preload=metadata></video>
<script>
async_test(function(t) {
var have_metadata = false;
var waiting_for_metadata = false;
var video = document.querySelector("video");
video.onloadedmetadata = t.step_func(function() {
have_metadata = true;
if (waiting_for_metadata)
video.onsuspend();
});
video.onsuspend = t.step_func(function() {
// The metadata event may not fire before suspend occurs, so wait if needed;
// while not spec'd, it'd be nice if this wasn't true, see crbug.com/455866.
if (!have_metadata) {
waiting_for_metadata = true;
return;
}
assert_equals(video.buffered.length, 1);
assert_equals(video.seekable.length, 1);
// If the entire clip wasn't buffered, the buffered range should be smaller
// than the seekable range; which should be the duration since the server
// supports range requests.
assert_true(video.buffered.end(0) < video.duration);
assert_equals(video.seekable.end(0), video.duration);
assert_true(video.buffered.end(0) < video.seekable.end(0),
video.buffered.end(0) + " < " + video.seekable.end(0));
t.done();
});
// Use a .webm to ensure metadata is near the beginning of the file.
var mediaFile = "resources/media-source/webm/test.webm";
video.src = "http://127.0.0.1:8000/media/video-throttled-load.cgi?" +
"nph=1&name=" + mediaFile + "&throttle=40&type=video/webm";
});
</script>