<!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)');
            runWithKeyDown(function() {
                video.requestPictureInPicture()
                .then(() => {
                    failTest('request Picture-in-Picture requires loaded metadata 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 loaded metadata for the video element.</div>
    <video controls></video>
</body>
</html>
