Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 'settings-languages' handles Chrome's language and input | 6 * @fileoverview 'settings-languages' handles Chrome's language and input |
| 7 * method settings. The 'languages' property, which reflects the current | 7 * method settings. The 'languages' property, which reflects the current |
| 8 * language settings, must not be changed directly. Instead, changes to | 8 * language settings, must not be changed directly. Instead, changes to |
| 9 * language settings should be made using the LanguageHelper APIs provided by | 9 * language settings should be made using the LanguageHelper APIs provided by |
| 10 * this class via languageHelper. | 10 * this class via languageHelper. |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 138 'prefs.translate_blocked_languages.value.*, languages)', | 138 'prefs.translate_blocked_languages.value.*, languages)', |
| 139 'updateRemovableLanguages_(' + | 139 'updateRemovableLanguages_(' + |
| 140 'prefs.intl.app_locale.value, languages.enabled)', | 140 'prefs.intl.app_locale.value, languages.enabled)', |
| 141 // Observe Chrome OS prefs (ignored for non-Chrome OS). | 141 // Observe Chrome OS prefs (ignored for non-Chrome OS). |
| 142 'updateRemovableLanguages_(' + | 142 'updateRemovableLanguages_(' + |
| 143 'prefs.settings.language.preload_engines.value, ' + | 143 'prefs.settings.language.preload_engines.value, ' + |
| 144 'prefs.settings.language.enabled_extension_imes.value, ' + | 144 'prefs.settings.language.enabled_extension_imes.value, ' + |
| 145 'languages)', | 145 'languages)', |
| 146 ], | 146 ], |
| 147 | 147 |
| 148 /** @private {?Function} */ | |
| 149 boundOnInputMethodChanged_: null, | |
| 150 | |
| 148 /** @override */ | 151 /** @override */ |
| 149 created: function() { | 152 attached: function() { |
|
michaelpg
2017/03/28 20:30:10
Is there a way to do this without waiting for |att
| |
| 150 this.languageSettingsPrivate = | 153 this.languageSettingsPrivate = |
| 151 settings.languageSettingsPrivateApiForTest || | 154 settings.languageSettingsPrivateApiForTest || |
| 152 /** @type {!LanguageSettingsPrivate} */(chrome.languageSettingsPrivate); | 155 /** @type {!LanguageSettingsPrivate} */(chrome.languageSettingsPrivate); |
| 153 | 156 |
| 154 this.inputMethodPrivate = | 157 this.inputMethodPrivate = |
| 155 settings.inputMethodPrivateApiForTest || | 158 settings.inputMethodPrivateApiForTest || |
| 156 /** @type {!InputMethodPrivate} */(chrome.inputMethodPrivate); | 159 /** @type {!InputMethodPrivate} */(chrome.inputMethodPrivate); |
| 157 | 160 |
| 158 var promises = []; | 161 var promises = []; |
| 159 | 162 |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 188 // Fetch the starting UI language, which affects which actions should be | 191 // Fetch the starting UI language, which affects which actions should be |
| 189 // enabled. | 192 // enabled. |
| 190 promises.push(cr.sendWithPromise('getProspectiveUILanguage').then( | 193 promises.push(cr.sendWithPromise('getProspectiveUILanguage').then( |
| 191 function(prospectiveUILanguage) { | 194 function(prospectiveUILanguage) { |
| 192 this.originalProspectiveUILanguage_ = | 195 this.originalProspectiveUILanguage_ = |
| 193 prospectiveUILanguage || window.navigator.language; | 196 prospectiveUILanguage || window.navigator.language; |
| 194 }.bind(this))); | 197 }.bind(this))); |
| 195 } | 198 } |
| 196 | 199 |
| 197 Promise.all(promises).then(function(results) { | 200 Promise.all(promises).then(function(results) { |
| 201 if (!this.isConnected) { | |
| 202 // Return early if this element was detached from the DOM before this | |
| 203 // async callback executes (can happen during testing). | |
| 204 return; | |
| 205 } | |
| 206 | |
| 198 this.createModel_(results[1], results[2], results[3], results[4]); | 207 this.createModel_(results[1], results[2], results[3], results[4]); |
| 199 this.resolver_.resolve(); | 208 this.resolver_.resolve(); |
| 200 }.bind(this)); | 209 }.bind(this)); |
| 201 | 210 |
| 202 if (cr.isChromeOS) { | 211 if (cr.isChromeOS) { |
| 212 this.boundOnInputMethodChanged_ = this.onInputMethodChanged_.bind(this); | |
| 203 this.inputMethodPrivate.onChanged.addListener( | 213 this.inputMethodPrivate.onChanged.addListener( |
| 204 this.onInputMethodChanged_.bind(this)); | 214 assert(this.boundOnInputMethodChanged_)); |
| 205 } | 215 } |
| 206 }, | 216 }, |
| 207 | 217 |
| 218 /** @override */ | |
| 219 detached: function() { | |
| 220 if (cr.isChromeOS) { | |
| 221 this.inputMethodPrivate.onChanged.removeListener( | |
| 222 assert(this.boundOnInputMethodChanged_)); | |
| 223 this.boundOnInputMethodChanged_ = null; | |
| 224 } | |
| 225 }, | |
| 226 | |
| 208 /** | 227 /** |
| 209 * Updates the prospective UI language based on the new pref value. | 228 * Updates the prospective UI language based on the new pref value. |
| 210 * @param {string} prospectiveUILanguage | 229 * @param {string} prospectiveUILanguage |
| 211 * @private | 230 * @private |
| 212 */ | 231 */ |
| 213 prospectiveUILanguageChanged_: function(prospectiveUILanguage) { | 232 prospectiveUILanguageChanged_: function(prospectiveUILanguage) { |
| 214 this.set('languages.prospectiveUILanguage', | 233 this.set('languages.prospectiveUILanguage', |
| 215 prospectiveUILanguage || this.originalProspectiveUILanguage_); | 234 prospectiveUILanguage || this.originalProspectiveUILanguage_); |
| 216 }, | 235 }, |
| 217 | 236 |
| (...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 773 this.updateEnabledInputMethods_(); | 792 this.updateEnabledInputMethods_(); |
| 774 }, | 793 }, |
| 775 | 794 |
| 776 /** @param {string} id Removed input method ID. */ | 795 /** @param {string} id Removed input method ID. */ |
| 777 onInputMethodRemoved_: function(id) { | 796 onInputMethodRemoved_: function(id) { |
| 778 assert(cr.isChromeOS); | 797 assert(cr.isChromeOS); |
| 779 this.updateEnabledInputMethods_(); | 798 this.updateEnabledInputMethods_(); |
| 780 }, | 799 }, |
| 781 }); | 800 }); |
| 782 })(); | 801 })(); |
| OLD | NEW |