diff options
Diffstat (limited to 'ash/display/display_controller_unittest.cc')
-rw-r--r-- | ash/display/display_controller_unittest.cc | 86 |
1 files changed, 83 insertions, 3 deletions
diff --git a/ash/display/display_controller_unittest.cc b/ash/display/display_controller_unittest.cc index 48d2bab..3b739b5 100644 --- a/ash/display/display_controller_unittest.cc +++ b/ash/display/display_controller_unittest.cc @@ -6,13 +6,12 @@ #include "ash/shell.h" #include "ash/test/ash_test_base.h" +#include "ui/aura/display_manager.h" +#include "ui/aura/env.h" #include "ui/aura/root_window.h" #include "ui/gfx/display.h" #include "ui/gfx/screen.h" -#include "ui/aura/env.h" -#include "ui/aura/display_manager.h" - namespace ash { namespace test { namespace { @@ -125,5 +124,86 @@ TEST_F(DisplayControllerTest, MAYBE_BoundsUpdated) { EXPECT_EQ("0,700 1000x1000", GetSecondaryDisplay().bounds().ToString()); } +TEST_F(DisplayControllerTest, WarpMouse) { + UpdateDisplay("500x500,500x500"); + + ash::internal::DisplayController* controller = + Shell::GetInstance()->display_controller(); + EXPECT_EQ(internal::DisplayController::RIGHT, + controller->secondary_display_layout()); + + Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); + bool is_warped = controller->WarpMouseCursorIfNecessary(root_windows[0], + gfx::Point(11, 11)); + EXPECT_FALSE(is_warped); + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[1], + gfx::Point(11, 11)); + EXPECT_FALSE(is_warped); + + // Touch the right edge of the primary root window. Pointer should warp. + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[0], + gfx::Point(499, 11)); + EXPECT_TRUE(is_warped); + EXPECT_EQ("501,11", // by 2px. + aura::Env::GetInstance()->last_mouse_location().ToString()); + + // Touch the left edge of the secondary root window. Pointer should warp. + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[1], + gfx::Point(0, 11)); + EXPECT_TRUE(is_warped); + EXPECT_EQ("498,11", // by 2px. + aura::Env::GetInstance()->last_mouse_location().ToString()); + + // Touch the left edge of the primary root window. + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[0], + gfx::Point(0, 11)); + EXPECT_FALSE(is_warped); + // Touch the top edge of the primary root window. + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[0], + gfx::Point(11, 0)); + EXPECT_FALSE(is_warped); + // Touch the bottom edge of the primary root window. + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[0], + gfx::Point(11, 499)); + EXPECT_FALSE(is_warped); + // Touch the right edge of the secondary root window. + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[1], + gfx::Point(499, 11)); + EXPECT_FALSE(is_warped); + // Touch the top edge of the secondary root window. + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[1], + gfx::Point(11, 0)); + EXPECT_FALSE(is_warped); + // Touch the bottom edge of the secondary root window. + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[1], + gfx::Point(11, 499)); + EXPECT_FALSE(is_warped); +} + +TEST_F(DisplayControllerTest, SetUnsetDontWarpMousedFlag) { + UpdateDisplay("500x500,500x500"); + + ash::internal::DisplayController* controller = + Shell::GetInstance()->display_controller(); + + Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); + aura::Env::GetInstance()->SetLastMouseLocation(*root_windows[0], + gfx::Point(1, 1)); + + controller->set_dont_warp_mouse(true); + bool is_warped = controller->WarpMouseCursorIfNecessary(root_windows[0], + gfx::Point(499, 11)); + EXPECT_FALSE(is_warped); + EXPECT_EQ("1,1", + aura::Env::GetInstance()->last_mouse_location().ToString()); + + controller->set_dont_warp_mouse(false); + is_warped = controller->WarpMouseCursorIfNecessary(root_windows[0], + gfx::Point(499, 11)); + EXPECT_TRUE(is_warped); + EXPECT_EQ("501,11", + aura::Env::GetInstance()->last_mouse_location().ToString()); +} + } // namespace test } // namespace ash |