<!DOCTYPE html>
<html>
<head>
    <script src=media-file.js></script>
    <script src=video-test.js></script>
    <script>

        // The test.mp4 file has sync samples at the following presentation time stamps:
        // 0.0000, 0.7968, 1.5936, 2.3904, 3.1872, 3.9840, 4.7808, 5.5776

        function runTest()
        {
            findMediaElement();
            waitForEvent('canplaythrough', canplaythrough);

            // Other media files may have sync samples at completely different points, so
            // explicitly use the .mp4 here.
            video.src = "content/test.mp4";
        }

        function canplaythrough()
        {
            waitForEventOnce('timeupdate', seek1);
            consoleWrite('Seek past the 4th sync sample:');
            run('video.currentTime = 2.5');
        }

        function seek1()
        {
            testExpected('video.currentTime.toFixed(1)', 2.5);
            consoleWrite('Test that fastSeek() past the currentTime will not result in a seek before the currentTime:');
            waitForEventOnce('timeupdate', seek2);
            run('video.fastSeek(2.6)');
        }

        function seek2()
        {
            testExpected('video.currentTime', 2.6, '>=');
            consoleWrite('Seek before the 4th sync sample:');
            waitForEventOnce('timeupdate', seek3);
            run('video.currentTime = 2.3');
        }

        function seek3()
        {
            testExpected('video.currentTime.toFixed(1)', 2.3);
            consoleWrite('Test that fastSeek() before the currentTime will not result in a seek past the currentTime:');
            waitForEventOnce('timeupdate', seek4);
            run('video.fastSeek(2.2)');
        }

        function seek4()
        {
            testExpected('video.currentTime', 2.2, '<=');
            endTest();
        }

    </script>
</head>
<body onload="runTest()">
    <video controls></video>
    <p>Test that fastSeek() commands work correctly.</p>
</body>
</html>
