| <!DOCTYPE html> |
| <html> |
| <body> |
| <p>This test ensures WebKit does not execute the default event handler of keydown when the user presses TAB key while IME composition is taking place.<br> |
| To test manually, type "kyo" using Japanese hiragana keyboard in the first text field, and press TAB key.<br> |
| WebKit should not move the focus to the second text field.</p> |
| <div id="container"> |
| <label>First text field:<input id="first" type="text"></label><br> |
| <label>Second text field:<input id="second" type="text" onfocus="log('FAIL: the second text field got focused')"></label><br> |
| </div> |
| <pre id="result"></pre> |
| <script> |
| |
| const first = document.getElementById('first'); |
| function runTest() { |
| first.focus(); |
| first.selectionStart = 0; |
| first.selectionEnd = 0; |
| textInputController.setInputMethodHandler(function (event) { |
| if (event.characters[0] == '\t') { |
| textInputController.setMarkedText("\u4eca\u65e5", 0, 2); |
| return true; |
| } |
| return false; |
| }) |
| textInputController.setMarkedText("kyo", 0, 3); |
| eventSender.keyDown('\t'); |
| |
| if (document.activeElement != first) |
| return log('FAIL: the focus did not remain in the fisrt text field'); |
| |
| log('PASS'); |
| |
| document.getElementById('container').style.display = 'none'; |
| } |
| |
| function log(text) { |
| document.getElementById('result').textContent += text + '\n'; |
| } |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| runTest(); |
| } |
| |
| </script> |
| </body> |
| </html> |