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

        <script>
            var endedCount = 0;
            var audio;

            function start()
            {
                consoleWrite("");
                audio = document.querySelector("audio");
                waitForEvent("ended", ended);
                waitForEvent("canplaythrough", canplaythrough);

                audio.src = findMediaFile("audio", "content/silence")
            }

            function canplaythrough()
            {
                run("audio.currentTime = 1.0");
                run("audio.play()");
                consoleWrite("");
            }

            function ended()
            {
                switch (++endedCount)
                {
                    case 1:
                        testExpected("audio.ended", true);

                        run("audio.currentTime = 0");
                        setTimeout(endTest, 200);

                        consoleWrite("");
                        break;
                    default:
                        consoleWrite("");
                        failTest("'ended' event fired again");
                        break;
                }
            }
        </script>
    </head>
    <body onload="start()">
        <audio controls></audio>
        <p><b>Test 'ended' event by:</b>
            <ol>
                <li>Playing to the end.</li>
                <li>When 'ended' event fires, seek to 0.</li>
                <li>Verify that 'ended' event is not fired again.</li>
            </ol>
        </p>
    </body>
</html>
