<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
    <meta name="viewport" content="initial-scale=1.0">
    <style>
        body {
            width: 1300px;
            height: 2000px;
        }
        
        .fixed {
            position: fixed;
            top: 10px;
            left: 12px;
            height: 100px;
            width: 100px;
            background-color: blue;
        }
    </style>
    <script>
        if (window.testRunner) {
            testRunner.waitUntilDone();
            testRunner.dumpAsText();
        }

        function getScrollingTreeUIScript()
        {
            return `(function() {
                return uiController.scrollingTreeAsText;
            })();`;
        }

        function doTest()
        {
            if (!testRunner.runUIScript)
                return

            testRunner.runUIScript(getScrollingTreeUIScript(), function(scrollingTree) {
                document.getElementById('layers').textContent = scrollingTree;
                testRunner.notifyDone();
            });
        }
        
        window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
<div class="fixed"></div>
<pre id="layers"></pre>
</body>
</html>
