Index: chrome/browser/chromeos/extensions/input_method_apitest_chromeos.cc |
diff --git a/chrome/browser/chromeos/extensions/input_method_apitest_chromeos.cc b/chrome/browser/chromeos/extensions/input_method_apitest_chromeos.cc |
index 454129a2d869c4d4a87525e316bd737650bc0334..e954bd582444e32184bf4aa31e3f204afe47cec4 100644 |
--- a/chrome/browser/chromeos/extensions/input_method_apitest_chromeos.cc |
+++ b/chrome/browser/chromeos/extensions/input_method_apitest_chromeos.cc |
@@ -27,6 +27,7 @@ |
#include "ui/base/ime/chromeos/extension_ime_util.h" |
#include "ui/base/ime/chromeos/input_method_manager.h" |
#include "ui/base/ime/chromeos/input_method_whitelist.h" |
+#include "ui/base/ime/ime_bridge.h" |
using namespace chromeos::input_method; |
@@ -35,6 +36,8 @@ namespace { |
const char kLoginScreenUILanguage[] = "fr"; |
const char kInitialInputMethodOnLoginScreen[] = "xkb:us::eng"; |
const char kBackgroundReady[] = "ready"; |
+const char kTestIMEID[] = "_ext_ime_ilanclmaeigfpnmdlgelmhkpkegdioiptest"; |
+const char kTestIMEID2[] = "_ext_ime_ilanclmaeigfpnmdlgelmhkpkegdioiptest2"; |
// Class that listens for the JS message. |
class TestListener : public content::NotificationObserver { |
@@ -112,3 +115,39 @@ IN_PROC_BROWSER_TEST_F(ExtensionInputMethodApiTest, ImeMenuActivation) { |
// Test that the extension gets the IME activation change event properly. |
ASSERT_TRUE(event_listener.WaitUntilSatisfied()) << message_; |
} |
+ |
+IN_PROC_BROWSER_TEST_F(ExtensionInputMethodApiTest, ImeMenuAPITest) { |
+ ExtensionTestMessageListener activated_listener("activated", false); |
+ ExtensionTestMessageListener menu_listener("get_menu_update", false); |
+ ExtensionTestMessageListener item_activated_listenter("get_menu_activated", |
+ false); |
+ ExtensionTestMessageListener list_listenter("list_change", false); |
+ browser()->profile()->GetPrefs()->SetBoolean(prefs::kLanguageImeMenuActivated, |
+ true); |
+ ASSERT_TRUE( |
+ LoadExtension(test_data_dir_.AppendASCII("input_method/ime_menu2"))); |
+ |
+ std::vector<std::string> extension_ime_ids; |
+ extension_ime_ids.push_back(kTestIMEID); |
+ extension_ime_ids.push_back(kTestIMEID2); |
+ InputMethodManager::Get()->GetActiveIMEState()->SetEnabledExtensionImes( |
+ &extension_ime_ids); |
+ InputMethodDescriptors extension_imes; |
+ InputMethodManager::Get()->GetActiveIMEState()->GetInputMethodExtensions( |
+ &extension_imes); |
+ InputMethodManager::Get()->GetActiveIMEState()->ChangeInputMethod( |
+ kTestIMEID, false /* show_message */); |
+ ui::IMEEngineHandlerInterface* engine_handler = |
+ ui::IMEBridge::Get()->GetCurrentEngineHandler(); |
+ ASSERT_TRUE(engine_handler); |
+ engine_handler->Enable("test"); |
+ |
+ ASSERT_TRUE(activated_listener.WaitUntilSatisfied()) << message_; |
+ ASSERT_TRUE(menu_listener.WaitUntilSatisfied()) << message_; |
+ ASSERT_TRUE(item_activated_listenter.WaitUntilSatisfied()) << message_; |
+ |
+ InputMethodManager::Get()->GetActiveIMEState()->ChangeInputMethod( |
+ kTestIMEID2, false /* show_message */); |
+ engine_handler->Enable("test2"); |
+ ASSERT_TRUE(list_listenter.WaitUntilSatisfied()) << message_; |
+} |