| 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 87c8b63fdda11c858e923a3108e5b40fd9f4758c..affbe7812fbe7624e0fc4c2241124a0f6a2e3d2d 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
|
| @@ -62,6 +62,7 @@ class InputMethodManagerImplTest : public testing::Test {
|
| delegate_ = new FakeInputMethodDelegate();
|
| manager_.reset(new InputMethodManagerImpl(
|
| scoped_ptr<InputMethodDelegate>(delegate_)));
|
| + manager_->GetInputMethodUtil()->UpdateHardwareLayoutCache();
|
| candidate_window_controller_ = new MockCandidateWindowController;
|
| manager_->SetCandidateWindowControllerForTesting(
|
| candidate_window_controller_);
|
| @@ -233,11 +234,14 @@ TEST_F(InputMethodManagerImplTest, TestCandidateWindowObserver) {
|
| TEST_F(InputMethodManagerImplTest, TestObserver) {
|
| // For http://crbug.com/19655#c11 - (3). browser_state_monitor_unittest.cc is
|
| // also for the scenario.
|
| + std::vector<std::string> keyboard_layouts;
|
| + keyboard_layouts.push_back("xkb:us::eng");
|
| +
|
| TestObserver observer;
|
| InitComponentExtension();
|
| manager_->AddObserver(&observer);
|
| EXPECT_EQ(0, observer.input_method_changed_count_);
|
| - manager_->EnableLoginLayouts("en-US", "xkb:us::eng");
|
| + manager_->EnableLoginLayouts("en-US", keyboard_layouts);
|
| EXPECT_EQ(1, observer.input_method_changed_count_);
|
| EXPECT_EQ(1, observer.input_method_property_changed_count_);
|
| manager_->ChangeInputMethod("xkb:us:dvorak:eng");
|
| @@ -283,21 +287,26 @@ TEST_F(InputMethodManagerImplTest, TestGetSupportedInputMethods) {
|
| TEST_F(InputMethodManagerImplTest, TestEnableLayouts) {
|
| // Currently 5 keyboard layouts are supported for en-US, and 1 for ja. See
|
| // ibus_input_method.txt.
|
| + std::vector<std::string> keyboard_layouts;
|
| +
|
| InitComponentExtension();
|
| - manager_->EnableLoginLayouts("en-US", "");
|
| + manager_->EnableLoginLayouts("en-US", keyboard_layouts);
|
| EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
|
| for (size_t i = 0; i < manager_->GetActiveInputMethodIds().size(); ++i)
|
| LOG(ERROR) << manager_->GetActiveInputMethodIds().at(i);
|
|
|
| // For http://crbug.com/19655#c11 - (5)
|
| // The hardware keyboard layout "xkb:us::eng" is always active, hence 2U.
|
| - manager_->EnableLoginLayouts("ja", ""); // Japanese
|
| + manager_->EnableLoginLayouts("ja", keyboard_layouts); // Japanese
|
| EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
|
| }
|
|
|
| TEST_F(InputMethodManagerImplTest, TestEnableLayoutsAndCurrentInputMethod) {
|
| // For http://crbug.com/329061
|
| - manager_->EnableLoginLayouts("en-US", "xkb:se::swe");
|
| + std::vector<std::string> keyboard_layouts;
|
| + keyboard_layouts.push_back("xkb:se::swe");
|
| +
|
| + manager_->EnableLoginLayouts("en-US", keyboard_layouts);
|
| const std::string im_id = manager_->GetCurrentInputMethod().id();
|
| EXPECT_EQ("xkb:se::swe", im_id);
|
| }
|
| @@ -305,24 +314,57 @@ TEST_F(InputMethodManagerImplTest, TestEnableLayoutsAndCurrentInputMethod) {
|
| TEST_F(InputMethodManagerImplTest, TestEnableLayoutsNonUsHardwareKeyboard) {
|
| // The physical layout is French.
|
| delegate_->set_hardware_keyboard_layout("xkb:fr::fra");
|
| - manager_->EnableLoginLayouts("en-US", "");
|
| + manager_->GetInputMethodUtil()->UpdateHardwareLayoutCache();
|
| + manager_->EnableLoginLayouts(
|
| + "en-US",
|
| + manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
|
| EXPECT_EQ(6U, manager_->GetNumActiveInputMethods()); // 5 + French
|
| // The physical layout is Japanese.
|
| delegate_->set_hardware_keyboard_layout("xkb:jp::jpn");
|
| - manager_->EnableLoginLayouts("ja", "");
|
| + manager_->GetInputMethodUtil()->UpdateHardwareLayoutCache();
|
| + manager_->EnableLoginLayouts(
|
| + "ja",
|
| + manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
|
| // "xkb:us::eng" is not needed, hence 1.
|
| EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
|
|
|
| // The physical layout is Russian.
|
| delegate_->set_hardware_keyboard_layout("xkb:ru::rus");
|
| - manager_->EnableLoginLayouts("ru", "");
|
| + manager_->GetInputMethodUtil()->UpdateHardwareLayoutCache();
|
| + manager_->EnableLoginLayouts(
|
| + "ru",
|
| + manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
|
| // "xkb:us::eng" only.
|
| EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
|
| EXPECT_EQ("xkb:us::eng", manager_->GetActiveInputMethodIds().front());
|
| }
|
|
|
| +TEST_F(InputMethodManagerImplTest, TestEnableMultipleHardwareKeyboardLayout) {
|
| + // The physical layouts are French and Hungarian.
|
| + delegate_->set_hardware_keyboard_layout("xkb:fr::fra,xkb:hu::hun");
|
| + manager_->GetInputMethodUtil()->UpdateHardwareLayoutCache();
|
| + manager_->EnableLoginLayouts(
|
| + "en-US",
|
| + manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
|
| + // 5 + French + Hungarian
|
| + EXPECT_EQ(7U, manager_->GetNumActiveInputMethods());
|
| +}
|
| +
|
| +TEST_F(InputMethodManagerImplTest,
|
| + TestEnableMultipleHardwareKeyboardLayout_NoLoginKeyboard) {
|
| + // The physical layouts are English (US) and Russian.
|
| + delegate_->set_hardware_keyboard_layout("xkb:us::eng,xkb:ru::rus");
|
| + manager_->GetInputMethodUtil()->UpdateHardwareLayoutCache();
|
| + manager_->EnableLoginLayouts(
|
| + "ru",
|
| + manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
|
| + // xkb:us:eng
|
| + EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
|
| +}
|
| +
|
| TEST_F(InputMethodManagerImplTest, TestActiveInputMethods) {
|
| - manager_->EnableLoginLayouts("ja", ""); // Japanese
|
| + std::vector<std::string> keyboard_layouts;
|
| + manager_->EnableLoginLayouts("ja", keyboard_layouts); // Japanese
|
| EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
|
| scoped_ptr<InputMethodDescriptors> methods(
|
| manager_->GetActiveInputMethods());
|
| @@ -676,8 +718,10 @@ TEST_F(InputMethodManagerImplTest, TestNextInputMethod) {
|
| TestObserver observer;
|
| manager_->AddObserver(&observer);
|
| InitComponentExtension();
|
| + std::vector<std::string> keyboard_layouts;
|
| + keyboard_layouts.push_back("xkb:us::eng");
|
| // For http://crbug.com/19655#c11 - (1)
|
| - manager_->EnableLoginLayouts("en-US", "xkb:us::eng");
|
| + manager_->EnableLoginLayouts("en-US", keyboard_layouts);
|
| EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
|
| EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
|
| EXPECT_EQ("us", xkeyboard_->last_layout_);
|
| @@ -715,7 +759,9 @@ TEST_F(InputMethodManagerImplTest, TestPreviousInputMethod) {
|
| ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
|
| keyup_accelerator.set_type(ui::ET_KEY_RELEASED);
|
|
|
| - manager_->EnableLoginLayouts("en-US", "xkb:us::eng");
|
| + std::vector<std::string> keyboard_layouts;
|
| + keyboard_layouts.push_back("xkb:us::eng");
|
| + manager_->EnableLoginLayouts("en-US", keyboard_layouts);
|
| EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
|
| EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
|
| EXPECT_EQ("us", xkeyboard_->last_layout_);
|
| @@ -788,7 +834,9 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) {
|
| TestObserver observer;
|
| manager_->AddObserver(&observer);
|
| InitComponentExtension();
|
| - manager_->EnableLoginLayouts("en-US", "xkb:us::eng");
|
| + std::vector<std::string> keyboard_layouts;
|
| + keyboard_layouts.push_back("xkb:us::eng");
|
| + manager_->EnableLoginLayouts("en-US", keyboard_layouts);
|
| EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
|
| EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
|
| EXPECT_EQ("us", xkeyboard_->last_layout_);
|
| @@ -825,7 +873,9 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpLayout) {
|
| ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
|
| keyup_accelerator.set_type(ui::ET_KEY_RELEASED);
|
|
|
| - manager_->EnableLoginLayouts("ja", "xkb:us::eng");
|
| + std::vector<std::string> keyboard_layouts;
|
| + keyboard_layouts.push_back("xkb:us::eng");
|
| + manager_->EnableLoginLayouts("ja", keyboard_layouts);
|
| EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
|
| EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
|
| EXPECT_EQ("us", xkeyboard_->last_layout_);
|
|
|