<!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>