| <!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> |