Chromium Code Reviews| 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 |