<p>This tested for a crash when performing Range::extractContents on a range that has had the start or end removed from the document.</p>
<p>It's now impossible to create a range like this, but at one point with an earlier version of WebKit, it was possible.</p>
<div id="div" contenteditable="true">text <a href="http://www.apple.com/">link</a></div>
<ul id="console"></ul>

<script>
function log(str) {
    var li = document.createElement("li");
    li.appendChild(document.createTextNode(str));
    var console = document.getElementById("console");
    console.appendChild(li);
}

if (window.testRunner)
    window.testRunner.dumpAsText();
    
var div = document.getElementById("div");
var text = div.firstChild;
var link = div.lastChild;
var r = document.createRange();
r.setStart(text, 0);
r.setEnd(link, 0);
text.parentNode.removeChild(text);
r.extractContents();
log("No crash means success!");
</script>
