Title: [235759] trunk/LayoutTests
Revision
235759
Author
[email protected]
Date
2018-09-06 14:48:34 -0700 (Thu, 06 Sep 2018)

Log Message

[iOS] Add a test to ensure that DOM keyup events have the correct details
https://bugs.webkit.org/show_bug.cgi?id=189327

Reviewed by Wenson Hsieh.

Until we fix <rdar://problem/35282761> DOM keyup events will have incorrect details on iOS
when dispatched in response to a hardware keyboard press. For now, land expected failure results.

* fast/events/ios/keyup-expected.txt: Added.
* fast/events/ios/keyup.html: Added.
* resources/ui-helper.js:
(window.UIHelper.typeCharacter): Escape backslash characters in order to build up
a well-formed UI script to evaluate.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (235758 => 235759)


--- trunk/LayoutTests/ChangeLog	2018-09-06 21:37:15 UTC (rev 235758)
+++ trunk/LayoutTests/ChangeLog	2018-09-06 21:48:34 UTC (rev 235759)
@@ -1,3 +1,19 @@
+2018-09-06  Daniel Bates  <[email protected]>
+
+        [iOS] Add a test to ensure that DOM keyup events have the correct details
+        https://bugs.webkit.org/show_bug.cgi?id=189327
+
+        Reviewed by Wenson Hsieh.
+
+        Until we fix <rdar://problem/35282761> DOM keyup events will have incorrect details on iOS
+        when dispatched in response to a hardware keyboard press. For now, land expected failure results.
+
+        * fast/events/ios/keyup-expected.txt: Added.
+        * fast/events/ios/keyup.html: Added.
+        * resources/ui-helper.js:
+        (window.UIHelper.typeCharacter): Escape backslash characters in order to build up
+        a well-formed UI script to evaluate.
+
 2018-09-06  Andy Estes  <[email protected]>
 
         [Apple Pay] Rename the -apple-pay-button-type value "checkout" to "check-out"

Added: trunk/LayoutTests/fast/events/ios/keyup-expected.txt (0 => 235759)


--- trunk/LayoutTests/fast/events/ios/keyup-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/events/ios/keyup-expected.txt	2018-09-06 21:48:34 UTC (rev 235759)
@@ -0,0 +1,73 @@
+This tests that DOM keyup events are dispatched on iOS for hardware key presses. To run this test manually, focus the text field below and then verify that a message is emitted when you press the following keys: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, `, ~, !, @, #, $, %, ^, &, *, (, ), -, _, =, +, [, ], {, }, \, |, ;, :, ', ", ,, <, ., >, /, ?, <return>.
+
+
+type: keyup, key: a, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: b, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: c, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: d, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: e, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: f, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: g, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: h, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: i, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: j, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: k, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: l, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: m, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: n, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: o, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: p, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: q, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: r, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: s, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: t, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: u, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: v, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: w, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: x, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: y, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: z, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 0, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 1, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 2, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 3, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 4, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 5, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 6, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 7, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 8, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: 9, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ~, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ~, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: !, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: @, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: #, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: $, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: %, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ^, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: &, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: *, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: (, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ), code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: -, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: _, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: =, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: +, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: [, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ], code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: {, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: }, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: \, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: |, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ;, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: :, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ', code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ", code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ,, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: <, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ., code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: >, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: /, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: ?, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+type: keyup, key: Enter, code: Unidentified, keyIdentifier: Unidentified, keyCode: 0, charCode: 0, keyCode: 0, which: 0
+

Added: trunk/LayoutTests/fast/events/ios/keyup.html (0 => 235759)


--- trunk/LayoutTests/fast/events/ios/keyup.html	                        (rev 0)
+++ trunk/LayoutTests/fast/events/ios/keyup.html	2018-09-06 21:48:34 UTC (rev 235759)
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width">
+<script src=""
+<script>
+if (window.testRunner) {
+    testRunner.dumpAsText();
+    testRunner.waitUntilDone();
+}
+</script>
+</head>
+<body>
+<p>This tests that DOM keyup events are dispatched on iOS for hardware key presses. To run this test manually, focus the text field below and then verify that a message is emitted when you press the following keys: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, `, ~, !, @, #, $, %, ^, &, *, (, ), -, _, =, +, [, ], {, }, \, |, ;, :, ', &quot;, ,, <, ., >, /, ?, &lt;return&gt;.</p>
+<input type="text" id="input" _onkeyup_="logKeyEvent(event)">
+<pre id="console"></pre>
+<script>
+const asciiCharactersToType = "abcdefghijklmnopqrstuvwxyz0123456789`~!@#$%^&*()-_=+[]{}\\|;:'\",<.>/?\r";
+var numberOfFiredKeyEventsForTestComplete;
+var numberOfFiredKeyEvents = 0;
+
+function log(message)
+{
+    document.getElementById("console").appendChild(document.createTextNode(message + "\n"));
+}
+
+function logKeyEvent(event)
+{
+    let pieces = [];
+    for (let propertyName of ["type", "key", "code", "keyIdentifier", "keyCode", "charCode", "keyCode", "which"])
+        pieces.push(`${propertyName}: ${event[propertyName]}`);
+    log(pieces.join(", "));
+    if (++numberOfFiredKeyEvents >= numberOfFiredKeyEventsForTestComplete && window.testRunner)
+        testRunner.notifyDone();
+}
+
+async function runTest()
+{
+    if (!window.testRunner)
+        return;
+
+    let charactersToType = asciiCharactersToType.split("");
+    numberOfFiredKeyEventsForTestComplete = charactersToType.length;
+
+    let input = document.getElementById("input");
+    await UIHelper.activateFormControl(input);
+    for (let character of charactersToType)
+        await UIHelper.typeCharacter(character);
+}
+
+runTest();
+</script>
+</body>
+</html>

Modified: trunk/LayoutTests/resources/ui-helper.js (235758 => 235759)


--- trunk/LayoutTests/resources/ui-helper.js	2018-09-06 21:37:15 UTC (rev 235758)
+++ trunk/LayoutTests/resources/ui-helper.js	2018-09-06 21:48:34 UTC (rev 235759)
@@ -311,7 +311,7 @@
             return;
         }
 
-        const escapedString = characterString.replace(/`/g, "\\`");
+        const escapedString = characterString.replace(/\\/g, "\\\\").replace(/`/g, "\\`");
         const uiScript = `uiController.typeCharacterUsingHardwareKeyboard(\`${escapedString}\`, () => uiController.uiScriptComplete())`;
         return new Promise(resolve => testRunner.runUIScript(uiScript, resolve));
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to