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

Side by Side Diff: chrome/browser/resources/chromeos/switch_access/switch_access.js

Issue 2939133004: Added to options page to let users change keyboard mappings. (Closed)
Patch Set: Fixed merge conflict and formatting error Created 3 years, 6 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 * Class to manage SwitchAccess and interact with other controllers. 6 * Class to manage SwitchAccess and interact with other controllers.
7 * 7 *
8 * @constructor 8 * @constructor
9 * @implements {SwitchAccessInterface} 9 * @implements {SwitchAccessInterface}
10 */ 10 */
11 function SwitchAccess() { 11 function SwitchAccess() {
12 console.log('Switch access is enabled'); 12 console.log('Switch access is enabled');
13 13
14 /** 14 /**
15 * User commands.
16 *
17 * @private {Commands}
18 */
19 this.commands_ = null;
20
21 /**
15 * User preferences. 22 * User preferences.
16 * 23 *
17 * @type {SwitchAccessPrefs} 24 * @private {SwitchAccessPrefs}
18 */ 25 */
19 this.switchAccessPrefs = null; 26 this.switchAccessPrefs_ = null;
20 27
21 /** 28 /**
22 * Handles changes to auto-scan. 29 * Handles changes to auto-scan.
23 * 30 *
24 * @private {AutoScanManager} 31 * @private {AutoScanManager}
25 */ 32 */
26 this.autoScanManager_ = null; 33 this.autoScanManager_ = null;
27 34
28 /** 35 /**
29 * Handles keyboard input. 36 * Handles keyboard input.
(...skipping 13 matching lines...) Expand all
43 this.init_(); 50 this.init_();
44 } 51 }
45 52
46 SwitchAccess.prototype = { 53 SwitchAccess.prototype = {
47 /** 54 /**
48 * Set up preferences, controllers, and event listeners. 55 * Set up preferences, controllers, and event listeners.
49 * 56 *
50 * @private 57 * @private
51 */ 58 */
52 init_: function() { 59 init_: function() {
53 this.switchAccessPrefs = new SwitchAccessPrefs(); 60 this.commands_ = new Commands(this);
61 this.switchAccessPrefs_ = new SwitchAccessPrefs(this);
54 this.autoScanManager_ = new AutoScanManager(this); 62 this.autoScanManager_ = new AutoScanManager(this);
55 this.keyboardHandler_ = new KeyboardHandler(this); 63 this.keyboardHandler_ = new KeyboardHandler(this);
56 64
57 chrome.automation.getDesktop(function(desktop) { 65 chrome.automation.getDesktop(function(desktop) {
58 this.automationManager_ = new AutomationManager(desktop); 66 this.automationManager_ = new AutomationManager(desktop);
59 }.bind(this)); 67 }.bind(this));
60 68
61 document.addEventListener( 69 document.addEventListener(
62 'prefsUpdate', this.handlePrefsUpdate_.bind(this)); 70 'prefsUpdate', this.handlePrefsUpdate_.bind(this));
63 }, 71 },
(...skipping 24 matching lines...) Expand all
88 * Open the options page in a new tab. 96 * Open the options page in a new tab.
89 * 97 *
90 * @override 98 * @override
91 */ 99 */
92 showOptionsPage: function() { 100 showOptionsPage: function() {
93 let optionsPage = {url: 'options.html'}; 101 let optionsPage = {url: 'options.html'};
94 chrome.tabs.create(optionsPage); 102 chrome.tabs.create(optionsPage);
95 }, 103 },
96 104
97 /** 105 /**
106 * Return a list of the names of all user commands.
107 *
108 * @override
109 * @return {!Array<string>}
110 */
111 getCommands: function() {
112 return this.commands_.getCommands();
113 },
114
115 /**
116 * Return the default key code for a command.
117 *
118 * @override
119 * @param {string} command
120 * @return {number}
121 */
122 getDefaultKeyCodeFor: function(command) {
123 return this.commands_.getDefaultKeyCodeFor(command);
124 },
125
126 /**
127 * Run the function binding for the specified command.
128 *
129 * @override
130 * @param {string} command
131 */
132 runCommand: function(command) {
133 this.commands_.runCommand(command);
134 },
135
136 /**
98 * Perform actions as the result of actions by the user. Currently, restarts 137 * Perform actions as the result of actions by the user. Currently, restarts
99 * auto-scan if it is enabled. 138 * auto-scan if it is enabled.
100 * 139 *
101 * @override 140 * @override
102 */ 141 */
103 performedUserAction: function() { 142 performedUserAction: function() {
104 this.autoScanManager_.restartIfRunning(); 143 this.autoScanManager_.restartIfRunning();
105 }, 144 },
106 145
107 /** 146 /**
108 * Handle a change in user preferences. 147 * Handle a change in user preferences.
109 * 148 *
110 * @param {!Event} event 149 * @param {!Event} event
111 * @private 150 * @private
112 */ 151 */
113 handlePrefsUpdate_: function(event) { 152 handlePrefsUpdate_: function(event) {
114 let updatedPrefs = event.detail; 153 let updatedPrefs = event.detail;
115 for (let key of Object.keys(updatedPrefs)) { 154 for (let key of Object.keys(updatedPrefs)) {
116 switch (key) { 155 switch (key) {
117 case 'enableAutoScan': 156 case 'enableAutoScan':
118 this.autoScanManager_.setEnabled(updatedPrefs[key]); 157 this.autoScanManager_.setEnabled(updatedPrefs[key]);
119 break; 158 break;
120 case 'autoScanTime': 159 case 'autoScanTime':
121 this.autoScanManager_.setScanTime(updatedPrefs[key]); 160 this.autoScanManager_.setScanTime(updatedPrefs[key]);
122 break; 161 break;
162 default:
163 if (this.commands_.getCommands().includes(key))
164 this.keyboardHandler_.updateSwitchAccessKeys();
123 } 165 }
124 } 166 }
125 }, 167 },
126 168
127 /** 169 /**
170 * Set the value of the preference |key| to |value| in chrome.storage.sync.
171 * this.prefs_ is not set until handleStorageChange_.
172 *
173 * @override
174 * @param {string} key
175 * @param {boolean|string|number} value
176 */
177 setPref: function(key, value) {
178 this.switchAccessPrefs_.setPref(key, value);
179 },
180
181 /**
182 * Get the value of type 'boolean' of the preference |key|. Will throw a type
183 * error if the value of |key| is not 'boolean'.
184 *
185 * @override
186 * @param {string} key
187 * @return {boolean}
188 */
189 getBooleanPref: function(key) {
190 return this.switchAccessPrefs_.getBooleanPref(key);
191 },
192
193 /**
194 * Get the value of type 'number' of the preference |key|. Will throw a type
195 * error if the value of |key| is not 'number'.
196 *
197 * @override
198 * @param {string} key
199 * @return {number}
200 */
201 getNumberPref: function(key) {
202 return this.switchAccessPrefs_.getNumberPref(key);
203 },
204
205 /**
206 * Get the value of type 'string' of the preference |key|. Will throw a type
207 * error if the value of |key| is not 'string'.
208 *
209 * @override
210 * @param {string} key
211 * @return {string}
212 */
213 getStringPref: function(key) {
214 return this.switchAccessPrefs_.getStringPref(key);
215 },
216
217 /**
218 * Returns true if |keyCode| is already used to run a command from the
219 * keyboard.
220 *
221 * @override
222 * @param {number} keyCode
223 * @return {boolean}
224 */
225 keyCodeIsUsed: function(keyCode) {
226 return this.switchAccessPrefs_.keyCodeIsUsed(keyCode);
227 },
228
229 /**
128 * Move to the next sibling of the current node if it has one. 230 * Move to the next sibling of the current node if it has one.
129 * 231 *
130 * @override 232 * @override
131 */ 233 */
132 debugMoveToNext: function() { 234 debugMoveToNext: function() {
133 if (this.automationManager_) 235 if (this.automationManager_)
134 this.automationManager_.debugMoveToNext(); 236 this.automationManager_.debugMoveToNext();
135 }, 237 },
136 238
137 /** 239 /**
(...skipping 19 matching lines...) Expand all
157 /** 259 /**
158 * Move to the parent of the current node if it has one. 260 * Move to the parent of the current node if it has one.
159 * 261 *
160 * @override 262 * @override
161 */ 263 */
162 debugMoveToParent: function() { 264 debugMoveToParent: function() {
163 if (this.automationManager_) 265 if (this.automationManager_)
164 this.automationManager_.debugMoveToParent(); 266 this.automationManager_.debugMoveToParent();
165 } 267 }
166 }; 268 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698