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

Side by Side Diff: chrome/browser/resources/settings/languages_page/languages.js

Issue 2984843003: MD Settings: Convert all usages of .bind(this) to use ES6 arrow function. (Closed)
Patch Set: Resolve conflicts. Created 3 years, 4 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 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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 this.inputMethodPrivate_ = this.browserProxy_.getInputMethodPrivate(); 173 this.inputMethodPrivate_ = this.browserProxy_.getInputMethodPrivate();
174 // </if> 174 // </if>
175 175
176 var promises = []; 176 var promises = [];
177 177
178 // Wait until prefs are initialized before creating the model, so we can 178 // Wait until prefs are initialized before creating the model, so we can
179 // include information about enabled languages. 179 // include information about enabled languages.
180 promises[0] = CrSettingsPrefs.initialized; 180 promises[0] = CrSettingsPrefs.initialized;
181 181
182 // Get the language list. 182 // Get the language list.
183 promises[1] = new Promise(function(resolve) { 183 promises[1] = new Promise(resolve => {
184 this.languageSettingsPrivate_.getLanguageList(resolve); 184 this.languageSettingsPrivate_.getLanguageList(resolve);
185 }.bind(this)); 185 });
186 186
187 // Get the translate target language. 187 // Get the translate target language.
188 promises[2] = new Promise(function(resolve) { 188 promises[2] = new Promise(resolve => {
189 this.languageSettingsPrivate_.getTranslateTargetLanguage(resolve); 189 this.languageSettingsPrivate_.getTranslateTargetLanguage(resolve);
190 }.bind(this)); 190 });
191 191
192 if (cr.isChromeOS) { 192 if (cr.isChromeOS) {
193 promises[3] = new Promise(function(resolve) { 193 promises[3] = new Promise(resolve => {
194 this.languageSettingsPrivate_.getInputMethodLists(function(lists) { 194 this.languageSettingsPrivate_.getInputMethodLists(function(lists) {
195 resolve(lists.componentExtensionImes.concat( 195 resolve(lists.componentExtensionImes.concat(
196 lists.thirdPartyExtensionImes)); 196 lists.thirdPartyExtensionImes));
197 }); 197 });
198 }.bind(this)); 198 });
199 199
200 promises[4] = new Promise(function(resolve) { 200 promises[4] = new Promise(resolve => {
201 this.inputMethodPrivate_.getCurrentInputMethod(resolve); 201 this.inputMethodPrivate_.getCurrentInputMethod(resolve);
202 }.bind(this)); 202 });
203 } 203 }
204 204
205 if (cr.isWindows || cr.isChromeOS) { 205 if (cr.isWindows || cr.isChromeOS) {
206 // Fetch the starting UI language, which affects which actions should be 206 // Fetch the starting UI language, which affects which actions should be
207 // enabled. 207 // enabled.
208 promises.push(this.browserProxy_.getProspectiveUILanguage().then( 208 promises.push(this.browserProxy_.getProspectiveUILanguage().then(
209 function(prospectiveUILanguage) { 209 prospectiveUILanguage => {
210 this.originalProspectiveUILanguage_ = 210 this.originalProspectiveUILanguage_ =
211 prospectiveUILanguage || window.navigator.language; 211 prospectiveUILanguage || window.navigator.language;
212 }.bind(this))); 212 }));
213 } 213 }
214 214
215 Promise.all(promises).then(function(results) { 215 Promise.all(promises).then(results => {
216 if (!this.isConnected) { 216 if (!this.isConnected) {
217 // Return early if this element was detached from the DOM before this 217 // Return early if this element was detached from the DOM before this
218 // async callback executes (can happen during testing). 218 // async callback executes (can happen during testing).
219 return; 219 return;
220 } 220 }
221 221
222 // TODO(dpapad): Cleanup this code. It uses results[3] and results[4] 222 // TODO(dpapad): Cleanup this code. It uses results[3] and results[4]
223 // which only exist for ChromeOS. 223 // which only exist for ChromeOS.
224 this.createModel_(results[1], results[2], results[3], results[4]); 224 this.createModel_(results[1], results[2], results[3], results[4]);
225 this.resolver_.resolve(); 225 this.resolver_.resolve();
226 }.bind(this)); 226 });
227 227
228 if (cr.isChromeOS) { 228 if (cr.isChromeOS) {
229 this.boundOnInputMethodChanged_ = this.onInputMethodChanged_.bind(this); 229 this.boundOnInputMethodChanged_ = this.onInputMethodChanged_.bind(this);
230 this.inputMethodPrivate_.onChanged.addListener( 230 this.inputMethodPrivate_.onChanged.addListener(
231 assert(this.boundOnInputMethodChanged_)); 231 assert(this.boundOnInputMethodChanged_));
232 } 232 }
233 }, 233 },
234 234
235 /** @override */ 235 /** @override */
236 detached: function() { 236 detached: function() {
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 assert(CrSettingsPrefs.isInitialized); 437 assert(CrSettingsPrefs.isInitialized);
438 438
439 var enabledInputMethodIds = 439 var enabledInputMethodIds =
440 this.getPref('settings.language.preload_engines').value.split(','); 440 this.getPref('settings.language.preload_engines').value.split(',');
441 enabledInputMethodIds = enabledInputMethodIds.concat( 441 enabledInputMethodIds = enabledInputMethodIds.concat(
442 this.getPref('settings.language.enabled_extension_imes') 442 this.getPref('settings.language.enabled_extension_imes')
443 .value.split(',')); 443 .value.split(','));
444 444
445 // Return only supported input methods. 445 // Return only supported input methods.
446 return enabledInputMethodIds 446 return enabledInputMethodIds
447 .map(function(id) { 447 .map(id => this.supportedInputMethodMap_.get(id))
448 return this.supportedInputMethodMap_.get(id);
449 }.bind(this))
450 .filter(function(inputMethod) { 448 .filter(function(inputMethod) {
451 return !!inputMethod; 449 return !!inputMethod;
452 }); 450 });
453 }, 451 },
454 452
455 /** @private */ 453 /** @private */
456 updateEnabledInputMethods_: function() { 454 updateEnabledInputMethods_: function() {
457 assert(cr.isChromeOS); 455 assert(cr.isChromeOS);
458 var enabledInputMethods = this.getEnabledInputMethods_(); 456 var enabledInputMethods = this.getEnabledInputMethods_();
459 var enabledInputMethodSet = this.makeSetFromArray_(enabledInputMethods); 457 var enabledInputMethodSet = this.makeSetFromArray_(enabledInputMethods);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 assert(this.canDisableLanguage(languageCode)); 556 assert(this.canDisableLanguage(languageCode));
559 557
560 // Remove the language from spell check. 558 // Remove the language from spell check.
561 this.deletePrefListItem('spellcheck.dictionaries', languageCode); 559 this.deletePrefListItem('spellcheck.dictionaries', languageCode);
562 560
563 if (cr.isChromeOS) { 561 if (cr.isChromeOS) {
564 // Remove input methods that don't support any other enabled language. 562 // Remove input methods that don't support any other enabled language.
565 var inputMethods = this.languageInputMethods_.get(languageCode) || []; 563 var inputMethods = this.languageInputMethods_.get(languageCode) || [];
566 for (var i = 0; i < inputMethods.length; i++) { 564 for (var i = 0; i < inputMethods.length; i++) {
567 var inputMethod = inputMethods[i]; 565 var inputMethod = inputMethods[i];
568 var supportsOtherEnabledLanguages = 566 var supportsOtherEnabledLanguages = inputMethod.languageCodes.some(
569 inputMethod.languageCodes.some(function(otherLanguageCode) { 567 otherLanguageCode => otherLanguageCode != languageCode &&
570 return otherLanguageCode != languageCode && 568 this.isLanguageEnabled(otherLanguageCode));
571 this.isLanguageEnabled(otherLanguageCode);
572 }.bind(this));
573 if (!supportsOtherEnabledLanguages) 569 if (!supportsOtherEnabledLanguages)
574 this.removeInputMethod(inputMethod.id); 570 this.removeInputMethod(inputMethod.id);
575 } 571 }
576 } 572 }
577 573
578 // Remove the language from preferred languages. 574 // Remove the language from preferred languages.
579 this.languageSettingsPrivate_.disableLanguage(languageCode); 575 this.languageSettingsPrivate_.disableLanguage(languageCode);
580 this.enableTranslateLanguage(languageCode); 576 this.enableTranslateLanguage(languageCode);
581 }, 577 },
582 578
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 this.updateEnabledInputMethods_(); 799 this.updateEnabledInputMethods_();
804 }, 800 },
805 801
806 /** @param {string} id Removed input method ID. */ 802 /** @param {string} id Removed input method ID. */
807 onInputMethodRemoved_: function(id) { 803 onInputMethodRemoved_: function(id) {
808 this.updateEnabledInputMethods_(); 804 this.updateEnabledInputMethods_();
809 }, 805 },
810 // </if> 806 // </if>
811 }); 807 });
812 })(); 808 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698