<!DOCTYPE html>
<html>
<body>
<p>This test ensures drag-n-drop does not start when extending an existing selecting with shift + mouse drag, starting over a #text.</p>
<span style='font-size: 50px; padding: 10px;'>hello world</span>
<pre>
<script>

var span = document.getElementsByTagName('span')[0];
span.focus();

var dragStartCount = 0;
document.addEventListener('dragstart', function (event) { dragStartCount++; });

if (!window.testRunner || !window.eventSender)
    document.write('This test requires eventSender');
else {
    testRunner.dumpAsText();

    var y = span.offsetTop + span.offsetHeight / 2;
    eventSender.mouseMoveTo(span.offsetLeft + 5, y);
    eventSender.mouseDown();
    eventSender.leapForward(200);
    eventSender.mouseUp();

    eventSender.mouseMoveTo(span.offsetLeft + span.offsetWidth / 4, y);
    eventSender.mouseDown(0, ['shiftKey']);
    eventSender.leapForward(200);
    eventSender.mouseUp();

    eventSender.mouseMoveTo(span.offsetLeft + span.offsetWidth / 2, y);
    eventSender.mouseDown(0, ['shiftKey']);
    eventSender.leapForward(200);
    eventSender.mouseMoveTo(span.offsetLeft + span.offsetWidth, y);
    eventSender.leapForward(200);
    eventSender.mouseUp();

    document.writeln("Drag count: " + dragStartCount);
    span.parentNode.removeChild(span);
}
</script></pre>
</body>
</html>
