<p>This tests link deletion.  After deleting a link, subsequent text should be inserted into a link.</p>
<div id="div" contenteditable="true">Hello <a id="link" href="http://www.google.com/">b</a> World</div>
<ol id="console"></ol>

<script>
function log(str) {
    var li = document.createElement("li");
    li.appendChild(document.createTextNode(str));
    var console = document.getElementById("console");
    console.appendChild(li);
}
function shouldBe(expected, actual) {
    if (expected != actual)
        log("Failure. Expected: " + expected + ", Actual: " + actual);
    else
        log("Passed");
}

if (window.layoutTestController)
    layoutTestController.dumpEditingCallbacks();
    
var div = document.getElementById("div");
var sel = window.getSelection();

sel.setPosition(div, 0);
sel.modify("move", "forward", "word");
sel.modify("move", "forward", "word");
sel.modify("extend", "backward", "character");

document.execCommand("Delete");
document.execCommand("InsertText", false, "this text should be in a link");

var link = document.getElementById("link");
if (link)
    shouldBe(link.href, "http://www.google.com/");
else
    log("Failure, the link wasn't reinserted, or it had a different id.");

</script>