| Index: ash/wm/ash_native_cursor_manager_unittest.cc
|
| diff --git a/ash/wm/ash_native_cursor_manager_unittest.cc b/ash/wm/ash_native_cursor_manager_unittest.cc
|
| index 812601fe87eb3523d401924d3957db3d89c5f694..5713fe3f02be0e29cc034e6aeb9ed754629daa0f 100644
|
| --- a/ash/wm/ash_native_cursor_manager_unittest.cc
|
| +++ b/ash/wm/ash_native_cursor_manager_unittest.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "ash/wm/ash_native_cursor_manager.h"
|
|
|
| +#include "ash/display/display_info.h"
|
| +#include "ash/display/display_manager.h"
|
| #include "ash/shell.h"
|
| #include "ash/test/ash_test_base.h"
|
| #include "ash/test/cursor_manager_test_api.h"
|
| @@ -54,18 +56,16 @@ typedef test::AshTestBase AshNativeCursorManagerTest;
|
| TEST_F(AshNativeCursorManagerTest, LockCursor) {
|
| ::wm::CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
|
| CursorManagerTestApi test_api(cursor_manager);
|
| - gfx::Display display(0);
|
| +
|
| #if defined(OS_WIN)
|
| ui::CursorLoaderWin::SetCursorResourceModule(L"ash_unittests.exe");
|
| #endif
|
| cursor_manager->SetCursor(ui::kCursorCopy);
|
| EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
|
| - display.set_device_scale_factor(2.0f);
|
| - display.set_rotation(gfx::Display::ROTATE_90);
|
| - cursor_manager->SetDisplay(display);
|
| - EXPECT_EQ(2.0f, test_api.GetDisplay().device_scale_factor());
|
| + UpdateDisplay("800x800*2/r");
|
| + EXPECT_EQ(2.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| EXPECT_EQ(ui::CURSOR_SET_NORMAL, test_api.GetCurrentCursorSet());
|
| - EXPECT_EQ(gfx::Display::ROTATE_90, test_api.GetDisplay().rotation());
|
| + EXPECT_EQ(gfx::Display::ROTATE_90, test_api.GetCurrentCursorRotation());
|
| EXPECT_TRUE(test_api.GetCurrentCursor().platform());
|
|
|
| cursor_manager->LockCursor();
|
| @@ -85,18 +85,16 @@ TEST_F(AshNativeCursorManagerTest, LockCursor) {
|
| EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
|
|
|
| // Device scale factor and rotation do change even while cursor is locked.
|
| - display.set_device_scale_factor(1.0f);
|
| - display.set_rotation(gfx::Display::ROTATE_180);
|
| - cursor_manager->SetDisplay(display);
|
| - EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor());
|
| - EXPECT_EQ(gfx::Display::ROTATE_180, test_api.GetDisplay().rotation());
|
| + UpdateDisplay("800x800/u");
|
| + EXPECT_EQ(1.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| + EXPECT_EQ(gfx::Display::ROTATE_180, test_api.GetCurrentCursorRotation());
|
|
|
| cursor_manager->UnlockCursor();
|
| EXPECT_FALSE(cursor_manager->IsCursorLocked());
|
|
|
| // Cursor type changes to the one specified while cursor is locked.
|
| EXPECT_EQ(ui::kCursorPointer, test_api.GetCurrentCursor().native_type());
|
| - EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor());
|
| + EXPECT_EQ(1.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| EXPECT_TRUE(test_api.GetCurrentCursor().platform());
|
| }
|
|
|
| @@ -133,18 +131,47 @@ TEST_F(AshNativeCursorManagerTest, SetCursorSet) {
|
| TEST_F(AshNativeCursorManagerTest, SetDeviceScaleFactorAndRotation) {
|
| ::wm::CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
|
| CursorManagerTestApi test_api(cursor_manager);
|
| + UpdateDisplay("800x100*2");
|
| + EXPECT_EQ(2.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| + EXPECT_EQ(gfx::Display::ROTATE_0, test_api.GetCurrentCursorRotation());
|
| +
|
| + UpdateDisplay("800x100/l");
|
| + EXPECT_EQ(1.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| + EXPECT_EQ(gfx::Display::ROTATE_270, test_api.GetCurrentCursorRotation());
|
| +}
|
|
|
| - gfx::Display display(0);
|
| - display.set_device_scale_factor(2.0f);
|
| - cursor_manager->SetDisplay(display);
|
| - EXPECT_EQ(2.0f, test_api.GetDisplay().device_scale_factor());
|
| - EXPECT_EQ(gfx::Display::ROTATE_0, test_api.GetDisplay().rotation());
|
| -
|
| - display.set_device_scale_factor(1.0f);
|
| - display.set_rotation(gfx::Display::ROTATE_270);
|
| - cursor_manager->SetDisplay(display);
|
| - EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor());
|
| - EXPECT_EQ(gfx::Display::ROTATE_270, test_api.GetDisplay().rotation());
|
| +TEST_F(AshNativeCursorManagerTest, UIScaleShouldNotChangeCursor) {
|
| + int64 display_id = Shell::GetScreen()->GetPrimaryDisplay().id();
|
| + gfx::Display::SetInternalDisplayId(display_id);
|
| +
|
| + ::wm::CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
|
| + CursorManagerTestApi test_api(cursor_manager);
|
| + DisplayManager* display_manager = Shell::GetInstance()->display_manager();
|
| +
|
| + DisplayInfo::SetAllowUpgradeToHighDPI(false);
|
| + display_manager->SetDisplayUIScale(display_id, 0.5f);
|
| + EXPECT_EQ(1.0f,
|
| + Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor());
|
| + EXPECT_EQ(1.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| +
|
| + display_manager->SetDisplayUIScale(display_id, 1.0f);
|
| +
|
| + DisplayInfo::SetAllowUpgradeToHighDPI(true);
|
| + // 1x display should keep using 1x cursor even if the DSF is upgraded to 2x.
|
| + display_manager->SetDisplayUIScale(display_id, 0.5f);
|
| + EXPECT_EQ(2.0f,
|
| + Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor());
|
| + EXPECT_EQ(1.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| +
|
| + // 2x display should keep using 2x cursor regardless of the UI scale.
|
| + UpdateDisplay("800x800*2");
|
| + EXPECT_EQ(2.0f,
|
| + Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor());
|
| + EXPECT_EQ(2.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| + display_manager->SetDisplayUIScale(display_id, 2.0f);
|
| + EXPECT_EQ(1.0f,
|
| + Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor());
|
| + EXPECT_EQ(2.0f, test_api.GetCurrentCursor().device_scale_factor());
|
| }
|
|
|
| TEST_F(AshNativeCursorManagerTest, DisabledQueryMouseLocation) {
|
|
|