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

Unified Diff: chrome/browser/resources/settings/languages_page/manage_languages_page.js

Issue 1902893003: MD Settings: simplify language model and data binding (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update comment based on other CL feedback Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
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 b7a44af763e8368735fc54f6eeaffd8982bbd819..2de5a18198b5f0cc2b192d58723051ff3451ee13 100644
--- a/chrome/browser/resources/settings/languages_page/manage_languages_page.js
+++ b/chrome/browser/resources/settings/languages_page/manage_languages_page.js
@@ -26,29 +26,45 @@ Polymer({
notify: true,
},
- /**
- * @private {!Array<!{code: string, displayName: string,
- * nativeDisplayName: string, enabled: boolean}>|
- * undefined}
- */
- availableLanguages_: Array,
-
/** @private {!LanguageHelper} */
languageHelper_: Object,
},
- observers: [
- 'enabledLanguagesChanged_(languages.enabledLanguages.*)',
- ],
-
/** @override */
created: function() {
this.languageHelper_ = LanguageHelperImpl.getInstance();
},
/**
+ * @param {!chrome.languageSettingsPrivate.Language} language
+ * @param {!Object} change Polymer change object (provided in the HTML so this
+ * gets called whenever languages.enabled.* changes).
+ * @return {boolean}
+ * @private
+ */
+ isCheckboxChecked_: function(language, change) {
+ return this.languageHelper_.isLanguageEnabled(language.code);
+ },
+
+ /**
+ * Determines whether a language must be enabled. If so, the checkbox in the
+ * available languages list should not be changeable.
+ * @param {!chrome.languageSettingsPrivate.Language} language
+ * @param {!Object} change Polymer change object (provided in the HTML so this
+ * gets called whenever languages.enabled.* changes).
+ * @return {boolean}
+ * @private
+ */
+ isLanguageRequired_: function(language, change) {
+ // This check only applies to enabled languages.
+ if (!this.languageHelper_.isLanguageEnabled(language.code))
+ return false;
+ return !this.languageHelper_.canDisableLanguage(language.code);
+ },
+
+ /**
* Handler for removing a language.
- * @param {!{model: !{item: !LanguageInfo}}} e
+ * @param {!{model: !{item: !LanguageState}}} e
* @private
*/
onRemoveLanguageTap_: function(e) {
@@ -68,48 +84,4 @@ Polymer({
else
this.languageHelper_.disableLanguage(code);
},
-
- /**
- * True if a language is not the current or prospective UI language, ie,
- * it could be disabled.
- * @param {string} languageCode
- * @param {string} prospectiveUILanguageCode
- * @return {boolean}
- * @private
- */
- canRemoveLanguage_: function(languageCode, prospectiveUILanguageCode) {
- if (languageCode == navigator.language ||
- languageCode == prospectiveUILanguageCode) {
- return false;
- }
- return true;
- },
-
- /**
- * Updates the available languages that are bound to the iron-list.
- * @private
- */
- enabledLanguagesChanged_: function() {
- if (!this.availableLanguages_) {
- var 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,
- nativeDisplayName: language.nativeDisplayName,
- enabled: this.languageHelper_.isLanguageEnabled(language.code),
- });
- }
- // Set the Polymer property after building the full array.
- this.availableLanguages_ = availableLanguages;
- } else {
- // Update the available languages in place.
- for (var i = 0; i < this.availableLanguages_.length; i++) {
- this.set('availableLanguages_.' + i + '.enabled',
- this.languageHelper_.isLanguageEnabled(
- this.availableLanguages_[i].code));
- }
- }
- },
});

Powered by Google App Engine
This is Rietveld 408576698