blob: e387b63737bc1946e425b72782e490e8e5d11fce [file] [log] [blame]
<!DOCTYPE html>
<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
<html>
<head>
<title>Various MediaSource HTMLMediaElement preload tests.</title>
<link rel="author" title="Matthew Wolenetz" href="mailto:wolenetz@chromium.org"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
function attachWithPreloadTest(preload)
{
async_test(function(test)
{
var video = document.createElement("video");
var mediaSource = new MediaSource();
var mediaSourceURL = URL.createObjectURL(mediaSource);
video.preload = preload;
document.body.appendChild(video);
test.add_cleanup(function() {
document.body.removeChild(video);
URL.revokeObjectURL(mediaSourceURL);
});
mediaSource.addEventListener("sourceopen", test.step_func_done());
video.src = mediaSourceURL;
}, "sourceopen occurs with element preload=" + preload);
}
attachWithPreloadTest("auto");
attachWithPreloadTest("metadata");
attachWithPreloadTest("none");
function errorWithPreloadTest(preload, bogusURLStyle)
{
async_test(function(test)
{
var mediaSource = new MediaSource();
var bogusURL = URL.createObjectURL(mediaSource);
if (bogusURLStyle == "corrupted") {
var goodURL = bogusURL;
test.add_cleanup(function() { URL.revokeObjectURL(goodURL); });
bogusURL += "0";
} else if (bogusURLStyle == "revoked") {
URL.revokeObjectURL(bogusURL);
} else {
assert_unreached("invalid case");
}
var video = document.createElement("video");
video.preload = preload;
document.body.appendChild(video);
test.add_cleanup(function() { document.body.removeChild(video); });
mediaSource.addEventListener("sourceopen", test.unreached_func("'sourceopen' should not be fired"));
video.onerror = test.step_func_done();
video.src = bogusURL;
}, "error occurs with bogus blob URL (" + bogusURLStyle + " MediaSource object URL) and element preload=" + preload);
}
errorWithPreloadTest("auto", "revoked");
errorWithPreloadTest("metadata", "revoked");
errorWithPreloadTest("auto", "corrupted");
errorWithPreloadTest("metadata", "corrupted");
</script>
</body>
</html>