<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.layoutTestController) {
    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>