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

            function canplaythrough()
            {
                consoleWrite("");
                if (!playCalled)
                    consoleWrite("*** FAIL: media data loaded before play() was called ***<br>");

                endTest();
            }

            function play()
            {
                consoleWrite("** 250ms timer fired");
                testExpected("video.readyState", HTMLMediaElement.HAVE_CURRENT_DATA, "<");
                testExpected("video.buffered.length", 0, "==");
                playCalled = true;
                run("video.play()");
                consoleWrite("");
            }

            function loadedmetadata()
            {
                testExpected("video.readyState", HTMLMediaElement.HAVE_CURRENT_DATA, "<");

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

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

                findMediaElement();
                testExpected("video.preload", "auto");
                waitForEvent('loadedmetadata', loadedmetadata);
                waitForEvent('canplaythrough', canplaythrough);

                consoleWrite("** setting video.src");
                video.src = findMediaFile("video", "content/test");
                failTestIn(2000);
                run("internals.setMediaElementRestrictions(video, 'AutoPreloadingNotPermitted')");
                consoleWrite("");
            }
        </script>
    </head>

    <body onload="start()">
        <video controls preload=auto></video>
        <p>Test that "no auto-loading restriction" only allows metadata to load in spite of preload='auto'.</p>
    </body>
</html>
