<!DOCTYPE html> <!-- webkit-test-runner [ AsyncOverflowScrollingEnabled=true ] -->
<html>
<head>
    <style>
        .clipping {
            width: 450px;
            height: 300px;
            margin: 30px;
            border: 1px solid black;
            overflow: hidden;
            box-shadow: 0 0 14px rgba(0, 0, 0, 0.5);
        }

        .scroller {
            position: relative;
            top: 10px;
            left: 10px;
            width: 300px;
            height: 300px;
            margin: 30px;
            border: 15px solid gray;
            overflow: scroll;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
        }

        .filler {
            width: 100px;
            height: 250px;
            background-color: silver;
        }

        .box {
            position: absolute;
            width: 100%;
            height: 100px;
            background-color: white;
            z-index: 2;
            transform: translateZ(0);
        }
    </style>
    <script>
        if (window.testRunner)
            testRunner.dumpAsText();

        if (window.internals)
            internals.setUsesOverlayScrollbars(true);

        window.addEventListener('load', () => {
            if (window.internals)
                document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
        }, false);
    </script>
</head>
<body>
    <div class="clipping">
        <div class="scroller">
            <div class="filler"></div>
            <div class="box"></div>
            <div class="filler"></div>
            <div class="filler"></div>
        </div>
    </div>
<pre id="layers"></pre>
</body>
</html>
