<html> 
<head>
<script>
if (window.testRunner)
     testRunner.dumpEditingCallbacks();
</script>


<script>

function editingTest() {
    var elem = document.getElementById("end");
    x = elem.offsetLeft + elem.offsetWidth + 10;
    y = elem.offsetTop + 10;
    
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseDown();
    eventSender.mouseUp();
    eventSender.mouseDown();
    eventSender.mouseUp();
}

</script>
</head>
<body>
<p>This tests double clicking inside and at the end of an editable div.  The selection that is created should not extend outside the editable region.</p>
<div contenteditable="true">This text is in an editable div<span id="end">.</span></div>

This text is outside the editable region.

</body>
<script>
editingTest();
</script>
</html>
