[iOS] Key code is 0 for many hardware keyboard keys
[WebKit-https.git] / LayoutTests / fast / events / ios / keydown-keyup-in-non-editable-content.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta name="viewport" content="width=device-width">
5 <script src="../../../resources/ui-helper.js"></script>
6 <script>
7 if (window.testRunner) {
8     testRunner.dumpAsText();
9     testRunner.waitUntilDone();
10 }
11 </script>
12 </head>
13 <body onkeydown="handleKeyDown(event)" onkeyup="handleKeyUp(event)">
14 <p>This tests that DOM keydown and keyup events are dispatched to a non-editable &lt;body&gt; on iOS for hardware key presses of non-special keys. To run this test manually, verify that two messages are emitted when you press the following keys: <kbd>a</kbd>, <kbd>b</kbd>, <kbd>c</kbd>, <kbd>d</kbd>, <kbd>e</kbd>, <kbd>f</kbd>, <kbd>g</kbd>, <kbd>h</kbd>, <kbd>i</kbd>, <kbd>j</kbd>, <kbd>k</kbd>, <kbd>l</kbd>, <kbd>m</kbd>, <kbd>n</kbd>, <kbd>o</kbd>, <kbd>p</kbd>, <kbd>q</kbd>, <kbd>r</kbd>, <kbd>s</kbd>, <kbd>t</kbd>, <kbd>u</kbd>, <kbd>v</kbd>, <kbd>w</kbd>, <kbd>x</kbd>, <kbd>y</kbd>, <kbd>z</kbd>, <kbd>0</kbd>, <kbd>1</kbd>, <kbd>2</kbd>, <kbd>3</kbd>, <kbd>4</kbd>, <kbd>5</kbd>, <kbd>6</kbd>, <kbd>7</kbd>, <kbd>8</kbd>, <kbd>9</kbd>, <kbd>-</kbd>, <kbd>=</kbd>, <kbd>[</kbd>, <kbd>]</kbd>, <kbd>\</kbd>, <kbd>;</kbd>, <kbd>'</kbd>, <kbd>,</kbd>, <kbd>.</kbd>, <kbd>/</kbd>.</p>
15 <pre id="console"></pre>
16 <script>
17 const asciiCharacters = "abcdefghijklmnopqrstuvwxyz0123456789-=[]\\;',./".split("");
18 var remainingKeysToPress = asciiCharacters;
19
20 async function nextKeyPress()
21 {
22     if (!remainingKeysToPress.length) {
23         if (window.testRunner)
24             testRunner.notifyDone();
25         return;
26     }
27     let nextKey = remainingKeysToPress.shift();
28     UIHelper.typeCharacter(nextKey);
29 }
30
31 function handleKeyDown(event)
32 {
33     logKeyEvent(event);
34 }
35
36 function handleKeyUp(event)
37 {
38     logKeyEvent(event);
39     nextKeyPress();
40 }
41
42 function log(message)
43 {
44     document.getElementById("console").appendChild(document.createTextNode(message + "\n"));
45 }
46
47 function logKeyEvent(event)
48 {
49     let pieces = [];
50     for (let propertyName of ["type", "key", "code", "keyIdentifier", "keyCode", "charCode", "keyCode", "which"])
51         pieces.push(`${propertyName}: ${event[propertyName]}`);
52     log(pieces.join(", "));
53 }
54
55 function runTest()
56 {
57     if (!window.testRunner)
58         return;
59     nextKeyPress();
60 }
61
62 runTest();
63 </script>
64 </body>
65 </html>