<!-- Based on fast/repaint/selection-gap-transformed-fixed-child.html -->
<!doctype html>
<head>
    <script src="resources/paint-invalidation-test.js"></script>
    <script>
    if (window.testRunner)
        testRunner.dumpAsTextWithPixelResults();
    window.expectedPaintInvalidationObjects = [
        "LayoutBlockFlow HTML",
        "LayoutBlockFlow BODY",
        "LayoutBlockFlow DIV",
        "LayoutBR BR",
        "InlineTextBox '\n'",
        "LayoutBlockFlow (positioned) DIV id='target'",
        "LayoutBR BR",
        "InlineTextBox '\n'",
    ];
    function paintInvalidationTest()
    {
        var target = document.getElementById("target");
        getSelection().setBaseAndExtent(target, 0, target.nextSibling, 1);
    }
    </script>
    <style>
        body { margin: 0px; }
        #target::selection { background-color: green; }
    </style>
</head>
<body onload="runPaintInvalidationTest()">
    <div style="position: absolute; margin-left: 200px;">
        <div>Bug <a href="http://webkit.org/b/111000">111000</a>: Selection gaps don't repaint correctly with transforms</div>
        <div>This tests that fixed elements that get transformed are invalidated correctly.  The box will be competely green if the selected area was invalidated correctly.</div>
    </div>
    <div style="transform: translate(50px, 50px);">
        <div id="target" style="background-color: red; width: 100px; height: 100px; position: fixed;"><br/></div><br/>
    </div>
</body>
