<!DOCTYPE html> <!-- webkit-test-runner [ OverlayRegionsEnabled=true AsyncOverflowScrollingEnabled=true AsyncFrameScrollingEnabled=true ContentInsetBackgroundFillEnabled=false ] -->
<html>
<head>
    <meta charset="utf-8" />
    <style>
        body { margin: 0; padding: 0; font-family: -apple-system; }
        h1, h2 { margin: 0; padding: 0; line-height: 50px; }
        h2 { font-size: 1.1em; }

        .fixed {
            position: fixed;
            width: 100%;
            z-index: 100;
            pointer-events: none;
        }

        #menu {
            width: 100%;
            height: 50px;
            pointer-events: auto;
            background: #F67280;
        }
        #other {
            width: 60%;
            height: 40px;
            margin: auto;
            pointer-events: auto;
            background: #F67280;
        }

        .long {
            position: relative;
            height: 1000px;
            background: #355C7D;
        }
        .long::before {
            content: "↓";
            color: white;
            font-size: 20em;
            text-align: center;
            position: absolute;
            top: 400px;
            left: 0;
            right: 0;
        }
    </style>
    <script src="../resources/ui-helper.js"></script>
    <script src="./overlay-region-helper.js"></script>
</head>
<body>
<section id="test">
    <div id="header" class="fixed">
        <div id="menu">This is a fixed menu</div>
        <div id="other">Also fixed</div>
    </div>
    <div class="long">
    </div>
    <div class="long">
    </div>
    <div class="long">
    </div>
    <div class="long">
    </div>
    <div class="long">
    </div>
</section>

<pre id="results"></pre>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
}

window.onload = async function () {
    if (!window.internals)
        return;

    await UIHelper.ensureStablePresentationUpdate();
    await UIHelper.animationFrame();
    results.textContent = filterUIViewTree(await UIHelper.getUIViewTree());
    document.getElementById('test').remove();

    testRunner.notifyDone();
};
</script>
</body>
</html>

