chromium/third_party/blink/web_tests/fast/forms/selection-start-end-readonly.html

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta charset="utf-8">
<script src="../../resources/js-test.js"></script>
</head>
<body>
<p id="description"></p>
<input id="text" readonly="readonly" value="2009-04-29"/><br/>
<textarea id="area" readonly="readonly">2009-04-29</textarea></div>
<div id="console"></div>
<div>
<script type="text/javascript">
description('Tests for selectionStart and selectionEnd on read-only INPUT and TEXTAREA. <br/> <a href="https://bugs.webkit.org/show_bug.cgi?id=25444">bug 25444</a>: SelectionStart, selectionEnd properties return wrong values when the selection is in a form input.');

// See https://heycam.github.io/webidl/#abstract-opdef-converttoint
function toUInt32(x) {
    var y = Math.pow(2, 32);
    return x - Math.floor(x / y) * y;
}

function startTest(element, start, end) {
    element.setSelectionRange(start, end);

    start = toUInt32(start);
    end = end > 10 ? 10 : end;
    start = start > end ? end : start;

    if (element.selectionStart != start)
        testFailed('element.selectionStart' + ' should be ' + start + ' but it is ' + element.selectionStart);
    else
        testPassed('element.selectionStart' + ' is ' + element.selectionStart);

    if (element.selectionEnd != end)
        testFailed('element.selectionEnd' + ' should be ' + end + ' but it is ' + element.selectionEnd);
    else
        testPassed('element.selectionEnd' + ' is ' + element.selectionEnd);
}

function testHandler(element) {
    var offsets = [[0, 10], [0, 9], [1, 10], [5,5], [8,5], [-1,0], [-1,50]];
    for (var i = 0; i < offsets.length; i++)
        startTest(element, offsets[i][0], offsets[i][1]);
}

testHandler(document.getElementById('text'));
testHandler(document.getElementById('area'));        

 </script>  
 </body>
</html>