<!DOCTYPE html>
<html>
<head>
    <style>
        .negative-z {
            position: absolute;
            top: 20px;
            left: 20px;
            z-index: -1;
            width: 20px;
            height: 20px;
            border: 1px solid blue;
        }

        .transformed {
            transform: translateZ(0);
        }

        .relpos {
            position: relative;
            height: 500px;
            height: 600px;
            margin: 20px 40px;
            border: 2px solid gray;
        }

        .fullscreen {
            position: relative;
            margin: 0px auto;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            overflow: hidden;
        }

        .abspos {
            position: absolute;
            z-index: 2;
            width: 500px;
            height: 165px;
            background-color: green;
        }
    </style>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        function requestFullscreen()
        {
            let fullscreen = document.querySelector('.fullscreen');

            fullscreen.addEventListener("fullscreenchange", () => {
                if (window.testRunner)
                    testRunner.notifyDone();
            });

            internals.withUserGesture(() => {
                fullscreen.requestFullscreen();
            });
        }

        window.addEventListener('load', () => {
            setTimeout(() => {
                requestFullscreen();
            }, 0);
        }, false);
    </script>
</head>
<body>
    <div class="negative-z">
        x
        <div class="negative-z transformed">x</div>
    </div>
    <div class="relpos">
        <div class="fullscreen">
            <div class="abspos">Test passes if it does not crash.</div>
        </div>
    </div>
</body>
</html>