Chromium Code Reviews| Index: ui/keyboard/keyboard_controller_unittest.cc |
| diff --git a/ui/keyboard/keyboard_controller_unittest.cc b/ui/keyboard/keyboard_controller_unittest.cc |
| index 49c695a61771210c12f0dd2da8c0d8ea5b6184ac..c3a4afdf60c81a72c7e98078e5704ae4532b8a45 100644 |
| --- a/ui/keyboard/keyboard_controller_unittest.cc |
| +++ b/ui/keyboard/keyboard_controller_unittest.cc |
| @@ -2,6 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include "base/bind.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/message_loop/message_loop.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -22,6 +23,18 @@ |
| namespace keyboard { |
| namespace { |
| +void StopWait() { |
| + base::MessageLoop::current()->Quit(); |
| +} |
| + |
| +void WaitKeyboardHideToFinish() { |
| + base::MessageLoop::current()->PostDelayedTask( |
| + FROM_HERE, |
| + base::Bind(&StopWait), |
| + base::TimeDelta::FromMilliseconds(kHideKeyboardDelayMs)); |
| + base::MessageLoop::current()->Run(); |
| +} |
| + |
| // An event handler that focuses a window when it is clicked/touched on. This is |
| // used to match the focus manger behaviour in ash and views. |
| class TestFocusController : public ui::EventHandler { |
| @@ -270,9 +283,11 @@ TEST_F(KeyboardControllerTest, VisibilityChangeWithTextInputTypeChange) { |
| KeyboardControllerProxy* proxy = new TestKeyboardControllerProxy(); |
| ui::InputMethod* input_method = proxy->GetInputMethod(); |
| - TestTextInputClient input_client(ui::TEXT_INPUT_TYPE_TEXT); |
| - TestTextInputClient no_input_client(ui::TEXT_INPUT_TYPE_NONE); |
| - input_method->SetFocusedTextInputClient(&input_client); |
| + TestTextInputClient input_client_0(ui::TEXT_INPUT_TYPE_TEXT); |
| + TestTextInputClient input_client_1(ui::TEXT_INPUT_TYPE_TEXT); |
| + TestTextInputClient no_input_client_0(ui::TEXT_INPUT_TYPE_NONE); |
| + TestTextInputClient no_input_client_1(ui::TEXT_INPUT_TYPE_NONE); |
| + input_method->SetFocusedTextInputClient(&input_client_0); |
| KeyboardController controller(proxy); |
| @@ -282,10 +297,21 @@ TEST_F(KeyboardControllerTest, VisibilityChangeWithTextInputTypeChange) { |
| EXPECT_TRUE(keyboard_container->IsVisible()); |
| - input_method->SetFocusedTextInputClient(&no_input_client); |
| + input_method->SetFocusedTextInputClient(&no_input_client_0); |
| + // Keyboard should not immediately hide itself. |
|
kevers
2013/08/26 15:50:18
Probably worth noting in the comment why the keybo
bshe
2013/08/26 18:39:17
Done.
|
| + EXPECT_TRUE(keyboard_container->IsVisible()); |
| + WaitKeyboardHideToFinish(); |
| EXPECT_FALSE(keyboard_container->IsVisible()); |
| - input_method->SetFocusedTextInputClient(&input_client); |
| + input_method->SetFocusedTextInputClient(&input_client_0); |
| + EXPECT_TRUE(keyboard_container->IsVisible()); |
| + |
| + // Schedule to hide keyboard. |
| + input_method->SetFocusedTextInputClient(&no_input_client_1); |
| + // Cancel keyboard hide. |
| + input_method->SetFocusedTextInputClient(&input_client_1); |
| + |
| + WaitKeyboardHideToFinish(); |
| EXPECT_TRUE(keyboard_container->IsVisible()); |
| } |