<html>
<head>
<script src="resources/text-based-repaint.js"></script>
<script>
if (window.testRunner) {
    // By definition, when caret browsing is enabled we always paint the caret.
    // So, this test is only applicable when caret browsing is disabled because
    // non-content-editable elements won't cause the caret to be drawn since they
    // are not editable.
    testRunner.overridePreference("WebKitEnableCaretBrowsing", false);
}
function repaintTest()
{
    if (!window.eventSender)
        return;

    var target = document.getElementById("target");
    eventSender.mouseMoveTo(target.offsetLeft, target.offsetTop);
    eventSender.mouseDown();
    eventSender.mouseUp();
}
window.onload = runRepaintTest;
</script>
</head>
<body>
    <p>This tests that clicking on a non-content editable element does not cause a repaint of it in whole or in part.</p>
    <p id="target">This element is not content editable.</p>
</body>
</html>
