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

Side by Side Diff: chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.cc

Issue 13509006: Add UX for languages that don't have any associated input method (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Remove deprecated test Created 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler .h" 5 #include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler .h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 IDS_OPTIONS_SETTINGS_LANGUAGES_SELECT_PREVIOUS_INPUT_METHOD_HINT)); 67 IDS_OPTIONS_SETTINGS_LANGUAGES_SELECT_PREVIOUS_INPUT_METHOD_HINT));
68 localized_strings->SetString("restart_button", 68 localized_strings->SetString("restart_button",
69 l10n_util::GetStringUTF16( 69 l10n_util::GetStringUTF16(
70 IDS_OPTIONS_SETTINGS_LANGUAGES_SIGN_OUT_BUTTON)); 70 IDS_OPTIONS_SETTINGS_LANGUAGES_SIGN_OUT_BUTTON));
71 localized_strings->SetString("extension_ime_label", 71 localized_strings->SetString("extension_ime_label",
72 l10n_util::GetStringUTF16( 72 l10n_util::GetStringUTF16(
73 IDS_OPTIONS_SETTINGS_LANGUAGES_INPUT_METHOD_EXTENSION_IME)); 73 IDS_OPTIONS_SETTINGS_LANGUAGES_INPUT_METHOD_EXTENSION_IME));
74 localized_strings->SetString("extension_ime_description", 74 localized_strings->SetString("extension_ime_description",
75 l10n_util::GetStringUTF16( 75 l10n_util::GetStringUTF16(
76 IDS_OPTIONS_SETTINGS_LANGUAGES_INPUT_METHOD_EXTENSION_DESCRIPTION)); 76 IDS_OPTIONS_SETTINGS_LANGUAGES_INPUT_METHOD_EXTENSION_DESCRIPTION));
77 localized_strings->SetString("noInputMethods",
78 l10n_util::GetStringUTF16(
79 IDS_OPTIONS_SETTINGS_LANGUAGES_NO_INPUT_METHODS));
77 80
78 input_method::InputMethodManager* manager = 81 input_method::InputMethodManager* manager =
79 input_method::GetInputMethodManager(); 82 input_method::GetInputMethodManager();
80 // GetSupportedInputMethods() never return NULL. 83 // GetSupportedInputMethods() never return NULL.
81 scoped_ptr<input_method::InputMethodDescriptors> descriptors( 84 scoped_ptr<input_method::InputMethodDescriptors> descriptors(
82 manager->GetSupportedInputMethods()); 85 manager->GetSupportedInputMethods());
83 localized_strings->Set("languageList", GetLanguageList(*descriptors)); 86 localized_strings->Set("languageList", GetLanguageList(*descriptors));
84 localized_strings->Set("inputMethodList", GetInputMethodList(*descriptors)); 87 localized_strings->Set("inputMethodList", GetInputMethodList(*descriptors));
85 localized_strings->Set("extensionImeList", GetExtensionImeList()); 88 localized_strings->Set("extensionImeList", GetExtensionImeList());
86 } 89 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 dictionary->Set("languageCodeSet", language_codes); 137 dictionary->Set("languageCodeSet", language_codes);
135 138
136 input_method_list->Append(dictionary); 139 input_method_list->Append(dictionary);
137 } 140 }
138 141
139 return input_method_list; 142 return input_method_list;
140 } 143 }
141 144
142 ListValue* CrosLanguageOptionsHandler::GetLanguageList( 145 ListValue* CrosLanguageOptionsHandler::GetLanguageList(
143 const input_method::InputMethodDescriptors& descriptors) { 146 const input_method::InputMethodDescriptors& descriptors) {
147 const std::string app_locale = g_browser_process->GetApplicationLocale();
148
144 std::set<std::string> language_codes; 149 std::set<std::string> language_codes;
145 // Collect the language codes from the supported input methods. 150 // Collect the language codes from the supported input methods.
146 for (size_t i = 0; i < descriptors.size(); ++i) { 151 for (size_t i = 0; i < descriptors.size(); ++i) {
147 const input_method::InputMethodDescriptor& descriptor = descriptors[i]; 152 const input_method::InputMethodDescriptor& descriptor = descriptors[i];
148 const std::string language_code = descriptor.language_code(); 153 const std::string language_code = descriptor.language_code();
149 language_codes.insert(language_code); 154 language_codes.insert(language_code);
150 } 155 }
151 // Collect the language codes from extra languages. 156 // Collect the language codes from extra languages.
152 const std::vector<std::string> extra_language_codes = 157 const std::vector<std::string> extra_language_codes =
153 input_method::GetInputMethodManager()->GetInputMethodUtil() 158 input_method::GetInputMethodManager()->GetInputMethodUtil()
(...skipping 20 matching lines...) Expand all
174 input_method_util->GetLanguageDisplayNameFromCode(*iter); 179 input_method_util->GetLanguageDisplayNameFromCode(*iter);
175 const string16 native_display_name = 180 const string16 native_display_name =
176 input_method::InputMethodUtil::GetLanguageNativeDisplayNameFromCode( 181 input_method::InputMethodUtil::GetLanguageNativeDisplayNameFromCode(
177 *iter); 182 *iter);
178 display_names.push_back(display_name); 183 display_names.push_back(display_name);
179 language_map[display_name] = 184 language_map[display_name] =
180 std::make_pair(*iter, native_display_name); 185 std::make_pair(*iter, native_display_name);
181 } 186 }
182 DCHECK_EQ(display_names.size(), language_map.size()); 187 DCHECK_EQ(display_names.size(), language_map.size());
183 188
189 // Collect the language codes from the supported accept-languages.
190 std::vector<std::string> accept_language_codes;
191 l10n_util::GetAcceptLanguagesForLocale(app_locale, &accept_language_codes);
192
193 // Build the list of display names, and build the language map.
194 for (size_t i = 0; i < accept_language_codes.size(); ++i) {
195 // Skip this language if it was already added.
196 if (language_codes.find(accept_language_codes[i]) != language_codes.end())
197 continue;
198 string16 display_name =
199 l10n_util::GetDisplayNameForLocale(
200 accept_language_codes[i], app_locale, false);
201 string16 native_display_name =
202 l10n_util::GetDisplayNameForLocale(
203 accept_language_codes[i], accept_language_codes[i], false);
204 display_names.push_back(display_name);
205 language_map[display_name] =
206 std::make_pair(accept_language_codes[i], native_display_name);
207 }
208
184 // Sort display names using locale specific sorter. 209 // Sort display names using locale specific sorter.
185 l10n_util::SortStrings16(g_browser_process->GetApplicationLocale(), 210 l10n_util::SortStrings16(app_locale, &display_names);
186 &display_names);
187 211
188 // Build the language list from the language map. 212 // Build the language list from the language map.
189 ListValue* language_list = new ListValue(); 213 ListValue* language_list = new ListValue();
190 for (size_t i = 0; i < display_names.size(); ++i) { 214 for (size_t i = 0; i < display_names.size(); ++i) {
191 // Sets the directionality of the display language name. 215 // Sets the directionality of the display language name.
192 string16 display_name(display_names[i]); 216 string16 display_name(display_names[i]);
193 bool markup_removal = 217 bool markup_removal =
194 base::i18n::UnadjustStringForLocaleDirection(&display_name); 218 base::i18n::UnadjustStringForLocaleDirection(&display_name);
195 DCHECK(markup_removal); 219 DCHECK(markup_removal);
196 bool has_rtl_chars = base::i18n::StringContainsStrongRTLChars(display_name); 220 bool has_rtl_chars = base::i18n::StringContainsStrongRTLChars(display_name);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 void CrosLanguageOptionsHandler::InputMethodOptionsOpenCallback( 286 void CrosLanguageOptionsHandler::InputMethodOptionsOpenCallback(
263 const ListValue* args) { 287 const ListValue* args) {
264 const std::string input_method_id = UTF16ToASCII(ExtractStringValue(args)); 288 const std::string input_method_id = UTF16ToASCII(ExtractStringValue(args));
265 const std::string action = base::StringPrintf( 289 const std::string action = base::StringPrintf(
266 "InputMethodOptions_Open_%s", input_method_id.c_str()); 290 "InputMethodOptions_Open_%s", input_method_id.c_str());
267 content::RecordComputedAction(action); 291 content::RecordComputedAction(action);
268 } 292 }
269 293
270 } // namespace options 294 } // namespace options
271 } // namespace chromeos 295 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698