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; |
}, |
}); |