<html>
    <head>
        <script src="media-file.js"></script>
        <script src="video-test.js"></script>
        <script>
            var loadCalled = false;

            function loadedmetadata()
            {
                consoleWrite("");
                if (!loadCalled)
                    consoleWrite("*** FAIL: media data loaded before load() was called ***<br>");

                endTest();
            }

            function load()
            {
                consoleWrite("** 250ms timer fired");
                testExpected("video.readyState", HTMLMediaElement.HAVE_NOTHING);
                testExpected("video.buffered.length", 0, "==");
                loadCalled = true;
                run("video.load()");
                consoleWrite("");
            }

            function start()
            {
                if (!window.internals) {
                    failTest('This test requires window.internals.');
                    return;
                }

                findMediaElement();
                consoleWrite("** setting video.src");
                video.src = findMediaFile("video", "content/test");

                testExpected("video.preload", "auto");
                waitForEvent('loadedmetadata', loadedmetadata);
                run("internals.setMediaElementRestrictions(video, 'MetadataPreloadingNotPermitted')");

                // Wait 250ms before load()ing to make sure setting src did not kick off the load.
                consoleWrite("** Pausing...<br>");
                setTimeout(load, 250);
                failTestIn(2000);
            }
        </script>
    </head>

    <body onload="start()">
        <video controls preload=auto></video>
        <p>Test that "no preloading restriction" disables preloading in spite of preload='auto'.</p>
    </body>
</html>
