<p>This tests double clicking after the last character in the last cell of a block table.  The paragraph break (the space between the last character and the first character in the next paragraph) should be selected.  Selection painting problems might prevent the paragraph break from appearing as selected even though it is.  To test manually, double click inside the table cell, after the last character, and hit delete.  Afterward, the table should contain 'foobar'.</p>
<div contenteditable="true">
<table border="1"><tr><td width="100px"><span id="span">foo</span></td></tr></table>
<div id="end">bar</div>
</div>

<script>
if (window.testRunner) {
    span = document.getElementById("span");
    x = span.offsetParent.offsetLeft + span.offsetLeft + span.offsetWidth + 10;
    y = span.offsetParent.offsetParent.offsetTop + span.offsetParent.offsetTop + span.offsetTop + span.offsetHeight / 2;
    alert(x);
    alert(y);

    eventSender.mouseMoveTo(x, y);
    eventSender.mouseDown();
    eventSender.mouseUp();
    eventSender.mouseDown();
    eventSender.mouseUp();
}
</script>
