<!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)');

            run('video.src = findMediaFile("video", "../content/test")');
            await waitFor(video, 'canplaythrough');

            runWithKeyDown(() => {
                video.requestPictureInPicture();
            });

            waitForEventOnce('enterpictureinpicture', event => {
                window.pipWindow = event.pictureInPictureWindow;
                testExpected('pipWindow.width', 0, '>');
                testExpected('pipWindow.height', 0, '>');

                document.exitPictureInPicture();
                waitForEventOnce('leavepictureinpicture', event => {
                    window.pipWindow1 = event.pictureInPictureWindow;
                    testExpected('pipWindow == pipWindow1', true);
                    endTest();
                });
            });
        });
    </script>
</head>
<body>
    <div>This tests that events are fired correctly when a video element enters and exits the Picture-in-Picture mode.</div>
    <video controls></video>
</body>
</html>
