Index: ui/display/win/screen_win_unittest.cc |
diff --git a/ui/display/win/screen_win_unittest.cc b/ui/display/win/screen_win_unittest.cc |
index a20d2b1bdb33164f598cc2aed37ce09290ff7987..a61fc1ee3992da2c4905af7ccc25e23782567867 100644 |
--- a/ui/display/win/screen_win_unittest.cc |
+++ b/ui/display/win/screen_win_unittest.cc |
@@ -121,6 +121,10 @@ class TestScreenWin : public ScreenWin { |
return hwnd; |
} |
+ int GetSystemMetrics(int metric) const override { |
+ return metric; |
+ } |
+ |
std::vector<MONITORINFOEX> monitor_infos_; |
std::unordered_map<HWND, gfx::Rect> hwnd_map_; |
@@ -325,6 +329,14 @@ TEST_F(ScreenWinTestSingleDisplay1x, DIPToScreenSize) { |
EXPECT_EQ(size, ScreenWin::DIPToScreenSize(hwnd, size)); |
} |
+TEST_F(ScreenWinTestSingleDisplay1x, GetSystemMetricsForHwnd) { |
+ HWND hwnd = GetFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestSingleDisplay1x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(1u, displays.size()); |
@@ -480,6 +492,14 @@ TEST_F(ScreenWinTestSingleDisplay1_25x, DIPToScreenSize) { |
EXPECT_EQ(size, ScreenWin::DIPToScreenSize(hwnd, size)); |
} |
+TEST_F(ScreenWinTestSingleDisplay1_25x, GetSystemMetricsForHwnd) { |
+ HWND hwnd = GetFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestSingleDisplay1_25x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(1u, displays.size()); |
@@ -620,6 +640,14 @@ TEST_F(ScreenWinTestSingleDisplay1_5x, DIPToScreenSize) { |
ScreenWin::DIPToScreenSize(GetFakeHwnd(), gfx::Size(28, 88))); |
} |
+TEST_F(ScreenWinTestSingleDisplay1_5x, GetSystemMetricsForHwnd) { |
+ HWND hwnd = GetFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestSingleDisplay1_5x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(1u, displays.size()); |
@@ -759,6 +787,14 @@ TEST_F(ScreenWinTestSingleDisplay2x, DIPToScreenSize) { |
ScreenWin::DIPToScreenSize(GetFakeHwnd(), gfx::Size(21, 66))); |
} |
+TEST_F(ScreenWinTestSingleDisplay2x, GetSystemMetricsForHwnd) { |
+ HWND hwnd = GetFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestSingleDisplay2x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(1u, displays.size()); |
@@ -959,6 +995,17 @@ TEST_F(ScreenWinTestTwoDisplays1x, DIPToScreenSize) { |
EXPECT_EQ(size, ScreenWin::DIPToScreenSize(right_hwnd, size)); |
} |
+TEST_F(ScreenWinTestTwoDisplays1x, GetSystemMetricsForHwnd) { |
+ HWND left_hwnd = GetLeftFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 42)); |
+ HWND right_hwnd = GetRightFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestTwoDisplays1x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(2u, displays.size()); |
@@ -1207,6 +1254,17 @@ TEST_F(ScreenWinTestTwoDisplays2x, DIPToScreenSize) { |
ScreenWin::DIPToScreenSize(right_hwnd, gfx::Size(21, 66))); |
} |
+TEST_F(ScreenWinTestTwoDisplays2x, GetSystemMetricsForHwnd) { |
+ HWND left_hwnd = GetLeftFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 42)); |
+ HWND right_hwnd = GetRightFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestTwoDisplays2x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(2u, displays.size()); |
@@ -1564,6 +1622,16 @@ TEST_F(ScreenWinTestManyDisplays1x, DIPToScreenSize) { |
} |
} |
+TEST_F(ScreenWinTestManyDisplays1x, GetSystemMetricsForHwnd) { |
+ for (size_t i = 0; i < 5u; ++i) { |
+ SCOPED_TRACE(base::StringPrintf("i=%zu", i)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(GetFakeHwnd(i), 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(GetFakeHwnd(i), 42)); |
+ } |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestManyDisplays1x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(5u, displays.size()); |
@@ -1980,6 +2048,16 @@ TEST_F(ScreenWinTestManyDisplays2x, DIPToScreenSize) { |
} |
} |
+TEST_F(ScreenWinTestManyDisplays2x, GetSystemMetricsForHwnd) { |
+ for (size_t i = 0; i < 5u; ++i) { |
+ SCOPED_TRACE(base::StringPrintf("i=%zu", i)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(GetFakeHwnd(i), 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(GetFakeHwnd(i), 42)); |
+ } |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestManyDisplays2x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(5u, displays.size()); |
@@ -2259,6 +2337,17 @@ TEST_F(ScreenWinTestTwoDisplays1x2x, DIPToScreenSize) { |
ScreenWin::DIPToScreenSize(right_hwnd, gfx::Size(21, 66))); |
} |
+TEST_F(ScreenWinTestTwoDisplays1x2x, GetSystemMetricsForHwnd) { |
+ HWND left_hwnd = GetLeftFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 42)); |
+ HWND right_hwnd = GetRightFakeHwnd(); |
+ EXPECT_EQ(62, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 31)); |
+ EXPECT_EQ(84, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestTwoDisplays1x2x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(2u, displays.size()); |
@@ -2515,6 +2604,17 @@ TEST_F(ScreenWinTestTwoDisplays1_5x1x, DIPToScreenSize) { |
ScreenWin::DIPToScreenSize(right_hwnd, gfx::Size(42, 131))); |
} |
+TEST_F(ScreenWinTestTwoDisplays1_5x1x, GetSystemMetricsForHwnd) { |
+ HWND left_hwnd = GetLeftFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 42)); |
+ HWND right_hwnd = GetRightFakeHwnd(); |
+ EXPECT_EQ(21, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 31)); |
+ EXPECT_EQ(28, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestTwoDisplays1_5x1x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(2u, displays.size()); |
@@ -2767,6 +2867,17 @@ TEST_F(ScreenWinTestTwoDisplays2x1x, DIPToScreenSize) { |
ScreenWin::DIPToScreenSize(right_hwnd, gfx::Size(42, 131))); |
} |
+TEST_F(ScreenWinTestTwoDisplays2x1x, GetSystemMetricsForHwnd) { |
+ HWND left_hwnd = GetLeftFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 42)); |
+ HWND right_hwnd = GetRightFakeHwnd(); |
+ EXPECT_EQ(16, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 31)); |
+ EXPECT_EQ(21, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestTwoDisplays2x1x, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(2u, displays.size()); |
@@ -3024,6 +3135,17 @@ TEST_F(ScreenWinTestTwoDisplays2x1xVirtualized, DIPToScreenSize) { |
ScreenWin::DIPToScreenSize(right_hwnd, gfx::Size(21, 66))); |
} |
+TEST_F(ScreenWinTestTwoDisplays2x1xVirtualized, GetSystemMetricsForHwnd) { |
+ HWND left_hwnd = GetLeftFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(left_hwnd, 42)); |
+ HWND right_hwnd = GetRightFakeHwnd(); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(right_hwnd, 42)); |
+ EXPECT_EQ(31, ScreenWin::GetSystemMetricsForHwnd(nullptr, 31)); |
+ EXPECT_EQ(42, ScreenWin::GetSystemMetricsForHwnd(nullptr, 42)); |
+} |
+ |
TEST_F(ScreenWinTestTwoDisplays2x1xVirtualized, GetDisplays) { |
std::vector<Display> displays = GetScreen()->GetAllDisplays(); |
ASSERT_EQ(2u, displays.size()); |
@@ -3192,6 +3314,12 @@ TEST_F(ScreenWinUninitializedForced1x, DIPToScreenSize) { |
EXPECT_EQ(size, ScreenWin::DIPToScreenSize(nullptr, size)); |
} |
+TEST_F(ScreenWinUninitializedForced1x, GetSystemMetricsForHwnd) { |
+ // GetSystemMetricsForHwnd falls back to the system's GetSystemMetrics, so |
+ // this test is to make sure we don't crash. |
+ ScreenWin::GetSystemMetricsForHwnd(nullptr, SM_CXSIZEFRAME); |
+} |
+ |
namespace { |
// Forced 2x DPI for Other Tests without TestScreenWin. |
@@ -3288,5 +3416,11 @@ TEST_F(ScreenWinUninitializedForced2x, DIPToScreenSize) { |
ScreenWin::DIPToScreenSize(nullptr, gfx::Size(21, 66))); |
} |
+TEST_F(ScreenWinUninitializedForced2x, GetSystemMetricsForHwnd) { |
+ // GetSystemMetricsForHwnd falls back to the system's GetSystemMetrics, so |
+ // this test is to make sure we don't crash. |
+ ScreenWin::GetSystemMetricsForHwnd(nullptr, SM_CXSIZEFRAME); |
+} |
+ |
} // namespace win |
} // namespace display |