<html>
<head>
    <link rel="stylesheet" href="resources/default.css">
    <style>
        table { top: 0px; left: 0px; border-spacing: 0px; position: absolute; }
        td { background: green; padding: 0px; border-style: none; border: 0px; }
        td.fixed { position: fixed; left: 100px; top: 0px; }
    </style>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();
        function runTest()
        {
            document.getElementById('moveMe').className = "fixed";
            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. -->
    <table>
        <tr><td></td><td></td></tr>
        <tr><td class="red"></td><td id="moveMe"><div style="position: relative; left: -100px; top: 0px;" class="green"></div></td></tr>
    <script>
        window.scrollTo(0, 100);
    </script>
</body>
</html>
