<!-- webkit-test-runner [ enablePageCache=true ] -->
<!DOCTYPE html>
<html>
    <head>
        <script src=../../media-resources/media-file.js></script>
        <script src=../../media-resources/video-test.js></script>
        <script>
            var loadCount = 0;

            if (window.testRunner) {
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
            }

            function logEvent(event) 
            {
                consoleWrite("<br><b><em>'" + event.type + "'<" + "/em> event<" + "/b>");
            }

            function loadstart() 
            {
                logEvent(event);
                
                if (++loadCount > 1) {
                    consoleWrite('FAIL: loadstart fired more than once.');
                    endTest();
                    return;
                }

                consoleWrite("*** Showing confirm dialog...");
                confirm('I hope the movie continues to play!');
            }

            function canplaythrough()
            {
                logEvent(event);

                consoleWrite("");
                endTest();
            }

            function setup()
            {
                logEvent(event);
                consoleWrite("*** Setting up element...");

                findMediaElement();
                var movie = findMediaFile("video", "../resources/test");
                video.src = "http://127.0.0.1:8000/media/video-throttled-load.cgi?name=" + movie + "&throttle=100&nph=1";
            }

        </script>
    </head>

    <body onload="setup()">
        <video controls
            oncanplaythrough="canplaythrough()"
            onloadstart="loadstart()">
            </video>
        <p>Make sure we don't reload a &lt;video&gt; element after a dialog is shown.<br>
        Test this by loading a movie slowly and showing a dialog when a 'loadstart' event <br>
        handler is called. If the movie is reloaded when the dialog is "dismissed", another <br>
        'loadstart' event will be fired</p>
    </body>
</html>

