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

    <script>
    function runTest()
    {
        video = document.getElementsByTagName('audio')[0];

        if (window.internals)
            run('internals.setMediaElementRestrictions(video, "RequireUserGestureForRateChange,RequireUserGestureForAudioRateChange")');

        waitForEventAndFail('error');
        waitForEvent('canplaythrough', canplaythrough);
        run("video.src = findMediaFile('audio', 'content/test')");
    }    

    function canplaythrough()
    {
        run("video.play()");
        testExpected('video.paused', true);
        runWithKeyDown(playWithKeyDown);
    }

    function playWithKeyDown()
    {
        consoleWrite('Running with keyDown.');
        run("video.play()");
        testExpected('video.paused', false);
        endTest();
    }
    </script>
</head>

<body onload="runTest()">
    <p>Test that, when both RequireUserGestureForRateChange and RequireUserGestureForAudioRateChange is set, starting playback of an audio file requires a user gesture.</p>
    <audio controls autoplay></audio>
</body>
</html>

