<script>
if (window.layoutTestController)
     layoutTestController.dumpEditingCallbacks();
</script>

<body contenteditable="true"><span id="start" contenteditable="false">On</span>ly the first two letters of the first word in this sentence should be selected.  To run this test manually, double click between the first two letters of the first word of the first sentence.</body>

<script>
if (window.layoutTestController) {
    var s = window.getSelection();
    
    var start = document.getElementById("start");
    
    var x, y;
    
    x = start.offsetLeft + start.offsetWidth / 2;
    y = start.offsetTop + start.offsetHeight / 2;
    
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseDown();
    eventSender.mouseUp();
    eventSender.mouseDown();
    eventSender.mouseUp();
}
</script>