<!DOCTYPE html>
<html>
<head>
<script src="../editing.js"></script>
<script src="../../resources/dump-as-markup.js"></script>
<script>

Markup.waitUntilDone();

function editingTest() {
    document.body.focus();
    window.getSelection().setPosition(document.body, 0);

    if (window.testRunner)
        testRunner.dumpEditingCallbacks();

    Markup.description('There was a bug when pasting at the end of the block.\n'+
    'The content was inserted at the start of the block instead of the end. This tests the insert-at-end case.');

    selectAllCommand();
    copyCommand();
    moveSelectionForwardByCharacterCommand();
    insertParagraphCommand();
    pasteCommand();

    Markup.dump(document.body);
    Markup.notifyDone();
}

</script>
</head> 
<body contenteditable id="test" onload="editingTest()">
<p><font face="Monaco"><b>hello</b></font></p>
<p><font face="Monaco"><b>there</b></font></p>
</body>
</html>
