<!-- webkit-test-runner [ enableModernMediaControls=false ] -->
<html>
    <head>
        <script src=media-file.js></script>
        <script>
            if (window.testRunner)
                testRunner.waitUntilDone();

            var video;

            function start()
            {
                internals.suspendAnimations();
                setSrcByTagName("video", findMediaFile("video", "content/test"));
                video = document.getElementsByTagName('video')[0];
                video.load();
                video.play();
                video.addEventListener("canplaythrough", canPlayThrough);
            }

            function canPlayThrough()
            {
                // Ensure that the frame is always the same in pixel result.
                video.addEventListener("seeked", finish);
                video.pause();
                video.currentTime = 0;
            }

            function finish()
            {
                if (window.testRunner)
                    testRunner.notifyDone();
            }
        </script>
    </head>

    <body onload="start()">
        <p>The controls should not depend on preload value.</p>
        <video preload=none controls ></video>
    </body>
</html>
