<html>
<head>
<script id="script1"></script>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

window.onload = function () {
    document.designMode = "on";
    var selection = window.getSelection();
    document.execCommand("SelectAll", false)
    var range = selection.getRangeAt(0);

    range.insertNode(document.getElementById("script1"));
    document.execCommand('InsertText', false, 'efgh');
    document.execCommand('JustifyFull', false, false);

    selection.deleteFromDocument();
    document.execCommand("Undo", false, false);

    document.execCommand("Delete");

    document.documentElement.innerHTML = "PASS. WebKit didn't crash.";
};
</script>
</head>
<body>
    <h1>abcd</h1>
</body>
</html>
