Index: chrome/browser/resources/chromeos/switch_access/switch_access.js |
diff --git a/chrome/browser/resources/chromeos/switch_access/switch_access.js b/chrome/browser/resources/chromeos/switch_access/switch_access.js |
index eccde6e55f52e950a17664d416647383d876f95d..c32af336563ed1f2862e2acfc27f706fdc027bb1 100644 |
--- a/chrome/browser/resources/chromeos/switch_access/switch_access.js |
+++ b/chrome/browser/resources/chromeos/switch_access/switch_access.js |
@@ -11,12 +11,19 @@ |
function SwitchAccess() { |
console.log('Switch access is enabled'); |
+ /** |
+ * User commands. |
+ * |
+ * @private {Commands} |
+ */ |
+ this.commands_ = null; |
+ |
/** |
* User preferences. |
* |
- * @type {SwitchAccessPrefs} |
+ * @private {SwitchAccessPrefs} |
*/ |
- this.switchAccessPrefs = null; |
+ this.switchAccessPrefs_ = null; |
/** |
* Handles changes to auto-scan. |
@@ -50,7 +57,8 @@ SwitchAccess.prototype = { |
* @private |
*/ |
init_: function() { |
- this.switchAccessPrefs = new SwitchAccessPrefs(); |
+ this.commands_ = new Commands(this); |
+ this.switchAccessPrefs_ = new SwitchAccessPrefs(this); |
this.autoScanManager_ = new AutoScanManager(this); |
this.keyboardHandler_ = new KeyboardHandler(this); |
@@ -94,6 +102,37 @@ SwitchAccess.prototype = { |
chrome.tabs.create(optionsPage); |
}, |
+ /** |
+ * Return a list of the names of all user commands. |
+ * |
+ * @override |
+ * @return {!Array<string>} |
+ */ |
+ getCommands: function() { |
+ return this.commands_.getCommands(); |
+ }, |
+ |
+ /** |
+ * Return the default key code for a command. |
+ * |
+ * @override |
+ * @param {string} command |
+ * @return {number} |
+ */ |
+ getDefaultKeyCodeFor: function(command) { |
+ return this.commands_.getDefaultKeyCodeFor(command); |
+ }, |
+ |
+ /** |
+ * Run the function binding for the specified command. |
+ * |
+ * @override |
+ * @param {string} command |
+ */ |
+ runCommand: function(command) { |
+ this.commands_.runCommand(command); |
+ }, |
+ |
/** |
* Perform actions as the result of actions by the user. Currently, restarts |
* auto-scan if it is enabled. |
@@ -120,10 +159,73 @@ SwitchAccess.prototype = { |
case 'autoScanTime': |
this.autoScanManager_.setScanTime(updatedPrefs[key]); |
break; |
+ default: |
+ if (this.commands_.getCommands().includes(key)) |
+ this.keyboardHandler_.updateSwitchAccessKeys(); |
} |
} |
}, |
+ /** |
+ * Set the value of the preference |key| to |value| in chrome.storage.sync. |
+ * this.prefs_ is not set until handleStorageChange_. |
+ * |
+ * @override |
+ * @param {string} key |
+ * @param {boolean|string|number} value |
+ */ |
+ setPref: function(key, value) { |
+ this.switchAccessPrefs_.setPref(key, value); |
+ }, |
+ |
+ /** |
+ * Get the value of type 'boolean' of the preference |key|. Will throw a type |
+ * error if the value of |key| is not 'boolean'. |
+ * |
+ * @override |
+ * @param {string} key |
+ * @return {boolean} |
+ */ |
+ getBooleanPref: function(key) { |
+ return this.switchAccessPrefs_.getBooleanPref(key); |
+ }, |
+ |
+ /** |
+ * Get the value of type 'number' of the preference |key|. Will throw a type |
+ * error if the value of |key| is not 'number'. |
+ * |
+ * @override |
+ * @param {string} key |
+ * @return {number} |
+ */ |
+ getNumberPref: function(key) { |
+ return this.switchAccessPrefs_.getNumberPref(key); |
+ }, |
+ |
+ /** |
+ * Get the value of type 'string' of the preference |key|. Will throw a type |
+ * error if the value of |key| is not 'string'. |
+ * |
+ * @override |
+ * @param {string} key |
+ * @return {string} |
+ */ |
+ getStringPref: function(key) { |
+ return this.switchAccessPrefs_.getStringPref(key); |
+ }, |
+ |
+ /** |
+ * Returns true if |keyCode| is already used to run a command from the |
+ * keyboard. |
+ * |
+ * @override |
+ * @param {number} keyCode |
+ * @return {boolean} |
+ */ |
+ keyCodeIsUsed: function(keyCode) { |
+ return this.switchAccessPrefs_.keyCodeIsUsed(keyCode); |
+ }, |
+ |
/** |
* Move to the next sibling of the current node if it has one. |
* |