| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta name="viewport" content="width=device-width"> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <input id="testInput" type="text"> |
| <script> |
| description("Tests that KeyboardEvent.key is properly initialized on iOS."); |
| jsTestIsAsync = true; |
| |
| var tests = [['a', 'KeyA'], ['@', 'Digit2']]; |
| |
| function getTypingUIScript(x, y) |
| { |
| return ` |
| (function() { |
| uiController.didShowKeyboardCallback = function() { |
| uiController.typeCharacterUsingHardwareKeyboard('a', function() { |
| uiController.typeCharacterUsingHardwareKeyboard('@', function() { |
| uiController.uiScriptComplete(); |
| }); |
| }); |
| }; |
| uiController.singleTapAtPoint(${x}, ${y}, function() { }); |
| })();` |
| } |
| |
| var i = 0; |
| var testInput = document.getElementById("testInput"); |
| testInput.onkeydown = function(e) { |
| // Ignore the Shift key so as to normalize the test results across different iOS versions. |
| if (e.key == "Shift") |
| return; |
| event = e; |
| shouldBeEqualToString("event.key", "" + tests[i][0]); |
| shouldBeEqualToString("event.code", "" + tests[i][1]); |
| i++; |
| if (i == tests.length) |
| finishJSTest(); |
| }; |
| |
| const x = testInput.offsetLeft + 5; |
| const y = testInput.offsetTop + 5; |
| testRunner.runUIScript(getTypingUIScript(x, y), function() { }); |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |