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

<style>
body { margin: 0; padding: 0 }
</style>
<script type="text/javascript">
function step7()
{
    eventSender.mouseUp();
    layoutTestController.notifyDone();
}

function step6()
{
    eventSender.mouseMoveTo(50, 10);
    window.setTimeout(step7, 1);
}

function step5()
{
    eventSender.mouseMoveTo(31, 10);
    window.setTimeout(step6, 1);
}

function step4()
{
    eventSender.mouseDown();
    window.setTimeout(step5, 1);
}

function step3()
{
    eventSender.mouseMoveTo(30, 10);
    window.setTimeout(step4, 1000);
}

function step2()
{
    eventSender.mouseUp();
    window.setTimeout(step3, 1);
}

function step1()
{
    eventSender.mouseDown();
    window.setTimeout(step2, 1);
}

function step0()
{
    eventSender.mouseMoveTo(1, 10);
    window.setTimeout(step1, 1);
}

step0();
layoutTestController.waitUntilDone();
</script>
</head>
<body>
<div contenteditable>Select me, select me, select me</div>
</body>
</html>
