Index: chrome/browser/extensions/extension_service.cc |
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
index a835f6a70886f0407638539606d0cc47866f14ad..51b9d242cc3b54aed150601519465bfcb4dc92ac 100644 |
--- a/chrome/browser/extensions/extension_service.cc |
+++ b/chrome/browser/extensions/extension_service.cc |
@@ -93,6 +93,8 @@ |
#endif |
#if defined(OS_CHROMEOS) && defined(TOUCH_UI) |
+#include "chrome/browser/chromeos/cros/cros_library.h" |
+#include "chrome/browser/chromeos/cros/input_method_library.h" |
#include "chrome/browser/extensions/extension_input_ui_api.h" |
#endif |
@@ -1265,6 +1267,24 @@ void ExtensionService::NotifyExtensionLoaded(const Extension* extension) { |
if (plugins_changed || nacl_modules_changed) |
PluginService::GetInstance()->PurgePluginListCache(false); |
+ |
+#if defined(OS_CHROMEOS) && defined(TOUCH_UI) |
+ chromeos::InputMethodLibrary* input_method_library = |
+ chromeos::CrosLibrary::Get()->GetInputMethodLibrary(); |
+ for (std::vector<Extension::InputComponentInfo>::const_iterator component = |
+ extension->input_components().begin(); |
+ component != extension->input_components().end(); |
+ ++component) { |
+ if (component->type == Extension::INPUT_COMPONENT_TYPE_VIRTUAL_KEYBOARD && |
+ !component->layouts.empty()) { |
+ const bool is_system = |
+ !Extension::IsExternalLocation(extension->location()); |
+ input_method_library->RegisterVirtualKeyboard(extension->url(), |
+ component->layouts, |
+ is_system); |
+ } |
+ } |
+#endif |
} |
void ExtensionService::NotifyExtensionUnloaded( |