<html>
<head>
    <link rel="stylesheet" href="resources/default.css">
    <style>
        .translated {
            transform: scale(2, 2);
            -webkit-transform: scale(2, 2);
            -moz-transform: scale(2, 2);
        }
    </style>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();
        function runTest()
        {
            document.getElementById('t').setAttribute("class", "green translated");
            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
</head>
<body style="height:2000px;" onload="setTimeout(runTest, 0);">
    <!-- Repaint test for https://bugs.webkit.org/show_bug.cgi?id=64650: RenderLayer fixed position logic needs more basic testing -->
    <!-- You should see no red on this page. -->
    <div style="position: absolute; top: 300px; left: 100px;" class="red"></div>
    <div id="t" style="position: fixed; top: 125px; left: 125px; width: 50px; height: 50px;" class="green"></div>
    <script>
        window.scrollTo(0, 200);
    </script>
</body>
</html>
