OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 * @fileoverview Common page for reading and writing preferences from | 6 * @fileoverview Common page for reading and writing preferences from |
7 * the background context (background page or options page). | 7 * the background context (background page or options page). |
8 * | 8 * |
9 */ | 9 */ |
10 | 10 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 'audioStrategy': 'audioNormal', | 63 'audioStrategy': 'audioNormal', |
64 'autoRead': false, | 64 'autoRead': false, |
65 'brailleCaptions': false, | 65 'brailleCaptions': false, |
66 'brailleSideBySide': true, | 66 'brailleSideBySide': true, |
67 'brailleTableType': 'brailleTable8', | 67 'brailleTableType': 'brailleTable8', |
68 'brailleTable6': 'en-UEB-g2', | 68 'brailleTable6': 'en-UEB-g2', |
69 'brailleTable8': 'en-US-comp8', | 69 'brailleTable8': 'en-US-comp8', |
70 // TODO(dtseng): Leaking state about multiple key maps here until we have a | 70 // TODO(dtseng): Leaking state about multiple key maps here until we have a |
71 // class to manage multiple key maps. Also, this doesn't belong as a pref; | 71 // class to manage multiple key maps. Also, this doesn't belong as a pref; |
72 // should just store in local storage. | 72 // should just store in local storage. |
73 'currentKeyMap' : cvox.KeyMap.DEFAULT_KEYMAP, | 73 'currentKeyMap': cvox.KeyMap.DEFAULT_KEYMAP, |
74 'cvoxKey': '', | 74 'cvoxKey': '', |
75 'earcons': true, | 75 'earcons': true, |
76 'focusFollowsMouse': false, | 76 'focusFollowsMouse': false, |
77 'granularity': undefined, | 77 'granularity': undefined, |
78 'position': '{}', | 78 'position': '{}', |
79 'siteSpecificEnhancements': true, | 79 'siteSpecificEnhancements': true, |
80 'siteSpecificScriptBase': | 80 'siteSpecificScriptBase': |
81 'https://ssl.gstatic.com/accessibility/javascript/ext/', | 81 'https://ssl.gstatic.com/accessibility/javascript/ext/', |
82 'siteSpecificScriptLoader': | 82 'siteSpecificScriptLoader': |
83 'https://ssl.gstatic.com/accessibility/javascript/ext/loader.js', | 83 'https://ssl.gstatic.com/accessibility/javascript/ext/loader.js', |
(...skipping 20 matching lines...) Expand all Loading... |
104 if (localStorage[pref] === undefined) { | 104 if (localStorage[pref] === undefined) { |
105 localStorage[pref] = cvox.ChromeVoxPrefs.DEFAULT_PREFS[pref]; | 105 localStorage[pref] = cvox.ChromeVoxPrefs.DEFAULT_PREFS[pref]; |
106 } | 106 } |
107 } | 107 } |
108 }; | 108 }; |
109 | 109 |
110 /** | 110 /** |
111 * Switches to another key map. | 111 * Switches to another key map. |
112 * @param {string} selectedKeyMap The id of the keymap in | 112 * @param {string} selectedKeyMap The id of the keymap in |
113 * cvox.KeyMap.AVAIABLE_KEYMAP_INFO. | 113 * cvox.KeyMap.AVAIABLE_KEYMAP_INFO. |
114 */ | 114 */ |
115 cvox.ChromeVoxPrefs.prototype.switchToKeyMap = function(selectedKeyMap) { | 115 cvox.ChromeVoxPrefs.prototype.switchToKeyMap = function(selectedKeyMap) { |
116 // Switching key maps potentially affects the key codes that involve | 116 // Switching key maps potentially affects the key codes that involve |
117 // sequencing. Without resetting this list, potentially stale key | 117 // sequencing. Without resetting this list, potentially stale key |
118 // codes remain. The key codes themselves get pushed in | 118 // codes remain. The key codes themselves get pushed in |
119 // cvox.KeySequence.deserialize which gets called by cvox.KeyMap. | 119 // cvox.KeySequence.deserialize which gets called by cvox.KeyMap. |
120 cvox.ChromeVox.sequenceSwitchKeyCodes = []; | 120 cvox.ChromeVox.sequenceSwitchKeyCodes = []; |
121 | 121 |
122 // TODO(dtseng): Leaking state about multiple key maps here until we have a | 122 // TODO(dtseng): Leaking state about multiple key maps here until we have a |
123 // class to manage multiple key maps. | 123 // class to manage multiple key maps. |
124 localStorage['currentKeyMap'] = selectedKeyMap; | 124 localStorage['currentKeyMap'] = selectedKeyMap; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 this.keyMap_.toLocalStorage(); | 177 this.keyMap_.toLocalStorage(); |
178 this.sendPrefsToAllTabs(false, true); | 178 this.sendPrefsToAllTabs(false, true); |
179 }; | 179 }; |
180 | 180 |
181 | 181 |
182 /** | 182 /** |
183 * Send all of the settings to all tabs. | 183 * Send all of the settings to all tabs. |
184 * @param {boolean} sendPrefs Whether to send the prefs. | 184 * @param {boolean} sendPrefs Whether to send the prefs. |
185 * @param {boolean} sendKeyBindings Whether to send the key bindings. | 185 * @param {boolean} sendKeyBindings Whether to send the key bindings. |
186 */ | 186 */ |
187 cvox.ChromeVoxPrefs.prototype.sendPrefsToAllTabs = | 187 cvox.ChromeVoxPrefs.prototype.sendPrefsToAllTabs = function( |
188 function(sendPrefs, sendKeyBindings) { | 188 sendPrefs, sendKeyBindings) { |
189 var context = this; | 189 var context = this; |
190 var message = {}; | 190 var message = {}; |
191 if (sendPrefs) { | 191 if (sendPrefs) { |
192 message['prefs'] = context.getPrefs(); | 192 message['prefs'] = context.getPrefs(); |
193 } | 193 } |
194 if (sendKeyBindings) { | 194 if (sendKeyBindings) { |
195 // Note that cvox.KeyMap stringifies to a minimal object when message gets | 195 // Note that cvox.KeyMap stringifies to a minimal object when message gets |
196 // passed to the content script. | 196 // passed to the content script. |
197 message['keyBindings'] = this.keyMap_.toJSON(); | 197 message['keyBindings'] = this.keyMap_.toJSON(); |
198 } | 198 } |
199 chrome.windows.getAll({populate: true}, function(windows) { | 199 chrome.windows.getAll({populate: true}, function(windows) { |
200 for (var i = 0; i < windows.length; i++) { | 200 for (var i = 0; i < windows.length; i++) { |
201 var tabs = windows[i].tabs; | 201 var tabs = windows[i].tabs; |
202 for (var j = 0; j < tabs.length; j++) { | 202 for (var j = 0; j < tabs.length; j++) { |
203 chrome.tabs.sendMessage(tabs[j].id, message); | 203 chrome.tabs.sendMessage(tabs[j].id, message); |
204 } | 204 } |
205 } | 205 } |
206 }); | 206 }); |
207 }; | 207 }; |
208 | 208 |
209 /** | 209 /** |
210 * Send all of the settings over the specified port. | 210 * Send all of the settings over the specified port. |
211 * @param {Port} port The port representing the connection to a content script. | 211 * @param {Port} port The port representing the connection to a content script. |
212 */ | 212 */ |
213 cvox.ChromeVoxPrefs.prototype.sendPrefsToPort = function(port) { | 213 cvox.ChromeVoxPrefs.prototype.sendPrefsToPort = function(port) { |
214 port.postMessage({ | 214 port.postMessage( |
215 'keyBindings': this.keyMap_.toJSON(), | 215 {'keyBindings': this.keyMap_.toJSON(), 'prefs': this.getPrefs()}); |
216 'prefs': this.getPrefs()}); | |
217 }; | 216 }; |
218 | 217 |
219 | 218 |
220 /** | 219 /** |
221 * Set the value of a pref and update all active tabs if it's changed. | 220 * Set the value of a pref and update all active tabs if it's changed. |
222 * @param {string} key The pref key. | 221 * @param {string} key The pref key. |
223 * @param {Object|string} value The new value of the pref. | 222 * @param {Object|string} value The new value of the pref. |
224 */ | 223 */ |
225 cvox.ChromeVoxPrefs.prototype.setPref = function(key, value) { | 224 cvox.ChromeVoxPrefs.prototype.setPref = function(key, value) { |
226 if (localStorage[key] != value) { | 225 if (localStorage[key] != value) { |
227 localStorage[key] = value; | 226 localStorage[key] = value; |
228 this.sendPrefsToAllTabs(true, false); | 227 this.sendPrefsToAllTabs(true, false); |
229 } | 228 } |
230 }; | 229 }; |
231 | 230 |
232 /** | 231 /** |
233 * Delegates to cvox.KeyMap. | 232 * Delegates to cvox.KeyMap. |
234 * @param {string} command The command to set. | 233 * @param {string} command The command to set. |
235 * @param {cvox.KeySequence} newKey The new key to assign it to. | 234 * @param {cvox.KeySequence} newKey The new key to assign it to. |
236 * @return {boolean} True if the key was bound to the command. | 235 * @return {boolean} True if the key was bound to the command. |
237 */ | 236 */ |
238 cvox.ChromeVoxPrefs.prototype.setKey = function(command, newKey) { | 237 cvox.ChromeVoxPrefs.prototype.setKey = function(command, newKey) { |
239 if (this.keyMap_.rebind(command, newKey)) { | 238 if (this.keyMap_.rebind(command, newKey)) { |
240 this.keyMap_.toLocalStorage(); | 239 this.keyMap_.toLocalStorage(); |
241 this.sendPrefsToAllTabs(false, true); | 240 this.sendPrefsToAllTabs(false, true); |
242 return true; | 241 return true; |
243 } | 242 } |
244 return false; | 243 return false; |
245 }; | 244 }; |
OLD | NEW |