<script src=../editing.js language="JavaScript" type="text/JavaScript"></script>
<script>
function editingTest() {
    if (!window.layoutTestController)
        return;
    
    window.layoutTestController.waitUntilDone();
    
    // Give focus to the subframe so that Select All will operate on it, and not the main frame.
    eventSender.mouseMoveTo(50, 50);
    eventSender.mouseDown();
    eventSender.mouseUp();
    
    selectAllCommand();
    deleteCommand();
    
    window.layoutTestController.notifyDone();
}
</script>
<body bgcolor="lightyellow" contenteditable="true">
<div id="test">hello world</div>

<script>
runEditingTest();
</script>

</body>