diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-09 04:47:59 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-09 04:47:59 +0000 |
commit | 89230998f99aa47bb472c7b2a8db0fdace37614c (patch) | |
tree | e03fe116d6e6b2df8e790847b2ee67323ae257ab /ash/display/display_manager_unittest.cc | |
parent | fb1b37b32923f2701888e7b5f59a75756873ad6b (diff) | |
download | chromium_src-89230998f99aa47bb472c7b2a8db0fdace37614c.zip chromium_src-89230998f99aa47bb472c7b2a8db0fdace37614c.tar.gz chromium_src-89230998f99aa47bb472c7b2a8db0fdace37614c.tar.bz2 |
Don't move cursor location when rotation /ui scaling has changed
Moved EnsurePointerInDisplays to DisplayController as it needs to access RootWindow.
BUG=226300
TEST=covered by test.
Review URL: https://chromiumcodereview.appspot.com/13466022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193008 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/display/display_manager_unittest.cc')
-rw-r--r-- | ash/display/display_manager_unittest.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc index 237a89b..7ddb8a5 100644 --- a/ash/display/display_manager_unittest.cc +++ b/ash/display/display_manager_unittest.cc @@ -748,5 +748,48 @@ TEST_F(DisplayManagerTest, UIScale) { EXPECT_EQ(0.5f, GetDisplayInfoAt(0).ui_scale()); } + +#if defined(OS_WIN) +// TODO(oshima): On Windows, we don't update the origin/size right away. +#define MAYBE_UpdateMouseCursorAfterRotateZoom DISABLED_UpdateMouseCursorAfterRotateZoom +#else +#define MAYBE_UpdateMouseCursorAfterRotateZoom UpdateMouseCursorAfterRotateZoom +#endif + +TEST_F(DisplayManagerTest, MAYBE_UpdateMouseCursorAfterRotateZoom) { + // Make sure just rotating will not change native location. + UpdateDisplay("300x200,200x150"); + Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); + aura::Env* env = aura::Env::GetInstance(); + + // Test on 1st display. + root_windows[0]->MoveCursorTo(gfx::Point(150, 50)); + EXPECT_EQ("150,50", env->last_mouse_location().ToString()); + UpdateDisplay("300x200/r,200x150"); + EXPECT_EQ("50,149", env->last_mouse_location().ToString()); + + // Test on 2nd display. + root_windows[1]->MoveCursorTo(gfx::Point(50, 100)); + EXPECT_EQ("250,100", env->last_mouse_location().ToString()); + UpdateDisplay("300x200/r,200x150/l"); + EXPECT_EQ("249,50", env->last_mouse_location().ToString()); + + // Make sure just zooming will not change native location. + UpdateDisplay("600x400*2,400x300"); + + // Test on 1st display. + root_windows[0]->MoveCursorTo(gfx::Point(100, 150)); + EXPECT_EQ("100,150", env->last_mouse_location().ToString()); + UpdateDisplay("600x400*2@1.5,400x300"); + EXPECT_EQ("150,225", env->last_mouse_location().ToString()); + + // Test on 2nd display. + UpdateDisplay("600x400,400x300*2"); + root_windows[1]->MoveCursorTo(gfx::Point(100, 50)); + EXPECT_EQ("700,50", env->last_mouse_location().ToString()); + UpdateDisplay("600x400,400x300*2@1.5"); + EXPECT_EQ("750,75", env->last_mouse_location().ToString()); +} + } // namespace internal } // namespace ash |