<script>
if (window.testRunner)
     testRunner.dumpEditingCallbacks();
</script>
<p>Tests for a bug in the paragraph separator insertion code.  Only one newline should be added.</p>
<div id="test" contenteditable="true">foo<div>bar</div></div>

<script type="text/javascript" src="../editing.js"></script>
<script>
if (window.internals)
    internals.settings.setEditingBehavior("mac");
var e = document.getElementById("test");
var s = window.getSelection();

setSelectionCommand(e, 0, e, 0);
moveSelectionForwardByWordCommand();
insertParagraphCommand();
</script>
