Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(559)

Unified Diff: remoting/tools/javascript_key_tester/main.js

Issue 884703006: Handling PNaCl KeyboardInputEvent(s) in the key tester app. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding disable_nacl==0 condition and disabling _jscompile target. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/tools/javascript_key_tester/main.js
diff --git a/remoting/tools/javascript_key_tester/main.js b/remoting/tools/javascript_key_tester/main.js
index e777b48166945762201a344cdff73988519586bb..e37e4265262ef9b8430a62aee9439d985c9ca01c 100644
--- a/remoting/tools/javascript_key_tester/main.js
+++ b/remoting/tools/javascript_key_tester/main.js
@@ -3,17 +3,142 @@
* found in the LICENSE file.
*/
+/**
+ * @param {string} eventName
+ * @param {number=} opt_space
+ * @return {string}
+ */
+function jsonifyJavascriptKeyEvent(event, eventName, opt_space) {
+ return "JavaScript '" + eventName + "' event = " + JSON.stringify(
+ event,
+ ['type', 'alt', 'shift', 'control', 'meta', 'charCode', 'keyCode',
+ 'keyIdentifier', 'repeat'],
+ opt_space);
+};
+
+/**
+ * @param {ChordTracker} jsChordTracker
+ * @param {Event} event
+ * @return {void}
+ */
+function handleJavascriptKeyDownEvent(jsChordTracker, event) {
+ appendToTextLog(jsonifyJavascriptKeyEvent(event, 'keydown', undefined));
+ jsChordTracker.addKeyDownEvent(
+ event.keyCode, jsonifyJavascriptKeyEvent(event, 'keydown', 2));
+}
+
+/**
+ * @param {ChordTracker} jsChordTracker
+ * @param {Event} event
+ * @return {void}
+ */
+function handleJavascriptKeyUpEvent(jsChordTracker, event) {
+ appendToTextLog(jsonifyJavascriptKeyEvent(event, 'keyup', undefined));
+ jsChordTracker.addKeyUpEvent(
+ event.keyCode, jsonifyJavascriptKeyEvent(event, 'keyup', 2));
+}
+
+/** @constructor */
+var PNaClEvent = function() {
+ /** @type {string} */
+ this.type = "";
+ /** @type {number} */
+ this.modifiers = 0;
+ /** @type {number} */
+ this.keyCode = 0;
+ /** @type {string|undefined} */
+ this.characterText = undefined;
+ /** @type {string} */
+ this.code = "";
+};
+
+/**
+ * @param {PNaClEvent} event
+ * @param {number|undefined} space
+ * @return {string}
+ */
+function jsonifyPnaclKeyboardInputEvent(event, space) {
+ return "PNaCl KeyboardInputEvent = " + JSON.stringify(
+ event,
+ ['type', 'modifiers', 'keyCode', 'characterText', 'code'],
+ space);
+};
+
+/**
+ * @param {ChordTracker} pnaclChordTracker
+ * @param {Event} event
+ * @return {void}
+ */
+function handlePNaclMessage(pnaclChordTracker, event) {
+ var pnaclEvent = /** @type {PNaClEvent} */ (event.data);
+
+ appendToTextLog(jsonifyPnaclKeyboardInputEvent(pnaclEvent, undefined));
+ var title = jsonifyPnaclKeyboardInputEvent(pnaclEvent, 2);
+ if (pnaclEvent.type == "KEYDOWN") {
+ pnaclChordTracker.addKeyDownEvent(pnaclEvent.keyCode, title);
+ }
+ if (pnaclEvent.type == "KEYUP") {
+ pnaclChordTracker.addKeyUpEvent(pnaclEvent.keyCode, title);
+ }
+ if (pnaclEvent.type == "CHAR") {
+ pnaclChordTracker.addCharEvent(pnaclEvent.characterText, title);
+ }
+}
+
+/**
+ * @param {string} str
+ * @return {void}
+ */
+function appendToTextLog(str) {
+ var textLog = document.getElementById('text-log');
+ var div = document.createElement('div');
+ div.innerText = str;
+ textLog.appendChild(div);
+}
+
function onLoad() {
- var parentDiv = document.getElementById('key-log');
- var chordTracker = new ChordTracker(parentDiv);
+ // Start listening to Javascript keyup/keydown events.
+ var jsLog = document.getElementById('javascript-log');
+ var jsChordTracker = new ChordTracker(jsLog);
document.body.addEventListener(
- 'keydown', chordTracker.addKeyEvent.bind(chordTracker), false);
+ 'keydown',
+ function (event) {
+ handleJavascriptKeyDownEvent(jsChordTracker, event);
+ },
+ false);
document.body.addEventListener(
- 'keyup', chordTracker.addKeyEvent.bind(chordTracker), false);
+ 'keyup',
+ function (event) {
+ handleJavascriptKeyUpEvent(jsChordTracker, event);
+ },
+ false);
+
+ // Start listening to PNaCl keyboard input events.
+ var pnaclLog = document.getElementById('pnacl-log');
+ var pnaclChordTracker = new ChordTracker(pnaclLog);
+ document.getElementById('pnacl-listener').addEventListener(
+ 'message',
+ function (message) {
+ handlePNaclMessage(pnaclChordTracker, message);
+ },
+ true);
+
+ // Start listening to generic, source-agnostic events.
window.addEventListener(
- 'blur', chordTracker.releaseAllKeys.bind(chordTracker), false);
+ 'blur',
+ function () {
+ jsChordTracker.releaseAllKeys();
+ pnaclChordTracker.releaseAllKeys();
+ },
+ false);
document.getElementById('clear-log').addEventListener(
- 'click', function() { parentDiv.innerText = ''; }, false);
+ 'click',
+ function() {
+ jsLog.innerText = '';
+ pnaclLog.innerText = '';
+ document.getElementById('text-log').innerText = '';
+ },
+ false);
}
window.addEventListener('load', onLoad, false);
« no previous file with comments | « remoting/tools/javascript_key_tester/main.html ('k') | remoting/tools/javascript_key_tester/pnacl/remoting_key_tester.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698