Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Unified Diff: chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc

Issue 2652793003: Add login screen locale and input method device policies (Closed)
Patch Set: Rebase. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698