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