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

Unified Diff: ui/keyboard/keyboard_controller_unittest.cc

Issue 29943002: Limit display of the virtual keyboard to state changes triggered from a user gesture. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit tests for input methods on Windows. Created 6 years, 11 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: ui/keyboard/keyboard_controller_unittest.cc
diff --git a/ui/keyboard/keyboard_controller_unittest.cc b/ui/keyboard/keyboard_controller_unittest.cc
index d79c9ba3d8220008bc148121eb79cacaf014ad4d..455e7f300a90eb912bb6e6a6b93abdcbe217fa30 100644
--- a/ui/keyboard/keyboard_controller_unittest.cc
+++ b/ui/keyboard/keyboard_controller_unittest.cc
@@ -196,10 +196,18 @@ class KeyboardControllerTest : public testing::Test {
KeyboardControllerTest() {}
virtual ~KeyboardControllerTest() {}
+ static void SetUpForTesting() {
+ static bool initialized = false;
+ if (!initialized) {
+ ui::SetUpInputMethodFactoryForTesting();
Seigo Nonaka 2014/01/09 06:08:43 I think this function can be called multiple times
kevers 2014/01/09 15:29:09 This change is to address 331690. Actually would
+ initialized = true;
+ }
+ }
+
virtual void SetUp() OVERRIDE {
aura_test_helper_.reset(new aura::test::AuraTestHelper(&message_loop_));
aura_test_helper_->SetUp();
- ui::SetUpInputMethodFactoryForTesting();
+ SetUpForTesting();
focus_controller_.reset(new TestFocusController(root_window()));
proxy_ = new TestKeyboardControllerProxy();
controller_.reset(new KeyboardController(proxy_));
@@ -216,10 +224,17 @@ class KeyboardControllerTest : public testing::Test {
void ShowKeyboard() {
TestTextInputClient test_text_input_client(ui::TEXT_INPUT_TYPE_TEXT);
- controller_->OnTextInputStateChanged(&test_text_input_client);
+ SetFocus(&test_text_input_client);
}
protected:
+ void SetFocus(ui::TextInputClient* client) {
+ ui::InputMethod* input_method = proxy()->GetInputMethod();
+ input_method->SetFocusedTextInputClient(client);
+ if (client && client->GetTextInputType() != ui::TEXT_INPUT_TYPE_NONE)
+ input_method->ShowImeIfNeeded();
+ }
+
bool WillHideKeyboard() {
return controller_->WillHideKeyboard();
}
@@ -297,13 +312,11 @@ TEST_F(KeyboardControllerTest, ClickDoesNotFocusKeyboard) {
TEST_F(KeyboardControllerTest, VisibilityChangeWithTextInputTypeChange) {
const gfx::Rect& root_bounds = root_window()->bounds();
- ui::InputMethod* input_method = proxy()->GetInputMethod();
TestTextInputClient input_client_0(ui::TEXT_INPUT_TYPE_TEXT);
TestTextInputClient input_client_1(ui::TEXT_INPUT_TYPE_TEXT);
TestTextInputClient input_client_2(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);
aura::Window* keyboard_container(controller()->GetContainerWindow());
scoped_ptr<KeyboardContainerObserver> keyboard_container_observer(
@@ -311,9 +324,11 @@ TEST_F(KeyboardControllerTest, VisibilityChangeWithTextInputTypeChange) {
keyboard_container->SetBounds(root_bounds);
root_window()->AddChild(keyboard_container);
+ SetFocus(&input_client_0);
+
EXPECT_TRUE(keyboard_container->IsVisible());
- input_method->SetFocusedTextInputClient(&no_input_client_0);
+ SetFocus(&no_input_client_0);
// Keyboard should not immediately hide itself. It is delayed to avoid layout
// flicker when the focus of input field quickly change.
EXPECT_TRUE(keyboard_container->IsVisible());
@@ -322,28 +337,27 @@ TEST_F(KeyboardControllerTest, VisibilityChangeWithTextInputTypeChange) {
base::MessageLoop::current()->Run();
EXPECT_FALSE(keyboard_container->IsVisible());
- input_method->SetFocusedTextInputClient(&input_client_1);
+ SetFocus(&input_client_1);
EXPECT_TRUE(keyboard_container->IsVisible());
// Schedule to hide keyboard.
- input_method->SetFocusedTextInputClient(&no_input_client_1);
+ SetFocus(&no_input_client_1);
EXPECT_TRUE(WillHideKeyboard());
// Cancel keyboard hide.
- input_method->SetFocusedTextInputClient(&input_client_2);
+ SetFocus(&input_client_2);
EXPECT_FALSE(WillHideKeyboard());
EXPECT_TRUE(keyboard_container->IsVisible());
}
+
TEST_F(KeyboardControllerTest, AlwaysVisibleWhenLocked) {
const gfx::Rect& root_bounds = root_window()->bounds();
- ui::InputMethod* input_method = proxy()->GetInputMethod();
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);
aura::Window* keyboard_container(controller()->GetContainerWindow());
scoped_ptr<KeyboardContainerObserver> keyboard_container_observer(
@@ -351,24 +365,26 @@ TEST_F(KeyboardControllerTest, AlwaysVisibleWhenLocked) {
keyboard_container->SetBounds(root_bounds);
root_window()->AddChild(keyboard_container);
+ SetFocus(&input_client_0);
+
EXPECT_TRUE(keyboard_container->IsVisible());
// Lock keyboard.
controller()->set_lock_keyboard(true);
- input_method->SetFocusedTextInputClient(&no_input_client_0);
+ SetFocus(&no_input_client_0);
// Keyboard should not try to hide itself as it is locked.
EXPECT_TRUE(keyboard_container->IsVisible());
EXPECT_FALSE(WillHideKeyboard());
- input_method->SetFocusedTextInputClient(&input_client_1);
+ SetFocus(&input_client_1);
EXPECT_TRUE(keyboard_container->IsVisible());
// Unlock keyboard.
controller()->set_lock_keyboard(false);
// Keyboard should hide when focus on no input client.
- input_method->SetFocusedTextInputClient(&no_input_client_1);
+ SetFocus(&no_input_client_1);
EXPECT_TRUE(WillHideKeyboard());
// Wait for hide keyboard to finish.
@@ -422,18 +438,17 @@ class KeyboardControllerUsabilityTest : public KeyboardControllerTest {
TEST_F(KeyboardControllerUsabilityTest, KeyboardAlwaysVisibleInUsabilityTest) {
const gfx::Rect& root_bounds = root_window()->bounds();
- 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);
aura::Window* keyboard_container(controller()->GetContainerWindow());
keyboard_container->SetBounds(root_bounds);
root_window()->AddChild(keyboard_container);
+ SetFocus(&input_client);
EXPECT_TRUE(keyboard_container->IsVisible());
- input_method->SetFocusedTextInputClient(&no_input_client);
+ SetFocus(&no_input_client);
// Keyboard should not hide itself after lost focus.
EXPECT_TRUE(keyboard_container->IsVisible());
EXPECT_FALSE(WillHideKeyboard());

Powered by Google App Engine
This is Rietveld 408576698