Revision 0324a6e8a143f16b689c354982e2a975748e7c56 authored by James Graham on 16 April 2018, 17:58:17 UTC, committed by moz-wptsync-bot on 16 April 2018, 23:59:07 UTC
These were previously timing out regularly on OSX debug builds.
bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1454362
gecko-commit: e2f68d3b03c2fe2c8f489ba179e7dc871acda245
gecko-integration-branch: mozilla-inbound
gecko-reviewers: testonly
1 parent 25b6727
Raw File
mediasource-preload.html
<!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>
back to top