<!DOCTYPE html> <!-- webkit-test-runner [ AsyncOverflowScrollingEnabled=true ] -->
<html>
<head>
    <title>Tests that we make a scrolling tree node for composited layers nested inside position:absolute in a scroller</title>
    <style>
        .scroller {
            overflow: scroll;
            margin: 20px;
            height: 300px;
            width: 300px;
            border: 2px solid black;
        }

        .absolute {
            position:absolute;
            left: 50px;
            top: 50px;
            width: 200px;
            height: 120px;
            padding: 20px;
            background: gray;
        }
        
        .composited {
            transform: translateZ(0);
        }
        
        .box {
            width: 100px;
            height: 100px;
            background-color: green;
        }
        
        .spacer {
            height: 500px;
        }
    </style>
    <script>
        if (window.testRunner)
            testRunner.dumpAsText();

        window.addEventListener('load', () => {
            if (window.internals)
                document.getElementById('tree').innerText = internals.scrollingStateTreeAsText();
        }, false);
    </script>
</head>
<body>
    <div class="scroller">
        <div class="spacer"></div>
        <div class="absolute">
            <div class="composited box"></div>
        </div>
        <div class="spacer"></div>
    </div>
<pre id="tree"></pre>
</body>
</html>
