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 e37e4265262ef9b8430a62aee9439d985c9ca01c..1dc8bbeed3434444230d7791af3a834cee1e0a46 100644 |
--- a/remoting/tools/javascript_key_tester/main.js |
+++ b/remoting/tools/javascript_key_tester/main.js |
@@ -3,140 +3,44 @@ |
* 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() { |
- // Start listening to Javascript keyup/keydown events. |
var jsLog = document.getElementById('javascript-log'); |
- var jsChordTracker = new ChordTracker(jsLog); |
- document.body.addEventListener( |
- 'keydown', |
- function (event) { |
- handleJavascriptKeyDownEvent(jsChordTracker, event); |
- }, |
- false); |
- document.body.addEventListener( |
- '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); |
+ var pnaclPlugin = document.getElementById('pnacl-plugin'); |
+ var pnaclListener = document.getElementById('pnacl-listener'); |
+ var textLog = document.getElementById('text-log'); |
+ var textLogContainer = document.getElementById('text-log-container'); |
+ |
+ var eventListeners = new EventListeners(jsLog, pnaclLog, textLog, |
+ pnaclPlugin, pnaclListener); |
+ eventListeners.activate(); |
- // Start listening to generic, source-agnostic events. |
- window.addEventListener( |
- 'blur', |
- function () { |
- jsChordTracker.releaseAllKeys(); |
- pnaclChordTracker.releaseAllKeys(); |
- }, |
- false); |
document.getElementById('clear-log').addEventListener( |
'click', |
function() { |
jsLog.innerText = ''; |
pnaclLog.innerText = ''; |
- document.getElementById('text-log').innerText = ''; |
+ textLog.innerText = ''; |
+ }, |
+ false); |
+ document.getElementById('show-log').addEventListener( |
+ 'click', |
+ function() { |
+ eventListeners.deactivate(); |
+ textLogContainer.hidden = false; |
+ |
+ var selection = window.getSelection(); |
+ var range = document.createRange(); |
+ range.selectNodeContents(textLog); |
+ selection.removeAllRanges(); |
+ selection.addRange(range); |
+ }, |
+ false); |
+ document.getElementById('hide-log').addEventListener( |
+ 'click', |
+ function() { |
+ eventListeners.activate(); |
+ textLogContainer.hidden = true; |
}, |
false); |
} |