<!DOCTYPE html>
<title>Test media loading behaviour with different "preload" values.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
var movies = [
// should not buffer, "preload" is "none".
{ preload: "none", shouldBuffer: false, autoPlay: false },
// should buffer because "autoplay" is set.
{ preload: "none", shouldBuffer: true, autoPlay: true },
// should buffer, because load() is called.
{ preload: "none", shouldBuffer: true, autoPlay: false, load: "" },
// should buffer, because play() is called.
{ preload: "none", shouldBuffer: true, autoPlay: false, play: "" },
// should buffer because "preload" is "metadata".
{ preload: "metadata", shouldBuffer: true, autoPlay: false },
// should buffer because "preload" is "auto".
{ preload: "auto", shouldBuffer: true, autoPlay: false }
];
for (var movie of movies) {
async_test(function(t) {
var video = document.createElement("video");
video.onerror = t.step_func(function() {});
video.onloadstart = t.step_func(function() {});
video.onplay = t.step_func(function() {});
video.onloadedmetadata = t.step_func_done(function() {
assert_true(movie.shouldBuffer);
});
setupAttribute("preload", movie.preload);
setupAttribute("autoplay", movie.autoPlay);
video.src = "content/test.ogv";
if (movie.hasOwnProperty("play"))
video.play();
else if (movie.hasOwnProperty("load"))
video.load();
if (!movie.shouldBuffer) {
setTimeout(function() {
// start playback, which should force data to load.
movie.shouldBuffer = true;
video.play();
}, 200);
}
function setupAttribute(attr, value) {
if (value)
video.setAttribute(attr, value);
else
video.removeAttribute(attr);
}
});
}
</script>