<html>
<head>
    <style>
        span { border: 10px solid blue; }
        div { display:inline-block; }
    </style>
    <script>
        function test()
        {
            var span = document.getElementById("span");
            var x = span.offsetLeft + span.offsetWidth - 5;
            var y = span.offsetTop + (span.offsetHeight / 2);
            if (window.eventSender) {
                eventSender.mouseMoveTo(x, y);
                eventSender.mouseDown();
                eventSender.mouseUp();
            }
        }
    </script>
</head>
<body onload="test()" contenteditable="true">
    <p>This test is for <a href="http://bugs.webkit.org/show_bug.cgi?id=14498">http://bugs.webkit.org/show_bug.cgi?id=14498</a>.</p>
    <p>Click inside the right border. The caret should move after &ldquo;bar&rdquo;.</p>
    <span id="span" style="">
        <div>foo</div>
        <div>bar</div>
    </span>
</body>
</html>
