<body style="margin: 0px">
<div>Make sure WebKit doesn't crash when web authors blast away everything in DOMNodeInserted handler! https://bugs.webkit.org/show_bug.cgi?id=22634</div>
<div id="dragstart" contentEditable>Drag something from here to the document below</div>
<iframe src="about:blank" id="iframe"></iframe>
<script>
var iframe = document.getElementById("iframe");
iframe.style.height = "20px";
var doc = iframe.contentDocument;
doc.body.style.margin = "0px";
var divForDrop = document.createElement("div");
divForDrop.contentEditable = true;
doc.body.appendChild(divForDrop);
divForDrop.appendChild(document.createTextNode("Drop on this line!"));

function clearDivDuringInsertion()
{
    doc.execCommand("selectall");
    doc.execCommand("delete");
    doc.execCommand("selectall");
}

divForDrop.addEventListener("DOMNodeInserted", clearDivDuringInsertion, true);

if (window.eventSender) {
    layoutTestController.dumpAsText();

    var startDiv = document.getElementById("dragstart");
    startDiv.focus();
    document.execCommand("selectall");

    var startX = startDiv.offsetLeft + 10;
    var startY = startDiv.offsetTop + 10;

    var endX = iframe.offsetLeft + divForDrop.offsetLeft + 10;
    var endY = iframe.offsetTop + divForDrop.offsetTop + 10;

    eventSender.mouseMoveTo(startX, startY);
    eventSender.mouseDown();
    eventSender.leapForward(1000);

    eventSender.mouseMoveTo(endX, endY);
    eventSender.mouseUp();
    
    document.body.innerHTML = "PASSED, no crash";
}

</script>
