chromium/third_party/blink/web_tests/fast/events/touch/gesture/gesture-tap-setrangetext-with-events.html

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

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

        textfield.addEventListener(eventType, setSelectionRange);
        eventSender.gestureTapDown(tx, ty);
        eventSender.gestureShowPress(tx, ty);
        eventSender.gestureTap(tx, ty);
        assert_equals(textfield.selectionStart, 0);
        assert_equals(textfield.selectionEnd, 5);
        textfield.setSelectionRange(0, 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 during a tap.");
</script>