OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |