Index: ash/root_window_controller_unittest.cc |
diff --git a/ash/root_window_controller_unittest.cc b/ash/root_window_controller_unittest.cc |
index 3edd28013e160131fde6d374312f1c40f5da724c..e051a74e323471b405a2c86397827fe368d47468 100644 |
--- a/ash/root_window_controller_unittest.cc |
+++ b/ash/root_window_controller_unittest.cc |
@@ -25,6 +25,10 @@ |
#include "ui/aura/window.h" |
#include "ui/aura/window_event_dispatcher.h" |
#include "ui/aura/window_tracker.h" |
+#include "ui/base/ime/dummy_text_input_client.h" |
+#include "ui/base/ime/input_method.h" |
+#include "ui/base/ime/input_method_factory.h" |
+#include "ui/base/ime/text_input_client.h" |
#include "ui/events/test/test_event_handler.h" |
#include "ui/keyboard/keyboard_controller_proxy.h" |
#include "ui/keyboard/keyboard_switches.h" |
@@ -605,6 +609,7 @@ class VirtualKeyboardRootWindowControllerTest : public RootWindowControllerTest |
virtual ~VirtualKeyboardRootWindowControllerTest() {}; |
virtual void SetUp() OVERRIDE { |
+ ui::SetUpInputMethodFactoryForTesting(); |
CommandLine::ForCurrentProcess()->AppendSwitch( |
keyboard::switches::kEnableVirtualKeyboard); |
test::AshTestBase::SetUp(); |
@@ -616,6 +621,23 @@ class VirtualKeyboardRootWindowControllerTest : public RootWindowControllerTest |
DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardRootWindowControllerTest); |
}; |
+class MockTextInputClient : public ui::DummyTextInputClient { |
+ public: |
+ MockTextInputClient() : |
+ ui::DummyTextInputClient(ui::TEXT_INPUT_TYPE_TEXT) {} |
+ |
+ virtual void EnsureCaretInRect(const gfx::Rect& rect) OVERRIDE { |
+ visible_rect_ = rect; |
+ } |
+ |
+ gfx::Rect& visible_rect() { |
oshima
2014/05/12 18:09:59
const const ?
kevers
2014/05/13 00:07:49
Done.
|
+ return visible_rect_; |
+ } |
+ |
+ private: |
+ gfx::Rect visible_rect_; |
oshima
2014/05/12 18:09:59
DISALLOW_COPY_AND_ASSIGN
kevers
2014/05/13 00:07:49
Done.
|
+}; |
+ |
// Test for http://crbug.com/297858. Virtual keyboard container should only show |
// on primary root window. |
TEST_F(VirtualKeyboardRootWindowControllerTest, |
@@ -766,5 +788,35 @@ TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) { |
root_window->RemovePreTargetHandler(&handler); |
} |
+// Ensure that the visible area for scrolling the text caret excludes the |
+// region occluded by the on-screen keyboard. |
+TEST_F(VirtualKeyboardRootWindowControllerTest, EnsureCaretInWorkArea) { |
+ keyboard::KeyboardController* keyboard_controller = |
+ keyboard::KeyboardController::GetInstance(); |
+ keyboard::KeyboardControllerProxy* proxy = keyboard_controller->proxy(); |
+ |
+ MockTextInputClient text_input_client; |
+ ui::InputMethod* input_method = proxy->GetInputMethod(); |
+ input_method->SetFocusedTextInputClient(&text_input_client); |
+ |
+ aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
+ aura::Window* keyboard_container = |
+ Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
+ ASSERT_TRUE(keyboard_container); |
+ keyboard_container->Show(); |
+ |
+ aura::Window* keyboard_window =proxy->GetKeyboardWindow(); |
+ keyboard_container->AddChild(keyboard_window); |
+ keyboard_window->set_owned_by_parent(false); |
+ keyboard_window->SetBounds(keyboard::KeyboardBoundsFromWindowBounds( |
+ keyboard_container->bounds(), 100)); |
oshima
2014/05/12 18:09:59
define const for vk height
kevers
2014/05/13 00:07:49
Done.
|
+ |
+ proxy->EnsureCaretInWorkArea(); |
+ ASSERT_EQ(keyboard_container->bounds().width(), |
+ text_input_client.visible_rect().width()); |
+ ASSERT_EQ(keyboard_container->bounds().height() - 100, |
+ text_input_client.visible_rect().height()); |
+} |
+ |
} // namespace test |
} // namespace ash |