| 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
|
|
|