<!DOCTYPE html>
<html>
<head>
    <script src="../video-test.js"></script>
    <script src="../media-file.js"></script>
    <script>
        window.addEventListener('load', async event => {
            if (!window.internals) {
                failTest('This test requires window.internals.');
                return;
            }

            findMediaElement();

            run('internals.settings.setAllowsPictureInPictureMediaPlayback(true)');
            run('internals.setMockVideoPresentationModeEnabled(true)');

            runWithKeyDown(() => {
                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>
