<script src="../../resources/dump-as-markup.js"></script>
<p>Layout test case for Bugzilla bug <a href="https://bugs.webkit.org/show_bug.cgi?id=84597">84597</a>.</p>
<p id="description">This test verifies removing of an (Un)OrderedList on a selection consisting of multiple list items (paragaraphs) when the end point of the selection points to the end of the last list item; followed by another paragraph not part of the selection/list.</p>
<div id="test" contenteditable="true">
<p id="start">This content should</p><p>not be displayed as</p><p id="end">an unordered list.</p>
<p>This is some content that should not be added to the selection or the list.</p>
</div>
<script>
Markup.description(document.getElementById('description').textContent);
var sel = window.getSelection();
var start = document.getElementById("start").firstChild;
var end = document.getElementById("end").firstChild;
sel.setBaseAndExtent(start, 0, end, 18);
document.execCommand("InsertUnorderedList", false, "");
document.execCommand("InsertUnorderedList", false, "");
Markup.dump("test");
</script>
