OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 * Namespace for keyboard utility functions. | 6 * Namespace for keyboard utility functions. |
7 */ | 7 */ |
8 var keyboard = {}; | 8 var keyboard = {}; |
9 | 9 |
10 /** | 10 /** |
(...skipping 28 matching lines...) Expand all Loading... |
39 * Handles the actual focus advancing by raising tab/shift-tab key events | 39 * Handles the actual focus advancing by raising tab/shift-tab key events |
40 * on C++ side. | 40 * on C++ side. |
41 * @param {boolean} reverse true if focus is moving backward, otherwise forward. | 41 * @param {boolean} reverse true if focus is moving backward, otherwise forward. |
42 */ | 42 */ |
43 keyboard.onAdvanceFocus = function(reverse) { | 43 keyboard.onAdvanceFocus = function(reverse) { |
44 chrome.send('raiseTabKeyEvent', [reverse]); | 44 chrome.send('raiseTabKeyEvent', [reverse]); |
45 }; | 45 }; |
46 | 46 |
47 /** | 47 /** |
48 * Swallows keypress and keyup events of arrow keys. | 48 * Swallows keypress and keyup events of arrow keys. |
49 * @param {Event} event Raised event. | 49 * @param {!Event} event Raised event. |
50 * @private | 50 * @private |
51 */ | 51 */ |
52 keyboard.onKeyIgnore_ = function(event) { | 52 keyboard.onKeyIgnore_ = function(event) { |
53 event = /** @type {KeyboardEvent} */(event); | 53 event = /** @type {!KeyboardEvent} */(event); |
54 | 54 |
55 if (event.ctrlKey || event.shiftKey || event.altKey || event.metaKey) | 55 if (hasKeyModifiers(event)) |
56 return; | 56 return; |
57 | 57 |
58 if (event.key == 'ArrowLeft' || | 58 if (event.key == 'ArrowLeft' || |
59 event.key == 'ArrowRight' || | 59 event.key == 'ArrowRight' || |
60 event.key == 'ArrowUp' || | 60 event.key == 'ArrowUp' || |
61 event.key == 'ArrowDown') { | 61 event.key == 'ArrowDown') { |
62 event.stopPropagation(); | 62 event.stopPropagation(); |
63 event.preventDefault(); | 63 event.preventDefault(); |
64 } | 64 } |
65 }; | 65 }; |
66 | 66 |
67 /** | 67 /** |
68 * Handles arrow key events, depending on if self is a content script. | 68 * Handles arrow key events, depending on if self is a content script. |
69 * @param {Event} event Raised event. | 69 * @param {!Event} event Raised event. |
70 * @private | 70 * @private |
71 */ | 71 */ |
72 keyboard.onKeyDown_ = function(event) { | 72 keyboard.onKeyDown_ = function(event) { |
73 event = /** @type {KeyboardEvent} */(event); | 73 event = /** @type {!KeyboardEvent} */(event); |
74 | 74 |
75 if (event.ctrlKey || event.shiftKey || event.altKey || event.metaKey) | 75 if (hasKeyModifiers(event)) |
76 return; | 76 return; |
77 | 77 |
78 // This file also gets embedded inside of the CfM/hotrod enrollment webview. | 78 // This file also gets embedded inside of the CfM/hotrod enrollment webview. |
79 // Events will bubble down into the webview, which means that the event | 79 // Events will bubble down into the webview, which means that the event |
80 // handler from the webui will steal the events meant for the webview. So we | 80 // handler from the webui will steal the events meant for the webview. So we |
81 // have to disable the webui handler if the active element is the webview. | 81 // have to disable the webui handler if the active element is the webview. |
82 // | 82 // |
83 // $ is defined differently depending on how this file gets executed; we have | 83 // $ is defined differently depending on how this file gets executed; we have |
84 // to use document.getElementById to get consistent behavior. | 84 // to use document.getElementById to get consistent behavior. |
85 // | 85 // |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 keyboard.initializeKeyboardFlow = function(injected) { | 130 keyboard.initializeKeyboardFlow = function(injected) { |
131 document.addEventListener('keydown', | 131 document.addEventListener('keydown', |
132 keyboard.onKeyDown_, true); | 132 keyboard.onKeyDown_, true); |
133 document.addEventListener('keypress', | 133 document.addEventListener('keypress', |
134 keyboard.onKeyIgnore_, true); | 134 keyboard.onKeyIgnore_, true); |
135 document.addEventListener('keyup', | 135 document.addEventListener('keyup', |
136 keyboard.onKeyIgnore_, true); | 136 keyboard.onKeyIgnore_, true); |
137 if (injected) | 137 if (injected) |
138 window.addEventListener('message', keyboard.onInitMessage_); | 138 window.addEventListener('message', keyboard.onInitMessage_); |
139 }; | 139 }; |
OLD | NEW |