Index: chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc |
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc |
index 29944c644a7354fff8ec7b09ef9e8a74c711efce..524a3492a2ce753121f5e3930dc2aff2b514abb5 100644 |
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc |
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc |
@@ -24,6 +24,7 @@ |
#include "chrome/test/base/testing_browser_process.h" |
#include "chrome/test/base/testing_profile.h" |
#include "chrome/test/base/testing_profile_manager.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/base/accelerators/accelerator.h" |
#include "ui/base/ime/chromeos/extension_ime_util.h" |
@@ -1455,5 +1456,96 @@ TEST_F(InputMethodManagerImplTest, OverrideDefaultKeyboardUrlRef) { |
EXPECT_EQ(default_url, keyboard::GetOverrideContentUrl()); |
} |
+TEST_F(InputMethodManagerImplTest, AllowedKeyboardLayoutsValid) { |
+ InitComponentExtension(); |
+ |
+ // First, setup xkb:fr::fra input method |
+ std::string original_input_method(ImeIdFromEngineId("xkb:fr::fra")); |
+ ASSERT_TRUE( |
+ manager_->GetActiveIMEState()->EnableInputMethod(original_input_method)); |
+ manager_->GetActiveIMEState()->ChangeInputMethod(original_input_method, |
+ false); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetCurrentInputMethod().id(), |
+ original_input_method); |
+ |
+ // Only allow xkb:us::eng |
+ std::vector<std::string> allowed = {"xkb:us::eng"}; |
+ EXPECT_TRUE(manager_->GetActiveIMEState()->SetAllowedInputMethods(allowed)); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetActiveInputMethodIds(), |
+ testing::ElementsAre(ImeIdFromEngineId("xkb:us::eng"))); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetCurrentInputMethod().id(), |
+ ImeIdFromEngineId("xkb:us::eng")); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetAllowedInputMethods(), |
+ testing::ElementsAre(ImeIdFromEngineId("xkb:us::eng"))); |
+} |
+ |
+TEST_F(InputMethodManagerImplTest, AllowedKeyboardLayoutsInvalid) { |
+ InitComponentExtension(); |
+ |
+ // First, setup xkb:fr::fra input method |
+ std::string original_input_method(ImeIdFromEngineId("xkb:fr::fra")); |
+ ASSERT_TRUE( |
+ manager_->GetActiveIMEState()->EnableInputMethod(original_input_method)); |
+ manager_->GetActiveIMEState()->ChangeInputMethod(original_input_method, |
+ false); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetCurrentInputMethod().id(), |
+ original_input_method); |
+ |
+ // Only allow xkb:us::eng |
+ std::vector<std::string> allowed = {"invalid_input_method"}; |
+ EXPECT_FALSE(manager_->GetActiveIMEState()->SetAllowedInputMethods(allowed)); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetCurrentInputMethod().id(), |
+ original_input_method); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetAllowedInputMethods(), |
+ testing::IsEmpty()); |
+} |
+ |
+TEST_F(InputMethodManagerImplTest, AllowedKeyboardLayoutsValidAndInvalid) { |
+ InitComponentExtension(); |
+ |
+ // First, enable xkb:fr::fra and xkb:de::ger |
+ std::string original_input_method_1(ImeIdFromEngineId("xkb:fr::fra")); |
+ std::string original_input_method_2(ImeIdFromEngineId("xkb:de::ger")); |
+ ASSERT_TRUE(manager_->GetActiveIMEState()->EnableInputMethod( |
+ original_input_method_1)); |
+ ASSERT_TRUE(manager_->GetActiveIMEState()->EnableInputMethod( |
+ original_input_method_2)); |
+ manager_->GetActiveIMEState()->ChangeInputMethod(original_input_method_1, |
+ false); |
+ |
+ // Allow xkb:fr::fra and an invalid input method id. The invalid id should be |
+ // ignored. |
+ std::vector<std::string> allowed = {original_input_method_1, |
+ "invalid_input_method"}; |
+ EXPECT_TRUE(manager_->GetActiveIMEState()->SetAllowedInputMethods(allowed)); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetCurrentInputMethod().id(), |
+ original_input_method_1); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetAllowedInputMethods(), |
+ testing::ElementsAre(original_input_method_1)); |
+ |
+ // Try to re-enable xkb:de::ger |
+ EXPECT_FALSE(manager_->GetActiveIMEState()->EnableInputMethod( |
+ original_input_method_2)); |
+} |
+ |
+TEST_F(InputMethodManagerImplTest, AllowedKeyboardLayoutsAndExtensions) { |
+ InitComponentExtension(); |
+ |
+ EXPECT_TRUE(manager_->GetActiveIMEState()->EnableInputMethod( |
+ ImeIdFromEngineId(kNaclMozcJpId))); |
+ EXPECT_TRUE(manager_->GetActiveIMEState()->EnableInputMethod( |
+ ImeIdFromEngineId("xkb:fr::fra"))); |
+ |
+ std::vector<std::string> allowed = {"xkb:us::eng"}; |
+ EXPECT_TRUE(manager_->GetActiveIMEState()->SetAllowedInputMethods(allowed)); |
+ |
+ EXPECT_TRUE(manager_->GetActiveIMEState()->EnableInputMethod( |
+ ImeIdFromEngineId(kNaclMozcUsId))); |
+ EXPECT_THAT(manager_->GetActiveIMEState()->GetActiveInputMethodIds(), |
+ testing::ElementsAre(ImeIdFromEngineId("xkb:us::eng"), |
+ ImeIdFromEngineId(kNaclMozcJpId), |
+ ImeIdFromEngineId(kNaclMozcUsId))); |
+} |
+ |
} // namespace input_method |
} // namespace chromeos |