| <!DOCTYPE html> |
| <html> |
| <body> |
| <p>This tests changing the focus on keypress event. The character typed by user should be inserted into input. This test only runs in DRT.</p> |
| <pre><script> |
| |
| function runTest(name, shouldChangeSelection) { |
| var dummy = document.createElement('input'); |
| document.body.appendChild(dummy); |
| |
| var element = document.createElement(name); |
| document.body.appendChild(element); |
| element.addEventListener('keypress', function() { |
| if (element.value.length >= 2) |
| dummy.focus(); |
| }) |
| |
| document.writeln(name + (shouldChangeSelection ? ' with selectionchange' : ' without selectionchange')); |
| |
| element.focus(); |
| eventSender.keyDown('a'); |
| eventSender.leapForward(100); |
| eventSender.keyDown(name == 'textarea' ? '\n' : 'b'); |
| eventSender.leapForward(100); |
| if (shouldChangeSelection) { |
| element.selectionStart = 1; |
| element.selectionEnd = 1; |
| } |
| eventSender.keyDown('c'); |
| eventSender.leapForward(100); |
| |
| var expected = null; |
| if (name == 'textarea') |
| expected = shouldChangeSelection ? 'ac\n' : 'a\nc'; |
| else |
| expected = shouldChangeSelection ? 'acb' : 'abc'; |
| |
| if (element.value == expected) |
| document.writeln('PASS'); |
| else |
| document.writeln('FAIL: value was "' + element.value + '" but expected "' + expected + '"'); |
| document.writeln(); |
| } |
| |
| if (window.testRunner && window.eventSender) { |
| testRunner.dumpAsText(); |
| |
| runTest('input', false); |
| runTest('input', true); |
| runTest('textarea', false); |
| runTest('textarea', true); |
| |
| document.writeln('DONE'); |
| } |
| |
| </script></pre> |
| </body> |
| </html> |