Index: ash/display/display_controller_unittest.cc |
diff --git a/ash/display/display_controller_unittest.cc b/ash/display/display_controller_unittest.cc |
index 48d2babf7b64ab88f9c4af9c7a194db452eea269..3b739b55651551074927ffef01f50e6fe0ecfc0e 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 |