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

Side by Side 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, 10 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 unified diff | Download patch
OLDNEW
1 /* Copyright (c) 2014 The Chromium Authors. All rights reserved. 1 /* Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. 3 * found in the LICENSE file.
4 */ 4 */
5 5
6 /**
7 * @param {string} eventName
8 * @param {number=} opt_space
9 * @return {string}
10 */
11 function jsonifyJavascriptKeyEvent(event, eventName, opt_space) {
12 return "JavaScript '" + eventName + "' event = " + JSON.stringify(
13 event,
14 ['type', 'alt', 'shift', 'control', 'meta', 'charCode', 'keyCode',
15 'keyIdentifier', 'repeat'],
16 opt_space);
17 };
18
19 /**
20 * @param {ChordTracker} jsChordTracker
21 * @param {Event} event
22 * @return {void}
23 */
24 function handleJavascriptKeyDownEvent(jsChordTracker, event) {
25 appendToTextLog(jsonifyJavascriptKeyEvent(event, 'keydown', undefined));
26 jsChordTracker.addKeyDownEvent(
27 event.keyCode, jsonifyJavascriptKeyEvent(event, 'keydown', 2));
28 }
29
30 /**
31 * @param {ChordTracker} jsChordTracker
32 * @param {Event} event
33 * @return {void}
34 */
35 function handleJavascriptKeyUpEvent(jsChordTracker, event) {
36 appendToTextLog(jsonifyJavascriptKeyEvent(event, 'keyup', undefined));
37 jsChordTracker.addKeyUpEvent(
38 event.keyCode, jsonifyJavascriptKeyEvent(event, 'keyup', 2));
39 }
40
41 /** @constructor */
42 var PNaClEvent = function() {
43 /** @type {string} */
44 this.type = "";
45 /** @type {number} */
46 this.modifiers = 0;
47 /** @type {number} */
48 this.keyCode = 0;
49 /** @type {string|undefined} */
50 this.characterText = undefined;
51 /** @type {string} */
52 this.code = "";
53 };
54
55 /**
56 * @param {PNaClEvent} event
57 * @param {number|undefined} space
58 * @return {string}
59 */
60 function jsonifyPnaclKeyboardInputEvent(event, space) {
61 return "PNaCl KeyboardInputEvent = " + JSON.stringify(
62 event,
63 ['type', 'modifiers', 'keyCode', 'characterText', 'code'],
64 space);
65 };
66
67 /**
68 * @param {ChordTracker} pnaclChordTracker
69 * @param {Event} event
70 * @return {void}
71 */
72 function handlePNaclMessage(pnaclChordTracker, event) {
73 var pnaclEvent = /** @type {PNaClEvent} */ (event.data);
74
75 appendToTextLog(jsonifyPnaclKeyboardInputEvent(pnaclEvent, undefined));
76 var title = jsonifyPnaclKeyboardInputEvent(pnaclEvent, 2);
77 if (pnaclEvent.type == "KEYDOWN") {
78 pnaclChordTracker.addKeyDownEvent(pnaclEvent.keyCode, title);
79 }
80 if (pnaclEvent.type == "KEYUP") {
81 pnaclChordTracker.addKeyUpEvent(pnaclEvent.keyCode, title);
82 }
83 if (pnaclEvent.type == "CHAR") {
84 pnaclChordTracker.addCharEvent(pnaclEvent.characterText, title);
85 }
86 }
87
88 /**
89 * @param {string} str
90 * @return {void}
91 */
92 function appendToTextLog(str) {
93 var textLog = document.getElementById('text-log');
94 var div = document.createElement('div');
95 div.innerText = str;
96 textLog.appendChild(div);
97 }
98
6 function onLoad() { 99 function onLoad() {
7 var parentDiv = document.getElementById('key-log'); 100 // Start listening to Javascript keyup/keydown events.
8 var chordTracker = new ChordTracker(parentDiv); 101 var jsLog = document.getElementById('javascript-log');
102 var jsChordTracker = new ChordTracker(jsLog);
9 document.body.addEventListener( 103 document.body.addEventListener(
10 'keydown', chordTracker.addKeyEvent.bind(chordTracker), false); 104 'keydown',
105 function (event) {
106 handleJavascriptKeyDownEvent(jsChordTracker, event);
107 },
108 false);
11 document.body.addEventListener( 109 document.body.addEventListener(
12 'keyup', chordTracker.addKeyEvent.bind(chordTracker), false); 110 'keyup',
111 function (event) {
112 handleJavascriptKeyUpEvent(jsChordTracker, event);
113 },
114 false);
115
116 // Start listening to PNaCl keyboard input events.
117 var pnaclLog = document.getElementById('pnacl-log');
118 var pnaclChordTracker = new ChordTracker(pnaclLog);
119 document.getElementById('pnacl-listener').addEventListener(
120 'message',
121 function (message) {
122 handlePNaclMessage(pnaclChordTracker, message);
123 },
124 true);
125
126 // Start listening to generic, source-agnostic events.
13 window.addEventListener( 127 window.addEventListener(
14 'blur', chordTracker.releaseAllKeys.bind(chordTracker), false); 128 'blur',
129 function () {
130 jsChordTracker.releaseAllKeys();
131 pnaclChordTracker.releaseAllKeys();
132 },
133 false);
15 document.getElementById('clear-log').addEventListener( 134 document.getElementById('clear-log').addEventListener(
16 'click', function() { parentDiv.innerText = ''; }, false); 135 'click',
136 function() {
137 jsLog.innerText = '';
138 pnaclLog.innerText = '';
139 document.getElementById('text-log').innerText = '';
140 },
141 false);
17 } 142 }
18 143
19 window.addEventListener('load', onLoad, false); 144 window.addEventListener('load', onLoad, false);
OLDNEW
« 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