WebKit Bugzilla
Attachment 348980 Details for
Bug 189327
: [iOS] Add a test to ensure that DOM keyup events have the correct details
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-189327-20180905164116.patch (text/plain), 12.62 KB, created by
Daniel Bates
on 2018-09-05 16:41:16 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Daniel Bates
Created:
2018-09-05 16:41:16 PDT
Size:
12.62 KB
patch
obsolete
>Subversion Revision: 235512 >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 6553ed1c58209c8dfe9d410adf1b0303db74a3ac..0afd9e595d8fd87d26d24d67d3e73ac756f1afa0 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,19 @@ >+2018-09-05 Daniel Bates <dabates@apple.com> >+ >+ [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 NOBODY (OOPS!). >+ >+ 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-08-30 Youenn Fablet <youenn@apple.com> > > fast/mediastream/RTCPeerConnection-overloaded-operations.html is flaky after r235484 >diff --git a/LayoutTests/fast/events/ios/keyup-expected.txt b/LayoutTests/fast/events/ios/keyup-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..feda53286c4da0bf574a4ef75a97153cda1773fa >--- /dev/null >+++ b/LayoutTests/fast/events/ios/keyup-expected.txt >@@ -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 >+ >diff --git a/LayoutTests/fast/events/ios/keyup.html b/LayoutTests/fast/events/ios/keyup.html >new file mode 100644 >index 0000000000000000000000000000000000000000..5f0a9b9a82fd562762fbb7818e3d0a48df373b86 >--- /dev/null >+++ b/LayoutTests/fast/events/ios/keyup.html >@@ -0,0 +1,54 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<meta name="viewport" content="width=device-width"> >+<script src="../../../resources/ui-helper.js"></script> >+<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, `, ~, !, @, #, $, %, ^, &, *, (, ), -, _, =, +, [, ], {, }, \, |, ;, :, ', ", ,, <, ., >, /, ?, <return>.</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> >diff --git a/LayoutTests/resources/ui-helper.js b/LayoutTests/resources/ui-helper.js >index d53c1fd964844d2f25600fa1d829a1d96ab766d4..fbd2aa8b14a0e854749f8c955d6d460c62b49169 100644 >--- a/LayoutTests/resources/ui-helper.js >+++ b/LayoutTests/resources/ui-helper.js >@@ -311,7 +311,7 @@ window.UIHelper = class UIHelper { > 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)); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 189327
: 348980