chromium/third_party/blink/web_tests/fast/forms/setrangetext-within-events.html

<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
async_test(function(t) {
    window.onload = t.step_func(function() {
        if (!window.eventSender) {
            t.done();
            return;
        }
        doSetSelectionRange('focus');
        doSetSelectionRange('mousedown');
        doSetSelectionRange('mouseup');
        doSetSelectionRange('click');
        t.done();
    });

    function doSetSelectionRange(eventType) {
        var textfield = document.getElementById('textfield');
        textfield.setSelectionRange(0, 1);
        var tx = textfield.offsetLeft + 4;
        var ty = textfield.offsetTop + 4;

        textfield.addEventListener(eventType, setSelectionRange);
        eventSender.mouseMoveTo(tx, ty);
        eventSender.mouseDown();
        eventSender.mouseUp();
        if (eventType === 'mousedown') {
            assert_equals(textfield.selectionStart, 0);
            assert_equals(textfield.selectionEnd, 0);
        } else {
            assert_equals(textfield.selectionStart, 0);
            assert_equals(textfield.selectionEnd, 5);
        }

        eventSender.leapForward(1000);
        eventSender.mouseMoveTo(textfield.offsetLeft , textfield.offsetTop);
        eventSender.mouseDown();
        eventSender.mouseUp();
        textfield.blur();

        assert_equals(textfield.selectionStart, 0);
        assert_equals(textfield.selectionEnd, 0);
        textfield.removeEventListener(eventType, setSelectionRange);
    }

    function setSelectionRange(e) {
        var textfield = document.getElementById('textfield');
        textfield.setSelectionRange(0, textfield.value.length);
    }
}, "This tests the selection of the text field after setSelectionRange is called.");
</script>
<input type="text" value="value" id="textfield"></input>