<body>
    
<p>This tests for a crash when removing a selection ends with a fully selected table row.</p>

<div contenteditable="true">
<div id="start">foo<br><br></div>
<table border="1">
<tr><td>foo</td><td>bar</td><td id="end"></td></tr>
<tr><td>foo</td><td>bar</td><td>baz</td></tr>
</table>
</div>

<script>
if (window.layoutTestController)
    window.layoutTestController.dumpAsText();
    
start = document.getElementById("start");
end = document.getElementById("end");

window.getSelection().setBaseAndExtent(start, start.childNodes.length, end, end.childNodes.length);
document.execCommand("Delete");
</script>

</body>
