<!DOCTYPE html>
<html>
<head>
    <script src="video-test.js"></script>
    <script src="media-file.js"></script>
    <script>
        window.addEventListener('load', async event => {
            findMediaElement();

            run('internals.settings.setAllowsPictureInPictureMediaPlayback(true)');
            run('internals.setPictureInPictureAPITestEnabled(video, true)');
            run('video.src = findMediaFile("audio", "content/test")');
            await waitFor(video, 'canplaythrough');
            runWithKeyDown(function() {
                video.requestPictureInPicture()
                .then(() => {
                    failTest('request Picture-in-Picture requires video track for the video element.')
                })
                .catch(error => {
                    window.error = error;
                    testExpected('error.name', 'InvalidStateError');
                    endTest();
                });
            });
        });
    </script>
</head>
<body>
    <div>This tests that request Picture-in-Picture requires video track for the video element.</div>
    <video controls></video>
</body>
</html>
