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()); |
} |