Index: chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc |
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc |
index 87f0abf6d146eefc655e49c14100fb850b25063c..ad83f47b7d7df0862b32970708db3e1cfbe388ff 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc |
@@ -28,6 +28,7 @@ |
#include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.h" |
#include "chrome/common/pref_names.h" |
#include "chromeos/chromeos_switches.h" |
+#include "chromeos/ime/extension_ime_util.h" |
#include "chromeos/ime/input_method_manager.h" |
#include "grit/chromium_strings.h" |
#include "grit/generated_resources.h" |
@@ -391,7 +392,15 @@ base::ListValue* NetworkScreenHandler::GetInputMethods() { |
input_method::InputMethodUtil* util = manager->GetInputMethodUtil(); |
scoped_ptr<input_method::InputMethodDescriptors> input_methods( |
manager->GetActiveInputMethods()); |
- std::string current_input_method_id = manager->GetCurrentInputMethod().id(); |
+ // Uses extension_ime_util::MaybeGetLegacyXkbId() to make sure the input |
+ // method id is in legacy xkb id format (e.g. xkb:us::eng), instead of |
+ // extension based xkd id format (e.g. _comp_ime_...xkb:us::eng). |
+ // Same for the rests. |
+ // TODO(shuchen): support wait for component extension loading, and then show |
+ // OOBE window. So that extension_ime_util::MaybeGetLegacyXkbId() can be |
+ // removed. |
+ std::string current_input_method_id = extension_ime_util::MaybeGetLegacyXkbId( |
+ manager->GetCurrentInputMethod().id()); |
const std::vector<std::string>& hardware_login_input_methods = |
util->GetHardwareLoginInputMethodIds(); |
std::set<std::string> input_methods_added; |
@@ -400,9 +409,11 @@ base::ListValue* NetworkScreenHandler::GetInputMethods() { |
hardware_login_input_methods.begin(); |
i != hardware_login_input_methods.end(); |
++i) { |
- input_methods_added.insert(*i); |
+ // Makes sure the id is in legacy xkb id format. |
+ const std::string id = extension_ime_util::MaybeGetLegacyXkbId(*i); |
+ input_methods_added.insert(id); |
const input_method::InputMethodDescriptor* ime = |
- util->GetInputMethodDescriptorFromId(*i); |
+ util->GetInputMethodDescriptorFromId(id); |
DCHECK(ime != NULL); |
// Do not crash in case of misconfiguration. |
if (ime != NULL) { |
@@ -413,7 +424,9 @@ base::ListValue* NetworkScreenHandler::GetInputMethods() { |
bool optgroup_added = false; |
for (size_t i = 0; i < input_methods->size(); ++i) { |
- const std::string& ime_id = input_methods->at(i).id(); |
+ // Makes sure the id is in legacy xkb id format. |
+ const std::string& ime_id = extension_ime_util::MaybeGetLegacyXkbId( |
+ input_methods->at(i).id()); |
Yuki
2014/03/04 04:04:45
Please do not use std::vector::at() even though th
Shu Chen
2014/03/04 04:45:02
Done.
|
if (!InsertString(ime_id, input_methods_added)) |
continue; |
if (!optgroup_added) { |