Chromium Code Reviews| Index: chrome/browser/resources/settings/languages_page/manage_languages_page.js |
| diff --git a/chrome/browser/resources/settings/languages_page/manage_languages_page.js b/chrome/browser/resources/settings/languages_page/manage_languages_page.js |
| index cf92005f6993c83fade6f3083b614ef9177fffac..268f987aaf2338bb08b49e362d0842d5e6c92a72 100644 |
| --- a/chrome/browser/resources/settings/languages_page/manage_languages_page.js |
| +++ b/chrome/browser/resources/settings/languages_page/manage_languages_page.js |
| @@ -30,7 +30,8 @@ Polymer({ |
| }, |
| /** |
| - * @private {Array<{code: string, displayName: string, enabled: boolean}>| |
| + * @private {Array<{code: string, displayName: string, |
|
stevenjb
2015/09/28 23:51:54
!Array<!{
michaelpg
2015/09/29 00:20:32
Done.
|
| + * nativeDisplayName: string, enabled: boolean}>| |
| * undefined} |
| */ |
| availableLanguages_: Array, |
| @@ -59,38 +60,42 @@ Polymer({ |
| }, |
| /** |
| - * True if a language is not the prospective UI language or the last remaining |
| - * language. |
| + * True if a language is not the current or prospective UI language. |
| * @param {string} languageCode |
| - * @param {!Array<!LanguageInfo>} enableLanguage |
| - * @private |
| + * @param {!Array<!LanguageInfo>} enabledLanguages |
| * @return {boolean} |
| + * @private |
| */ |
| - canRemoveLanguage_: function(languageCode, enabledLanguages) { |
| - var appLocale = this.prefs.intl.app_locale.value || navigator.language; |
| - if (languageCode == appLocale) |
| - return false; |
| - if (enabledLanguages.length == 1) |
| + canRemoveLanguage_: function(languageCode, prospectiveUILanguage) { |
|
stevenjb
2015/09/28 23:51:54
enabledLanguages or prospective... ?
michaelpg
2015/09/29 00:20:32
Done. Forgot to Closure-compile this file!
|
| + if (languageCode == navigator.language || |
| + languageCode == prospectiveUILanguage) { |
| return false; |
| + } |
| + assert(this.languages.enabledLanguages.length > 1); |
| return true; |
| }, |
| /** |
| - * Updates the available languages to be bound to the iron-list. |
| - * TODO(michaelpg): Update properties of individual items instead of |
| - * rebuilding entire list. |
| + * Updates the available languages that are bound to the iron-list. |
| * @private |
| */ |
| enabledLanguagesChanged_: function() { |
| - var availableLanguages = []; |
| + var availableLanguages = this.availableLanguages_ || []; |
| for (var i = 0; i < this.languages.supportedLanguages.length; i++) { |
| - var language = this.languages.supportedLanguages[i]; |
| - availableLanguages.push({ |
| - code: language.code, |
| - displayName: language.displayName, |
| - enabled: this.$.languages.isEnabled(language.code) |
| - }); |
| + if (this.availableLanguages_) { |
| + this.set('availableLanguages_.' + i + '.enabled', |
| + this.$.languages.isEnabled(this.availableLanguages_[i].code)); |
|
stevenjb
2015/09/28 23:51:54
This is weird... if (this.availableLanguages_) the
michaelpg
2015/09/29 00:20:32
Done. This should make more sense. Hope you don't
|
| + } else { |
| + var language = this.languages.supportedLanguages[i]; |
| + availableLanguages.push({ |
| + code: language.code, |
| + displayName: language.displayName, |
| + nativeDisplayName: language.nativeDisplayName, |
| + enabled: this.$.languages.isEnabled(language.code) |
| + }); |
| + } |
| } |
| - this.availableLanguages_ = availableLanguages; |
| + if (!this.availableLanguages_) |
| + this.availableLanguages_ = availableLanguages; |
| }, |
| }); |