<!DOCTYPE html>
<html>
<head>
    <title>Test that containing block changes are reflected when going fullscreen</title>
</head>
<body>
    <!-- will-change: transform creates a containing-block for fixed positioned elements, but the top layer overrides it --->
    <div style="height: 400px; width: 400px; will-change: transform;">
        <!-- container-type: size triggers layout during style resolution -->
        <iframe style="container-type: size; width: 100%; height: 100%; background: lightgreen;" id="iframe"></iframe>
    </div>
    <p>Test passes if the lightgreen area is fullscreen after clicking the button.</p>
    <script src="full-screen-test.js"></script>
    <script>
        async function test() {
            await new Promise(resolve => {
                iframe.addEventListener("load", resolve, {once: true});
                iframe.src = "resources/inner.html";
            });
            await new Promise(resolve => {
                internals.withUserGesture(() => {
                    iframe.contentDocument.documentElement.requestFullscreen().then(resolve);   
                });
            });

            testExpected("iframe.offsetWidth > 400", true);
            testExpected("iframe.offsetHeight > 400", true);
            endTest();
        }

        test();
    </script>
</body>
</html>
