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

Unified Diff: chrome/browser/resources/options/chromeos_language_list.js

Issue 3051013: Add logic to save input method preference based on user clicks. (Closed)
Patch Set: address comments Created 10 years, 5 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
« no previous file with comments | « no previous file | chrome/browser/resources/options/chromeos_language_options.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/options/chromeos_language_list.js
diff --git a/chrome/browser/resources/options/chromeos_language_list.js b/chrome/browser/resources/options/chromeos_language_list.js
index e78e029db465f326cd77d9813b7ce5593f3f54a2..a4f7972c11495e2def62c9da3b7faecaefde685f 100644
--- a/chrome/browser/resources/options/chromeos_language_list.js
+++ b/chrome/browser/resources/options/chromeos_language_list.js
@@ -43,16 +43,18 @@ cr.define('options.language', function() {
* @private
*/
handlePrefChange_: function(e) {
- this.load_(e.value);
+ var languageCodesInCsv = e.value;
+ var languageCodes = this.filterBadLanguageCodes_(
+ languageCodesInCsv.split(','));
+ this.load_(languageCodes);
},
/**
* Loads given language list.
- * @param {string} languageCodesInCsv A CSV string of language codes.
+ * @param {Array} languageCodes List of language codes.
* @private
*/
- load_: function(languageCodesInCsv) {
- var languageCodes = languageCodesInCsv.split(',');
+ load_: function(languageCodes) {
this.dataModel = new ArrayDataModel(languageCodes);
// Select the first item if it's not empty.
// TODO(satorux): Switch to a single item selection model that does
@@ -68,6 +70,24 @@ cr.define('options.language', function() {
// Encode the language codes into a CSV string.
Preferences.setStringPref(this.pref, this.dataModel.slice().join(','));
},
+
+ /**
+ * Filters bad language codes in case bad language codes are
+ * stored in the preference.
+ * @param {Array} languageCodes List of language codes.
+ * @private
+ */
+ filterBadLanguageCodes_: function(languageCodes) {
+ var filteredLanguageCodes = [];
+ for (var i = 0; i < languageCodes.length; i++) {
+ // Check if the translation for the language code is
+ // present. Otherwise, skip it.
+ if (localStrings.getString(languageCodes[i])) {
+ filteredLanguageCodes.push(languageCodes[i]);
+ }
+ }
+ return filteredLanguageCodes;
+ },
};
return {
« no previous file with comments | « no previous file | chrome/browser/resources/options/chromeos_language_options.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698