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

Side by Side Diff: chrome/browser/resources/chromeos/switch_access/prefs.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 user preferences. 6 * Class to manage user preferences.
7 * 7 *
8 * @constructor 8 * @constructor
9 * @param {SwitchAccessInterface} switchAccess
9 */ 10 */
10 function SwitchAccessPrefs() { 11 function SwitchAccessPrefs(switchAccess) {
12 /**
13 * SwitchAccess reference.
14 *
15 * @private {SwitchAccessInterface}
16 */
17 this.switchAccess_ = switchAccess;
18
11 /** 19 /**
12 * User preferences, initially set to the default preference values. 20 * User preferences, initially set to the default preference values.
13 * 21 *
14 * @private 22 * @private
15 */ 23 */
16 this.prefs_ = Object.assign({}, this.DEFAULT_PREFS); 24 this.prefs_ = Object.assign({}, this.DEFAULT_PREFS);
25 for (let command of this.switchAccess_.getCommands())
26 this.prefs_[command] = this.switchAccess_.getDefaultKeyCodeFor(command);
17 27
18 this.loadPrefs_(); 28 this.loadPrefs_();
19 chrome.storage.onChanged.addListener(this.handleStorageChange_.bind(this)); 29 chrome.storage.onChanged.addListener(this.handleStorageChange_.bind(this));
20 } 30 }
21 31
22 SwitchAccessPrefs.prototype = { 32 SwitchAccessPrefs.prototype = {
23 /** 33 /**
24 * Asynchronously load the current preferences from chrome.storage.sync and 34 * Asynchronously load the current preferences from chrome.storage.sync and
25 * store them in this.prefs_, if this.prefs_ is not already set to that value. 35 * store them in this.prefs_, if this.prefs_ is not already set to that value.
26 * If this.prefs_ changes, fire a prefsUpdate event. 36 * If this.prefs_ changes, fire a prefsUpdate event.
27 * 37 *
28 * @private 38 * @private
29 */ 39 */
30 loadPrefs_: function() { 40 loadPrefs_: function() {
31 let defaultKeys = Object.keys(this.DEFAULT_PREFS); 41 let defaultKeys = Object.keys(this.prefs_);
32 chrome.storage.sync.get(defaultKeys, function(loadedPrefs) { 42 chrome.storage.sync.get(defaultKeys, function(loadedPrefs) {
33 let updatedPrefs = {}; 43 let updatedPrefs = {};
34 for (let key of Object.keys(loadedPrefs)) { 44 for (let key of Object.keys(loadedPrefs)) {
35 if (this.prefs_[key] !== loadedPrefs[key]) { 45 if (this.prefs_[key] !== loadedPrefs[key]) {
36 this.prefs_[key] = loadedPrefs[key]; 46 this.prefs_[key] = loadedPrefs[key];
37 updatedPrefs[key] = loadedPrefs[key]; 47 updatedPrefs[key] = loadedPrefs[key];
38 } 48 }
39 } 49 }
40 if (Object.keys(updatedPrefs).length > 0) { 50 if (Object.keys(updatedPrefs).length > 0) {
41 let event = new CustomEvent('prefsUpdate', {'detail': updatedPrefs}); 51 let event = new CustomEvent('prefsUpdate', {'detail': updatedPrefs});
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 */ 129 */
120 getStringPref: function(key) { 130 getStringPref: function(key) {
121 let value = this.prefs_[key]; 131 let value = this.prefs_[key];
122 if (typeof value === 'string') 132 if (typeof value === 'string')
123 return value; 133 return value;
124 else 134 else
125 throw new TypeError('No value of string type for key \'' + key + '\''); 135 throw new TypeError('No value of string type for key \'' + key + '\'');
126 }, 136 },
127 137
128 /** 138 /**
129 * The default value of all preferences. All preferences should be primitives 139 * Returns true if |keyCode| is already used to run a command from the
130 * to prevent changes to default values. 140 * keyboard.
141 *
142 * @param {number} keyCode
143 * @return {boolean}
144 */
145 keyCodeIsUsed: function(keyCode) {
146 for (let command of this.switchAccess_.getCommands()) {
147 if (keyCode === this.prefs_[command])
148 return true;
149 }
150 return false;
151 },
152
153 /**
154 * The default value of all preferences besides command keyboard bindings.
155 * All preferences should be primitives to prevent changes to default values.
131 * 156 *
132 * @const 157 * @const
133 */ 158 */
134 DEFAULT_PREFS: {'enableAutoScan': false, 'autoScanTime': 800} 159 DEFAULT_PREFS: {'enableAutoScan': false, 'autoScanTime': 800}
135 }; 160 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698