<p>This tests for a crasher when deleting contents of a table cell. <a href="radr://problem/4845371">&lt;radr://problem/4845371&gt;</a></p>
<div id="div" contenteditable="true"><table><tr><td>foo <a href="http://www.google.com/">bar</a></td><td>baz</td></tr></table></div>

<script src="../editing.js"></script>
<script>
if (window.internals)
    internals.settings.setEditingBehavior("win");

runDumpAsTextEditingTest(true);

function editingTest() {
    var div = document.getElementById("div");
    var sel = window.getSelection();

    sel.setPosition(div, 0);
    moveSelectionForwardByCharacterCommand();
    extendSelectionForwardByWordCommand();
    extendSelectionForwardByWordCommand();
    extendSelectionBackwardByCharacterCommand();
    deleteCommand();
}
</script>
