<!DOCTYPE html>
<script src="../../../resources/js-test-pre.js"></script>
<script src="../resources/media-controls-utils.js" type="text/javascript"></script>
<body>
<video src="../../content/test.mp4" style="width: 320px; height: 240px;" controls autoplay></video>
<script type="text/javascript">

window.jsTestIsAsync = true;

description("Testing media is paused and resumed when pressing the space bar in fullscreen.");

const media = document.querySelector("video");
const button = document.body.appendChild(document.createElement("button"));
button.textContent = "Enter Fullscreen";

media.addEventListener("webkitfullscreenchange", () => {
    debug("");
    debug("Obtained a 'webkitfullscreenchange' event.");
    debug(`media.webkitDisplayingFullscreen = ${media.webkitDisplayingFullscreen}.`);

    if (media.webkitDisplayingFullscreen) {
        shouldBeFalse("media.paused");
        pressSpace();
    } else
        endTest();
});

let playCount = 0;
media.addEventListener("play", () => {
    playCount++;

    debug("");
    debug("Obtained a 'play' event.");

    if (playCount == 1)
        startTest();
    else
        media.webkitExitFullscreen();
});

media.addEventListener("pause", () => {
    debug("");
    debug("Obtained a 'pause' event.");

    // Test pressing the space bar while the media is paused.
    pressSpace();
});


function enterFullscreen() {
    debug("");
    debug("Entering fullscreen.");
    button.addEventListener("click", () => {
        try {
            media.webkitEnterFullscreen();
        } catch(e) {
            debug("Toggling fullscreen failed.");
            finishJSTest();
        }
    });

    pressOnElement(button);
}

function pressSpace()
{
    debug("");
    debug("Pressing the space bar.");
    eventSender.keyDown(" ");
}

function startTest()
{
    enterFullscreen();
}

function endTest()
{
    debug("");
    button.remove();
    media.remove();
    finishJSTest();
}

</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
