<body>
<p>Test that forward delete key works.</p>
<div id=result>Testing...</div>
<div id="div" contenteditable="true">123456</div>

<script>
if (window.testRunner)
    testRunner.dumpAsText();

text = document.getElementById("div").firstChild;
window.getSelection().setBaseAndExtent(text, 0, text, 1);
if (window.eventSender) {
    eventSender.keyDown("Delete");
    eventSender.keyDown("Delete");
    if (text.data == "3456")
        document.getElementById("result").innerHTML = "PASS";
    else
        document.getElementById("result").innerHTML = "FAIL: " + text.data;
    document.body.removeChild(document.getElementById("div"));
} else {
    document.getElementById("result").innerHTML = "Please verify that forward delete works manually.";
}
</script>
</body>
