Index: chrome/browser/chromeos/input_method/input_method_manager_impl.cc |
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc |
index 8fda319f81d34e72e41f833899cd88e2ca259a6f..8d3fcc6432298ac6891096bb75786889698fc9c8 100644 |
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc |
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc |
@@ -50,6 +50,11 @@ bool InputMethodManagerImpl::IsLoginKeyboard( |
return util_.IsLoginKeyboard(layout); |
} |
+bool InputMethodManagerImpl::MigrateXkbInputMethods( |
+ std::vector<std::string>* input_method_ids) { |
+ return util_.MigrateXkbInputMethods(input_method_ids); |
+} |
+ |
InputMethodManagerImpl::InputMethodManagerImpl( |
scoped_ptr<InputMethodDelegate> delegate) |
: delegate_(delegate.Pass()), |
@@ -208,6 +213,7 @@ void InputMethodManagerImpl::EnableLoginLayouts( |
layouts.push_back(candidate); |
} |
+ MigrateXkbInputMethods(&layouts); |
active_input_method_ids_.swap(layouts); |
// Initialize candidate window controller and widgets such as |
@@ -217,7 +223,9 @@ void InputMethodManagerImpl::EnableLoginLayouts( |
MaybeInitializeCandidateWindowController(); |
// you can pass empty |initial_layout|. |
- ChangeInputMethod(initial_layouts.empty() ? "" : initial_layouts[0]); |
+ ChangeInputMethod(initial_layouts.empty() ? "" : |
+ extension_ime_util::GetInputMethodIDByKeyboardLayout( |
+ initial_layouts[0])); |
} |
// Adds new input method to given list. |
@@ -285,6 +293,7 @@ bool InputMethodManagerImpl::ReplaceEnabledInputMethods( |
new_active_input_method_ids_filtered.push_back(input_method_id); |
} |
active_input_method_ids_.swap(new_active_input_method_ids_filtered); |
+ MigrateXkbInputMethods(&active_input_method_ids_); |
ReconfigureIMFramework(); |
@@ -320,7 +329,9 @@ bool InputMethodManagerImpl::ChangeInputMethodInternal( |
} |
if (!component_extension_ime_manager_->IsInitialized() && |
- !InputMethodUtil::IsKeyboardLayout(input_method_id_to_switch)) { |
+ (!InputMethodUtil::IsKeyboardLayout(input_method_id_to_switch) || |
+ extension_ime_util::IsKeyboardLayoutExtension( |
+ input_method_id_to_switch))) { |
// We can't change input method before the initialization of |
// component extension ime manager. ChangeInputMethod will be |
// called with |pending_input_method_| when the initialization is |
@@ -660,6 +671,8 @@ bool InputMethodManagerImpl::SwitchInputMethod( |
return false; |
} |
+ MigrateXkbInputMethods(&input_method_ids_to_switch); |
+ |
// Obtain the intersection of input_method_ids_to_switch and |
// active_input_method_ids_. The order of IDs in active_input_method_ids_ is |
// preserved. |