<!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->
<html>
<head>
    <title>Scrolling tree should show slow-repaint reasons on the overflow and root nodes</title>
    <style>
        .scroller {
            background-color: silver;
            border: 1px solid black;
            padding: 10px;
            width: 400px;
            height: 300px;
            overflow: scroll;
        }
        
        .scroller .scroller {
            margin-top: 100px;
            width: 350px;
            height: 300px;
        }
        
        .scrolling-content {
            height: 1000px;
        }
        
        .fixed-background {
            margin-top: 100px;
            width: 400px;
            height: 300px;
            background-image: linear-gradient(green, blue);
            background-attachment: fixed;
        }
        .filler {
            width: 100px;
            height: 250px;
        }
    </style>
    <script>
        if (window.testRunner)
            testRunner.dumpAsText();

        window.addEventListener('load', () => {
            if (window.internals)
                document.getElementById('scrollingTree').innerText = window.internals.scrollingTreeAsText() + "\n";
        }, false);
    </script>
</head>
<body>
    <div class="scroller">
        <div class="scrolling-content">
            Outer scrolling content
            <div class="scroller">
                <div class="scrolling-content">
                    Inner scrolling content
                    <div class="fixed-background">
                        Fixed background
                    </div>
                </div>
            </div>
        </div>
    </div>
    <pre id="scrollingTree"></pre>
</body>
</html>
