summaryrefslogtreecommitdiffstats
path: root/ash/display/display_controller_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ash/display/display_controller_unittest.cc')
-rw-r--r--ash/display/display_controller_unittest.cc86
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