<html>
<head>
<script src="resources/repaint.js"></script>
<script>
if (window.internals) {
    // 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.
    internals.settings.setCaretBrowsingEnabled(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>
