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

Side by Side Diff: remoting/tools/javascript_key_tester/main.js

Issue 900983003: Clean-up key tester. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reviewer feedback. 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
« no previous file with comments | « remoting/tools/javascript_key_tester/main.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 /** 6 function onLoad() {
7 * @param {string} eventName 7 var jsLog = document.getElementById('javascript-log');
8 * @param {number=} opt_space 8 var pnaclLog = document.getElementById('pnacl-log');
9 * @return {string} 9 var pnaclPlugin = document.getElementById('pnacl-plugin');
10 */ 10 var pnaclListener = document.getElementById('pnacl-listener');
11 function jsonifyJavascriptKeyEvent(event, eventName, opt_space) { 11 var textLog = document.getElementById('text-log');
12 return "JavaScript '" + eventName + "' event = " + JSON.stringify( 12 var textLogContainer = document.getElementById('text-log-container');
13 event,
14 ['type', 'alt', 'shift', 'control', 'meta', 'charCode', 'keyCode',
15 'keyIdentifier', 'repeat'],
16 opt_space);
17 };
18 13
19 /** 14 var eventListeners = new EventListeners(jsLog, pnaclLog, textLog,
20 * @param {ChordTracker} jsChordTracker 15 pnaclPlugin, pnaclListener);
21 * @param {Event} event 16 eventListeners.activate();
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 17
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
99 function onLoad() {
100 // Start listening to Javascript keyup/keydown events.
101 var jsLog = document.getElementById('javascript-log');
102 var jsChordTracker = new ChordTracker(jsLog);
103 document.body.addEventListener(
104 'keydown',
105 function (event) {
106 handleJavascriptKeyDownEvent(jsChordTracker, event);
107 },
108 false);
109 document.body.addEventListener(
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.
127 window.addEventListener(
128 'blur',
129 function () {
130 jsChordTracker.releaseAllKeys();
131 pnaclChordTracker.releaseAllKeys();
132 },
133 false);
134 document.getElementById('clear-log').addEventListener( 18 document.getElementById('clear-log').addEventListener(
135 'click', 19 'click',
136 function() { 20 function() {
137 jsLog.innerText = ''; 21 jsLog.innerText = '';
138 pnaclLog.innerText = ''; 22 pnaclLog.innerText = '';
139 document.getElementById('text-log').innerText = ''; 23 textLog.innerText = '';
24 },
25 false);
26 document.getElementById('show-log').addEventListener(
27 'click',
28 function() {
29 eventListeners.deactivate();
30 textLogContainer.hidden = false;
31
32 var selection = window.getSelection();
33 var range = document.createRange();
34 range.selectNodeContents(textLog);
35 selection.removeAllRanges();
36 selection.addRange(range);
37 },
38 false);
39 document.getElementById('hide-log').addEventListener(
40 'click',
41 function() {
42 eventListeners.activate();
43 textLogContainer.hidden = true;
140 }, 44 },
141 false); 45 false);
142 } 46 }
143 47
144 window.addEventListener('load', onLoad, false); 48 window.addEventListener('load', onLoad, false);
OLDNEW
« no previous file with comments | « remoting/tools/javascript_key_tester/main.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698