| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/display/win/screen_win.h" | 5 #include "ui/display/win/screen_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <inttypes.h> | 8 #include <inttypes.h> |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 | 10 |
| 11 #include <cwchar> | 11 #include <cwchar> |
| 12 #include <memory> | 12 #include <memory> |
| 13 #include <string> | 13 #include <string> |
| 14 #include <unordered_map> | 14 #include <unordered_map> |
| 15 #include <vector> | 15 #include <vector> |
| 16 | 16 |
| 17 #include "base/macros.h" | 17 #include "base/macros.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 19 #include "ui/display/win/display_info.h" | 19 #include "ui/display/win/display_info.h" |
| 20 #include "ui/display/win/dpi.h" |
| 20 #include "ui/display/win/screen_win_display.h" | 21 #include "ui/display/win/screen_win_display.h" |
| 21 #include "ui/gfx/display.h" | 22 #include "ui/gfx/display.h" |
| 22 #include "ui/gfx/geometry/rect.h" | 23 #include "ui/gfx/geometry/rect.h" |
| 23 #include "ui/gfx/screen.h" | 24 #include "ui/gfx/screen.h" |
| 24 #include "ui/gfx/test/display_util.h" | 25 #include "ui/gfx/test/display_util.h" |
| 25 #include "ui/gfx/win/dpi.h" | |
| 26 | 26 |
| 27 namespace display { | 27 namespace display { |
| 28 namespace win { | 28 namespace win { |
| 29 | 29 |
| 30 namespace { | 30 namespace { |
| 31 | 31 |
| 32 MONITORINFOEX CreateMonitorInfo(gfx::Rect monitor, | 32 MONITORINFOEX CreateMonitorInfo(gfx::Rect monitor, |
| 33 gfx::Rect work, | 33 gfx::Rect work, |
| 34 std::wstring device_name) { | 34 std::wstring device_name) { |
| 35 MONITORINFOEX monitor_info; | 35 MONITORINFOEX monitor_info; |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 | 191 |
| 192 DISALLOW_COPY_AND_ASSIGN(TestScreenWinManager); | 192 DISALLOW_COPY_AND_ASSIGN(TestScreenWinManager); |
| 193 }; | 193 }; |
| 194 | 194 |
| 195 class ScreenWinTest : public testing::Test { | 195 class ScreenWinTest : public testing::Test { |
| 196 protected: | 196 protected: |
| 197 ScreenWinTest() = default; | 197 ScreenWinTest() = default; |
| 198 | 198 |
| 199 void SetUp() override { | 199 void SetUp() override { |
| 200 testing::Test::SetUp(); | 200 testing::Test::SetUp(); |
| 201 gfx::SetDefaultDeviceScaleFactor(1.0); | 201 display::win::SetDefaultDeviceScaleFactor(1.0); |
| 202 screen_win_initializer_.reset(new TestScreenWinManager()); | 202 screen_win_initializer_.reset(new TestScreenWinManager()); |
| 203 SetUpScreen(screen_win_initializer_.get()); | 203 SetUpScreen(screen_win_initializer_.get()); |
| 204 screen_win_initializer_->InitializeScreenWin(); | 204 screen_win_initializer_->InitializeScreenWin(); |
| 205 } | 205 } |
| 206 | 206 |
| 207 void TearDown() override { | 207 void TearDown() override { |
| 208 screen_win_initializer_.reset(); | 208 screen_win_initializer_.reset(); |
| 209 gfx::SetDefaultDeviceScaleFactor(1.0); | 209 display::win::SetDefaultDeviceScaleFactor(1.0); |
| 210 testing::Test::TearDown(); | 210 testing::Test::TearDown(); |
| 211 } | 211 } |
| 212 | 212 |
| 213 virtual void SetUpScreen(TestScreenWinInitializer* initializer) = 0; | 213 virtual void SetUpScreen(TestScreenWinInitializer* initializer) = 0; |
| 214 | 214 |
| 215 gfx::NativeWindow GetNativeWindowFromHWND(HWND hwnd) const { | 215 gfx::NativeWindow GetNativeWindowFromHWND(HWND hwnd) const { |
| 216 ScreenWin* screen_win = screen_win_initializer_->GetScreenWin(); | 216 ScreenWin* screen_win = screen_win_initializer_->GetScreenWin(); |
| 217 return screen_win->GetNativeWindowFromHWND(hwnd);; | 217 return screen_win->GetNativeWindowFromHWND(hwnd);; |
| 218 } | 218 } |
| 219 | 219 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 gfx::Screen* screen = GetScreen(); | 290 gfx::Screen* screen = GetScreen(); |
| 291 EXPECT_EQ(gfx::Point(0, 0), screen->GetPrimaryDisplay().bounds().origin()); | 291 EXPECT_EQ(gfx::Point(0, 0), screen->GetPrimaryDisplay().bounds().origin()); |
| 292 } | 292 } |
| 293 | 293 |
| 294 // Single Display of 1.25 Device Scale Factor. | 294 // Single Display of 1.25 Device Scale Factor. |
| 295 class ScreenWinTestSingleDisplay1_25x : public ScreenWinTest { | 295 class ScreenWinTestSingleDisplay1_25x : public ScreenWinTest { |
| 296 public: | 296 public: |
| 297 ScreenWinTestSingleDisplay1_25x() = default; | 297 ScreenWinTestSingleDisplay1_25x() = default; |
| 298 | 298 |
| 299 void SetUpScreen(TestScreenWinInitializer* initializer) override { | 299 void SetUpScreen(TestScreenWinInitializer* initializer) override { |
| 300 gfx::SetDefaultDeviceScaleFactor(1.25); | 300 display::win::SetDefaultDeviceScaleFactor(1.25); |
| 301 // Add Monitor of Scale Factor 1.0 since gfx::GetDPIScale performs the | 301 // Add Monitor of Scale Factor 1.0 since display::GetDPIScale performs the |
| 302 // clamping and not ScreenWin. | 302 // clamping and not ScreenWin. |
| 303 initializer->AddMonitor(gfx::Rect(0, 0, 1920, 1200), | 303 initializer->AddMonitor(gfx::Rect(0, 0, 1920, 1200), |
| 304 gfx::Rect(0, 0, 1920, 1100), | 304 gfx::Rect(0, 0, 1920, 1100), |
| 305 L"primary", | 305 L"primary", |
| 306 1.0); | 306 1.0); |
| 307 fake_hwnd_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 1920, 1100)); | 307 fake_hwnd_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 1920, 1100)); |
| 308 } | 308 } |
| 309 | 309 |
| 310 HWND GetFakeHwnd() { | 310 HWND GetFakeHwnd() { |
| 311 return fake_hwnd_; | 311 return fake_hwnd_; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 gfx::Screen* screen = GetScreen(); | 351 gfx::Screen* screen = GetScreen(); |
| 352 EXPECT_EQ(gfx::Point(0, 0), screen->GetPrimaryDisplay().bounds().origin()); | 352 EXPECT_EQ(gfx::Point(0, 0), screen->GetPrimaryDisplay().bounds().origin()); |
| 353 } | 353 } |
| 354 | 354 |
| 355 // Single Display of 1.25 Device Scale Factor. | 355 // Single Display of 1.25 Device Scale Factor. |
| 356 class ScreenWinTestSingleDisplay1_5x : public ScreenWinTest { | 356 class ScreenWinTestSingleDisplay1_5x : public ScreenWinTest { |
| 357 public: | 357 public: |
| 358 ScreenWinTestSingleDisplay1_5x() = default; | 358 ScreenWinTestSingleDisplay1_5x() = default; |
| 359 | 359 |
| 360 void SetUpScreen(TestScreenWinInitializer* initializer) override { | 360 void SetUpScreen(TestScreenWinInitializer* initializer) override { |
| 361 gfx::SetDefaultDeviceScaleFactor(1.5); | 361 display::win::SetDefaultDeviceScaleFactor(1.5); |
| 362 initializer->AddMonitor(gfx::Rect(0, 0, 1920, 1200), | 362 initializer->AddMonitor(gfx::Rect(0, 0, 1920, 1200), |
| 363 gfx::Rect(0, 0, 1920, 1100), | 363 gfx::Rect(0, 0, 1920, 1100), |
| 364 L"primary", | 364 L"primary", |
| 365 1.5); | 365 1.5); |
| 366 fake_hwnd_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 1920, 1100)); | 366 fake_hwnd_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 1920, 1100)); |
| 367 } | 367 } |
| 368 | 368 |
| 369 HWND GetFakeHwnd() { | 369 HWND GetFakeHwnd() { |
| 370 return fake_hwnd_; | 370 return fake_hwnd_; |
| 371 } | 371 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 EXPECT_EQ(gfx::Point(0, 0), screen->GetPrimaryDisplay().bounds().origin()); | 410 EXPECT_EQ(gfx::Point(0, 0), screen->GetPrimaryDisplay().bounds().origin()); |
| 411 } | 411 } |
| 412 | 412 |
| 413 | 413 |
| 414 // Single Display of 2.0 Device Scale Factor. | 414 // Single Display of 2.0 Device Scale Factor. |
| 415 class ScreenWinTestSingleDisplay2x : public ScreenWinTest { | 415 class ScreenWinTestSingleDisplay2x : public ScreenWinTest { |
| 416 public: | 416 public: |
| 417 ScreenWinTestSingleDisplay2x() = default; | 417 ScreenWinTestSingleDisplay2x() = default; |
| 418 | 418 |
| 419 void SetUpScreen(TestScreenWinInitializer* initializer) override { | 419 void SetUpScreen(TestScreenWinInitializer* initializer) override { |
| 420 gfx::SetDefaultDeviceScaleFactor(2.0); | 420 display::win::SetDefaultDeviceScaleFactor(2.0); |
| 421 initializer->AddMonitor(gfx::Rect(0, 0, 1920, 1200), | 421 initializer->AddMonitor(gfx::Rect(0, 0, 1920, 1200), |
| 422 gfx::Rect(0, 0, 1920, 1100), | 422 gfx::Rect(0, 0, 1920, 1100), |
| 423 L"primary", | 423 L"primary", |
| 424 2.0); | 424 2.0); |
| 425 fake_hwnd_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 1920, 1100)); | 425 fake_hwnd_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 1920, 1100)); |
| 426 } | 426 } |
| 427 | 427 |
| 428 HWND GetFakeHwnd() { | 428 HWND GetFakeHwnd() { |
| 429 return fake_hwnd_; | 429 return fake_hwnd_; |
| 430 } | 430 } |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 568 gfx::Display primary = screen->GetPrimaryDisplay(); | 568 gfx::Display primary = screen->GetPrimaryDisplay(); |
| 569 EXPECT_EQ(gfx::Point(0, 0), primary.bounds().origin()); | 569 EXPECT_EQ(gfx::Point(0, 0), primary.bounds().origin()); |
| 570 } | 570 } |
| 571 | 571 |
| 572 // Two Displays of 2.0 Device Scale Factor. | 572 // Two Displays of 2.0 Device Scale Factor. |
| 573 class ScreenWinTestTwoDisplays2x : public ScreenWinTest { | 573 class ScreenWinTestTwoDisplays2x : public ScreenWinTest { |
| 574 public: | 574 public: |
| 575 ScreenWinTestTwoDisplays2x() = default; | 575 ScreenWinTestTwoDisplays2x() = default; |
| 576 | 576 |
| 577 void SetUpScreen(TestScreenWinInitializer* initializer) override { | 577 void SetUpScreen(TestScreenWinInitializer* initializer) override { |
| 578 gfx::SetDefaultDeviceScaleFactor(2.0); | 578 display::win::SetDefaultDeviceScaleFactor(2.0); |
| 579 initializer->AddMonitor(gfx::Rect(0, 0, 1920, 1200), | 579 initializer->AddMonitor(gfx::Rect(0, 0, 1920, 1200), |
| 580 gfx::Rect(0, 0, 1920, 1100), | 580 gfx::Rect(0, 0, 1920, 1100), |
| 581 L"primary", | 581 L"primary", |
| 582 2.0); | 582 2.0); |
| 583 initializer->AddMonitor(gfx::Rect(1920, 0, 800, 600), | 583 initializer->AddMonitor(gfx::Rect(1920, 0, 800, 600), |
| 584 gfx::Rect(1920, 0, 800, 600), | 584 gfx::Rect(1920, 0, 800, 600), |
| 585 L"secondary", | 585 L"secondary", |
| 586 2.0); | 586 2.0); |
| 587 fake_hwnd_left_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 1920, 1100)); | 587 fake_hwnd_left_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 1920, 1100)); |
| 588 fake_hwnd_right_ = | 588 fake_hwnd_right_ = |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 671 } | 671 } |
| 672 | 672 |
| 673 // Two Displays of 2.0 (Left) and 1.0 (Right) Device Scale Factor under | 673 // Two Displays of 2.0 (Left) and 1.0 (Right) Device Scale Factor under |
| 674 // Windows DPI Virtualization. Note that the displays do not form a euclidean | 674 // Windows DPI Virtualization. Note that the displays do not form a euclidean |
| 675 // space. | 675 // space. |
| 676 class ScreenWinTestTwoDisplays2x1xVirtualized : public ScreenWinTest { | 676 class ScreenWinTestTwoDisplays2x1xVirtualized : public ScreenWinTest { |
| 677 public: | 677 public: |
| 678 ScreenWinTestTwoDisplays2x1xVirtualized() = default; | 678 ScreenWinTestTwoDisplays2x1xVirtualized() = default; |
| 679 | 679 |
| 680 void SetUpScreen(TestScreenWinInitializer* initializer) override { | 680 void SetUpScreen(TestScreenWinInitializer* initializer) override { |
| 681 gfx::SetDefaultDeviceScaleFactor(2.0); | 681 display::win::SetDefaultDeviceScaleFactor(2.0); |
| 682 initializer->AddMonitor(gfx::Rect(0, 0, 3200, 1600), | 682 initializer->AddMonitor(gfx::Rect(0, 0, 3200, 1600), |
| 683 gfx::Rect(0, 0, 3200, 1500), | 683 gfx::Rect(0, 0, 3200, 1500), |
| 684 L"primary", | 684 L"primary", |
| 685 2.0); | 685 2.0); |
| 686 initializer->AddMonitor(gfx::Rect(6400, 0, 3840, 2400), | 686 initializer->AddMonitor(gfx::Rect(6400, 0, 3840, 2400), |
| 687 gfx::Rect(6400, 0, 3840, 2400), | 687 gfx::Rect(6400, 0, 3840, 2400), |
| 688 L"secondary", | 688 L"secondary", |
| 689 2.0); | 689 2.0); |
| 690 fake_hwnd_left_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 3200, 1500)); | 690 fake_hwnd_left_ = initializer->CreateFakeHwnd(gfx::Rect(0, 0, 3200, 1500)); |
| 691 fake_hwnd_right_ = | 691 fake_hwnd_right_ = |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 TEST_F(ScreenWinTestTwoDisplays2x1xVirtualized, GetPrimaryDisplay) { | 775 TEST_F(ScreenWinTestTwoDisplays2x1xVirtualized, GetPrimaryDisplay) { |
| 776 gfx::Screen* screen = GetScreen(); | 776 gfx::Screen* screen = GetScreen(); |
| 777 gfx::Display primary = screen->GetPrimaryDisplay(); | 777 gfx::Display primary = screen->GetPrimaryDisplay(); |
| 778 EXPECT_EQ(gfx::Point(0, 0), primary.bounds().origin()); | 778 EXPECT_EQ(gfx::Point(0, 0), primary.bounds().origin()); |
| 779 } | 779 } |
| 780 | 780 |
| 781 } // namespace | 781 } // namespace |
| 782 | 782 |
| 783 } // namespace win | 783 } // namespace win |
| 784 } // namespace display | 784 } // namespace display |
| OLD | NEW |