<!DOCTYPE html>
<html> 
<head>
<style>
.editing { 
    border: 2px solid red; 
    font-size: 24px; 
}
.explanation { 
    border: 2px solid blue; 
    padding: 12px; 
    font-size: 24px; 
    margin-bottom: 24px;
}
.scenario { margin-bottom: 16px;}
.scenario:first-line { font-weight: bold; margin-bottom: 16px;}
.expected-results:first-line { font-weight: bold }
</style>
</head> 
<body>
<div class="explanation">
<div class="scenario">
Tests: 
<br>
Smart paste when pasting a paragraph between two paragraphs.
</div>
<div class="expected-results">
Expected Results:
<br>
A newline should be added between the preexisting paragraphs and the paragraph that's pasted. This should work with multiple pastes. The caret should end up on the next line, thus allowing another paragraph to be pasted on the next line. It should like this:
<BR>
Test paragraph.
<BR>
<BR>
Test paragraph.
<BR>
<BR>
Test paragraph.
<BR>
<BR>
Last test paragraph.
</div>
</div>

<div contenteditable id="root" class="editing" style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space;">
<div id="test">
Test paragraph.
</div>
<div><br></div>
<div>
Last test paragraph.
</div>
</div>
<script src="../editing.js"></script>
<script src="../../resources/ui-helper.js"></script>
<script>

async function editingTest() {
    internals.settings.setEditingBehavior("ios");
    await UIHelper.selectWordByDoubleTapOrClick(document.getElementById('test'));
    extendSelectionForwardByLineBoundaryCommand();
    copyCommand();
    moveSelectionForwardByCharacterCommand();
    moveSelectionForwardByCharacterCommand();
    pasteCommand();
    pasteCommand();
}

runDumpAsTextEditingTest(true);
</script>
</body>
</html>
