<!DOCTYPE html>
<html>
<body>
<div id="host"></div>
<button>Enter fullscreen</button>
<script src="../../resources/js-test.js"></script>
<script>

description('Test that webkitFullscreenElement retargets the fullscreen element inside a shadow tree.');

let shadowHost = document.getElementById('host');
let shadowRoot = shadowHost.attachShadow({mode: 'closed'});
shadowRoot.innerHTML = '<span>full screen content</span>';

function goFullscreen() {
    shadowRoot.querySelector('span').webkitRequestFullscreen();
    setTimeout(function () {
        if (done)
            return;

        testFailed('webkitfullscreenchange was not fired');
        finishJSTest();
    }, 2000);
}

let done = false;
function finalizeTest() {
    if (done)
        return;
    done = true;

    shouldBe('document.webkitFullscreenElement', 'shadowHost');
    finishJSTest();
}

shadowRoot.addEventListener('webkitfullscreenchange', finalizeTest);
document.addEventListener('fullscreenchange', finalizeTest); // Standard fullscreenchange only fires at document level.

let button = document.querySelector('button');
button.onclick = goFullscreen;

if (window.eventSender) {
    jsTestIsAsync = true;
    eventSender.mouseMoveTo(button.offsetLeft + 5, button.offsetTop + 5);
    eventSender.mouseDown();
    eventSender.mouseUp();
}

</script>
</body>
</html>
