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 6679b587b585e7ee94a2b4cd2f762fc3db7d809d..8337b7226ced76679e6ee99eb856325c90e64f7d 100644 |
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc |
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc |
@@ -36,6 +36,8 @@ |
#include "components/user_manager/user_manager.h" |
#include "third_party/icu/source/common/unicode/uloc.h" |
#include "ui/base/accelerators/accelerator.h" |
+#include "ui/keyboard/keyboard_controller.h" |
+#include "ui/keyboard/keyboard_util.h" |
namespace chromeos { |
namespace input_method { |
@@ -914,8 +916,17 @@ void InputMethodManagerImpl::ChangeInputMethodInternal( |
IMEBridge::Get()->SetCurrentEngineHandler(engine); |
- if (engine) |
+ if (engine) { |
engine->Enable(component_id); |
+ } else { |
+ // If no engine to enable, cancel the virtual keyboard url override so that |
+ // it can use the fallback system virtual keyboard UI. |
+ keyboard::SetOverrideContentUrl(GURL()); |
+ keyboard::KeyboardController* keyboard_controller = |
+ keyboard::KeyboardController::GetInstance(); |
+ if (keyboard_controller) |
+ keyboard_controller->Reload(); |
+ } |
// Change the keyboard layout to a preferred layout for the input method. |
if (!keyboard_->SetCurrentKeyboardLayoutByName( |