<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.testRunner)
    window.testRunner.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>
