Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: ash/display/display_change_observer_chromeos_unittest.cc

Issue 2407153008: Delete TestDisplaySnapshot and update tests. (Closed)
Patch Set: Rebase and cleanup. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/BUILD.gn ('k') | ash/display/display_color_manager_chromeos_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ash/display/display_change_observer_chromeos.h" 5 #include "ash/display/display_change_observer_chromeos.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/display/chromeos/display_configurator.h" 9 #include "ui/display/chromeos/display_configurator.h"
10 #include "ui/display/chromeos/test/test_display_snapshot.h" 10 #include "ui/display/fake_display_snapshot.h"
11 #include "ui/display/manager/managed_display_info.h" 11 #include "ui/display/manager/managed_display_info.h"
12 #include "ui/display/types/display_mode.h" 12 #include "ui/display/types/display_mode.h"
13 13
14 using ui::DisplayConfigurator; 14 using ui::DisplayConfigurator;
15 15
16 typedef testing::Test DisplayChangeObserverTest;
17
18 namespace ash { 16 namespace ash {
19 17
20 TEST_F(DisplayChangeObserverTest, GetExternalManagedDisplayModeList) { 18 namespace {
21 std::vector<std::unique_ptr<const ui::DisplayMode>> modes;
22 modes.push_back(
23 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1200), false, 60));
24 19
25 // All non-interlaced (as would be seen with different refresh rates). 20 float ComputeDeviceScaleFactor(float diagonal_inch,
26 modes.push_back( 21 const gfx::Rect& resolution) {
27 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), false, 80)); 22 // We assume that displays have square pixel.
28 modes.push_back( 23 float diagonal_pixel = std::sqrt(std::pow(resolution.width(), 2) +
29 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), false, 70)); 24 std::pow(resolution.height(), 2));
30 modes.push_back( 25 float dpi = diagonal_pixel / diagonal_inch;
31 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), false, 60)); 26 return DisplayChangeObserver::FindDeviceScaleFactor(dpi);
27 }
32 28
33 // Interlaced vs non-interlaced. 29 std::unique_ptr<ui::DisplayMode> MakeDisplayMode(int width,
34 modes.push_back( 30 int height,
35 base::MakeUnique<ui::DisplayMode>(gfx::Size(1280, 720), true, 60)); 31 bool is_interlaced,
36 modes.push_back( 32 float refresh_rate) {
37 base::MakeUnique<ui::DisplayMode>(gfx::Size(1280, 720), false, 60)); 33 return base::MakeUnique<ui::DisplayMode>(gfx::Size(width, height),
34 is_interlaced, refresh_rate);
35 }
38 36
39 // Interlaced only. 37 } // namespace
40 modes.push_back(
41 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 768), true, 70));
42 modes.push_back(
43 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 768), true, 60));
44 38
45 // Mixed. 39 TEST(DisplayChangeObserverTest, GetExternalManagedDisplayModeList) {
46 modes.push_back( 40 std::unique_ptr<ui::DisplaySnapshot> display_snapshot =
47 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 600), true, 60)); 41 display::FakeDisplaySnapshot::Builder()
48 modes.push_back( 42 .SetId(123)
49 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 600), false, 70)); 43 .SetNativeMode(MakeDisplayMode(1920, 1200, false, 60))
50 modes.push_back( 44 // All non-interlaced (as would be seen with different refresh rates).
51 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 600), false, 60)); 45 .AddMode(MakeDisplayMode(1920, 1080, false, 80))
52 46 .AddMode(MakeDisplayMode(1920, 1080, false, 70))
53 // Just one interlaced mode. 47 .AddMode(MakeDisplayMode(1920, 1080, false, 60))
54 modes.push_back( 48 // Interlaced vs non-interlaced.
55 base::MakeUnique<ui::DisplayMode>(gfx::Size(640, 480), true, 60)); 49 .AddMode(MakeDisplayMode(1280, 720, true, 60))
56 50 .AddMode(MakeDisplayMode(1280, 720, false, 60))
57 ui::TestDisplaySnapshot display_snapshot; 51 // Interlaced only.
58 display_snapshot.set_modes(std::move(modes)); 52 .AddMode(MakeDisplayMode(1024, 768, true, 70))
53 .AddMode(MakeDisplayMode(1024, 768, true, 60))
54 // Mixed.
55 .AddMode(MakeDisplayMode(1024, 600, true, 60))
56 .AddMode(MakeDisplayMode(1024, 600, false, 70))
57 .AddMode(MakeDisplayMode(1024, 600, false, 60))
58 // Just one interlaced mode.
59 .AddMode(MakeDisplayMode(640, 480, true, 60))
60 .Build();
59 61
60 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes = 62 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes =
61 DisplayChangeObserver::GetExternalManagedDisplayModeList( 63 DisplayChangeObserver::GetExternalManagedDisplayModeList(
62 display_snapshot); 64 *display_snapshot);
63 ASSERT_EQ(6u, display_modes.size()); 65 ASSERT_EQ(6u, display_modes.size());
64 EXPECT_EQ("640x480", display_modes[0]->size().ToString()); 66 EXPECT_EQ("640x480", display_modes[0]->size().ToString());
65 EXPECT_TRUE(display_modes[0]->is_interlaced()); 67 EXPECT_TRUE(display_modes[0]->is_interlaced());
66 EXPECT_EQ(display_modes[0]->refresh_rate(), 60); 68 EXPECT_EQ(display_modes[0]->refresh_rate(), 60);
67 69
68 EXPECT_EQ("1024x600", display_modes[1]->size().ToString()); 70 EXPECT_EQ("1024x600", display_modes[1]->size().ToString());
69 EXPECT_FALSE(display_modes[1]->is_interlaced()); 71 EXPECT_FALSE(display_modes[1]->is_interlaced());
70 EXPECT_EQ(display_modes[1]->refresh_rate(), 70); 72 EXPECT_EQ(display_modes[1]->refresh_rate(), 70);
71 73
72 EXPECT_EQ("1024x768", display_modes[2]->size().ToString()); 74 EXPECT_EQ("1024x768", display_modes[2]->size().ToString());
73 EXPECT_TRUE(display_modes[2]->is_interlaced()); 75 EXPECT_TRUE(display_modes[2]->is_interlaced());
74 EXPECT_EQ(display_modes[2]->refresh_rate(), 70); 76 EXPECT_EQ(display_modes[2]->refresh_rate(), 70);
75 77
76 EXPECT_EQ("1280x720", display_modes[3]->size().ToString()); 78 EXPECT_EQ("1280x720", display_modes[3]->size().ToString());
77 EXPECT_FALSE(display_modes[3]->is_interlaced()); 79 EXPECT_FALSE(display_modes[3]->is_interlaced());
78 EXPECT_EQ(display_modes[3]->refresh_rate(), 60); 80 EXPECT_EQ(display_modes[3]->refresh_rate(), 60);
79 81
80 EXPECT_EQ("1920x1080", display_modes[4]->size().ToString()); 82 EXPECT_EQ("1920x1080", display_modes[4]->size().ToString());
81 EXPECT_FALSE(display_modes[4]->is_interlaced()); 83 EXPECT_FALSE(display_modes[4]->is_interlaced());
82 EXPECT_EQ(display_modes[4]->refresh_rate(), 80); 84 EXPECT_EQ(display_modes[4]->refresh_rate(), 80);
83 85
84 EXPECT_EQ("1920x1200", display_modes[5]->size().ToString()); 86 EXPECT_EQ("1920x1200", display_modes[5]->size().ToString());
85 EXPECT_FALSE(display_modes[5]->is_interlaced()); 87 EXPECT_FALSE(display_modes[5]->is_interlaced());
86 EXPECT_EQ(display_modes[5]->refresh_rate(), 60); 88 EXPECT_EQ(display_modes[5]->refresh_rate(), 60);
89 }
87 90
88 // Outputs without any modes shouldn't cause a crash. 91 TEST(DisplayChangeObserverTest, GetEmptyExternalManagedDisplayModeList) {
89 modes.clear(); 92 display::FakeDisplaySnapshot display_snapshot(
90 display_snapshot.set_modes(std::move(modes)); 93 123, gfx::Point(), gfx::Size(), ui::DISPLAY_CONNECTION_TYPE_UNKNOWN,
94 false, false, false, std::string(), 0,
95 std::vector<std::unique_ptr<const ui::DisplayMode>>(), nullptr, nullptr);
91 96
92 display_modes = DisplayChangeObserver::GetExternalManagedDisplayModeList( 97 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes =
93 display_snapshot); 98 DisplayChangeObserver::GetExternalManagedDisplayModeList(
99 display_snapshot);
94 EXPECT_EQ(0u, display_modes.size()); 100 EXPECT_EQ(0u, display_modes.size());
95 } 101 }
96 102
97 TEST_F(DisplayChangeObserverTest, GetInternalManagedDisplayModeList) { 103 TEST(DisplayChangeObserverTest, GetInternalManagedDisplayModeList) {
98 std::vector<std::unique_ptr<const ui::DisplayMode>> modes; 104 std::unique_ptr<ui::DisplaySnapshot> display_snapshot =
99 // Data picked from peppy. 105 display::FakeDisplaySnapshot::Builder()
100 modes.push_back( 106 .SetId(123)
101 base::MakeUnique<ui::DisplayMode>(gfx::Size(1366, 768), false, 60)); 107 .SetNativeMode(MakeDisplayMode(1366, 768, false, 60))
102 modes.push_back( 108 .AddMode(MakeDisplayMode(1024, 768, false, 60))
103 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 768), false, 60)); 109 .AddMode(MakeDisplayMode(800, 600, false, 60))
104 modes.push_back( 110 .AddMode(MakeDisplayMode(600, 600, false, 56.2))
105 base::MakeUnique<ui::DisplayMode>(gfx::Size(800, 600), false, 60)); 111 .AddMode(MakeDisplayMode(640, 480, false, 59.9))
106 modes.push_back( 112 .Build();
107 base::MakeUnique<ui::DisplayMode>(gfx::Size(600, 600), false, 56.2));
108 modes.push_back(
109 base::MakeUnique<ui::DisplayMode>(gfx::Size(640, 480), false, 59.9));
110
111 ui::TestDisplaySnapshot display_snapshot;
112 display_snapshot.set_native_mode(modes[0].get());
113 display_snapshot.set_modes(std::move(modes));
114 113
115 display::ManagedDisplayInfo info(1, "", false); 114 display::ManagedDisplayInfo info(1, "", false);
116 info.SetBounds(gfx::Rect(0, 0, 1366, 768)); 115 info.SetBounds(gfx::Rect(0, 0, 1366, 768));
117 116
118 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes = 117 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes =
119 DisplayChangeObserver::GetInternalManagedDisplayModeList( 118 DisplayChangeObserver::GetInternalManagedDisplayModeList(
120 info, display_snapshot); 119 info, *display_snapshot);
121 ASSERT_EQ(5u, display_modes.size()); 120 ASSERT_EQ(5u, display_modes.size());
122 EXPECT_EQ("1366x768", display_modes[0]->size().ToString()); 121 EXPECT_EQ("1366x768", display_modes[0]->size().ToString());
123 EXPECT_FALSE(display_modes[0]->native()); 122 EXPECT_FALSE(display_modes[0]->native());
124 EXPECT_NEAR(display_modes[0]->ui_scale(), 0.5, 0.01); 123 EXPECT_NEAR(display_modes[0]->ui_scale(), 0.5, 0.01);
125 EXPECT_EQ(display_modes[0]->refresh_rate(), 60); 124 EXPECT_EQ(display_modes[0]->refresh_rate(), 60);
126 125
127 EXPECT_EQ("1366x768", display_modes[1]->size().ToString()); 126 EXPECT_EQ("1366x768", display_modes[1]->size().ToString());
128 EXPECT_FALSE(display_modes[1]->native()); 127 EXPECT_FALSE(display_modes[1]->native());
129 EXPECT_NEAR(display_modes[1]->ui_scale(), 0.6, 0.01); 128 EXPECT_NEAR(display_modes[1]->ui_scale(), 0.6, 0.01);
130 EXPECT_EQ(display_modes[1]->refresh_rate(), 60); 129 EXPECT_EQ(display_modes[1]->refresh_rate(), 60);
131 130
132 EXPECT_EQ("1366x768", display_modes[2]->size().ToString()); 131 EXPECT_EQ("1366x768", display_modes[2]->size().ToString());
133 EXPECT_FALSE(display_modes[2]->native()); 132 EXPECT_FALSE(display_modes[2]->native());
134 EXPECT_NEAR(display_modes[2]->ui_scale(), 0.75, 0.01); 133 EXPECT_NEAR(display_modes[2]->ui_scale(), 0.75, 0.01);
135 EXPECT_EQ(display_modes[2]->refresh_rate(), 60); 134 EXPECT_EQ(display_modes[2]->refresh_rate(), 60);
136 135
137 EXPECT_EQ("1366x768", display_modes[3]->size().ToString()); 136 EXPECT_EQ("1366x768", display_modes[3]->size().ToString());
138 EXPECT_TRUE(display_modes[3]->native()); 137 EXPECT_TRUE(display_modes[3]->native());
139 EXPECT_NEAR(display_modes[3]->ui_scale(), 1.0, 0.01); 138 EXPECT_NEAR(display_modes[3]->ui_scale(), 1.0, 0.01);
140 EXPECT_EQ(display_modes[3]->refresh_rate(), 60); 139 EXPECT_EQ(display_modes[3]->refresh_rate(), 60);
141 140
142 EXPECT_EQ("1366x768", display_modes[4]->size().ToString()); 141 EXPECT_EQ("1366x768", display_modes[4]->size().ToString());
143 EXPECT_FALSE(display_modes[4]->native()); 142 EXPECT_FALSE(display_modes[4]->native());
144 EXPECT_NEAR(display_modes[4]->ui_scale(), 1.125, 0.01); 143 EXPECT_NEAR(display_modes[4]->ui_scale(), 1.125, 0.01);
145 EXPECT_EQ(display_modes[4]->refresh_rate(), 60); 144 EXPECT_EQ(display_modes[4]->refresh_rate(), 60);
146 } 145 }
147 146
148 TEST_F(DisplayChangeObserverTest, GetInternalHiDPIManagedDisplayModeList) { 147 TEST(DisplayChangeObserverTest, GetInternalHiDPIManagedDisplayModeList) {
149 std::vector<std::unique_ptr<const ui::DisplayMode>> modes;
150 // Data picked from peppy. 148 // Data picked from peppy.
151 modes.push_back( 149 std::unique_ptr<ui::DisplaySnapshot> display_snapshot =
152 base::MakeUnique<ui::DisplayMode>(gfx::Size(2560, 1700), false, 60)); 150 display::FakeDisplaySnapshot::Builder()
153 modes.push_back( 151 .SetId(123)
154 base::MakeUnique<ui::DisplayMode>(gfx::Size(2048, 1536), false, 60)); 152 .SetNativeMode(MakeDisplayMode(2560, 1700, false, 60))
155 modes.push_back( 153 .AddMode(MakeDisplayMode(2048, 1536, false, 60))
156 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1440), false, 60)); 154 .AddMode(MakeDisplayMode(1920, 1440, false, 60))
157 155 .Build();
158 ui::TestDisplaySnapshot display_snapshot;
159 display_snapshot.set_native_mode(modes[0].get());
160 display_snapshot.set_modes(std::move(modes));
161 156
162 display::ManagedDisplayInfo info(1, "", false); 157 display::ManagedDisplayInfo info(1, "", false);
163 info.SetBounds(gfx::Rect(0, 0, 2560, 1700)); 158 info.SetBounds(gfx::Rect(0, 0, 2560, 1700));
164 info.set_device_scale_factor(2.0f); 159 info.set_device_scale_factor(2.0f);
165 160
166 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes = 161 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes =
167 DisplayChangeObserver::GetInternalManagedDisplayModeList( 162 DisplayChangeObserver::GetInternalManagedDisplayModeList(
168 info, display_snapshot); 163 info, *display_snapshot);
169 ASSERT_EQ(8u, display_modes.size()); 164 ASSERT_EQ(8u, display_modes.size());
170 EXPECT_EQ("2560x1700", display_modes[0]->size().ToString()); 165 EXPECT_EQ("2560x1700", display_modes[0]->size().ToString());
171 EXPECT_FALSE(display_modes[0]->native()); 166 EXPECT_FALSE(display_modes[0]->native());
172 EXPECT_NEAR(display_modes[0]->ui_scale(), 0.5, 0.01); 167 EXPECT_NEAR(display_modes[0]->ui_scale(), 0.5, 0.01);
173 EXPECT_EQ(display_modes[0]->refresh_rate(), 60); 168 EXPECT_EQ(display_modes[0]->refresh_rate(), 60);
174 169
175 EXPECT_EQ("2560x1700", display_modes[1]->size().ToString()); 170 EXPECT_EQ("2560x1700", display_modes[1]->size().ToString());
176 EXPECT_FALSE(display_modes[1]->native()); 171 EXPECT_FALSE(display_modes[1]->native());
177 EXPECT_NEAR(display_modes[1]->ui_scale(), 0.625, 0.01); 172 EXPECT_NEAR(display_modes[1]->ui_scale(), 0.625, 0.01);
178 EXPECT_EQ(display_modes[1]->refresh_rate(), 60); 173 EXPECT_EQ(display_modes[1]->refresh_rate(), 60);
(...skipping 22 matching lines...) Expand all
201 EXPECT_FALSE(display_modes[6]->native()); 196 EXPECT_FALSE(display_modes[6]->native());
202 EXPECT_NEAR(display_modes[6]->ui_scale(), 1.5, 0.01); 197 EXPECT_NEAR(display_modes[6]->ui_scale(), 1.5, 0.01);
203 EXPECT_EQ(display_modes[6]->refresh_rate(), 60); 198 EXPECT_EQ(display_modes[6]->refresh_rate(), 60);
204 199
205 EXPECT_EQ("2560x1700", display_modes[7]->size().ToString()); 200 EXPECT_EQ("2560x1700", display_modes[7]->size().ToString());
206 EXPECT_TRUE(display_modes[7]->native()); 201 EXPECT_TRUE(display_modes[7]->native());
207 EXPECT_NEAR(display_modes[7]->ui_scale(), 2.0, 0.01); 202 EXPECT_NEAR(display_modes[7]->ui_scale(), 2.0, 0.01);
208 EXPECT_EQ(display_modes[7]->refresh_rate(), 60); 203 EXPECT_EQ(display_modes[7]->refresh_rate(), 60);
209 } 204 }
210 205
211 TEST_F(DisplayChangeObserverTest, GetInternalManagedDisplayModeList1_25) { 206 TEST(DisplayChangeObserverTest, GetInternalManagedDisplayModeList1_25) {
212 std::vector<std::unique_ptr<const ui::DisplayMode>> modes;
213 // Data picked from peppy. 207 // Data picked from peppy.
214 modes.push_back( 208 std::unique_ptr<ui::DisplaySnapshot> display_snapshot =
215 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), false, 60)); 209 display::FakeDisplaySnapshot::Builder()
216 210 .SetId(123)
217 ui::TestDisplaySnapshot display_snapshot; 211 .SetNativeMode(MakeDisplayMode(1920, 1080, false, 60))
218 display_snapshot.set_native_mode(modes[0].get()); 212 .Build();
219 display_snapshot.set_modes(std::move(modes));
220 213
221 display::ManagedDisplayInfo info(1, "", false); 214 display::ManagedDisplayInfo info(1, "", false);
222 info.SetBounds(gfx::Rect(0, 0, 1920, 1080)); 215 info.SetBounds(gfx::Rect(0, 0, 1920, 1080));
223 info.set_device_scale_factor(1.25); 216 info.set_device_scale_factor(1.25);
224 217
225 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes = 218 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes =
226 DisplayChangeObserver::GetInternalManagedDisplayModeList( 219 DisplayChangeObserver::GetInternalManagedDisplayModeList(
227 info, display_snapshot); 220 info, *display_snapshot);
228 ASSERT_EQ(5u, display_modes.size()); 221 ASSERT_EQ(5u, display_modes.size());
229 EXPECT_EQ("1920x1080", display_modes[0]->size().ToString()); 222 EXPECT_EQ("1920x1080", display_modes[0]->size().ToString());
230 EXPECT_FALSE(display_modes[0]->native()); 223 EXPECT_FALSE(display_modes[0]->native());
231 EXPECT_NEAR(display_modes[0]->ui_scale(), 0.5, 0.01); 224 EXPECT_NEAR(display_modes[0]->ui_scale(), 0.5, 0.01);
232 EXPECT_EQ(display_modes[0]->refresh_rate(), 60); 225 EXPECT_EQ(display_modes[0]->refresh_rate(), 60);
233 226
234 EXPECT_EQ("1920x1080", display_modes[1]->size().ToString()); 227 EXPECT_EQ("1920x1080", display_modes[1]->size().ToString());
235 EXPECT_FALSE(display_modes[1]->native()); 228 EXPECT_FALSE(display_modes[1]->native());
236 EXPECT_NEAR(display_modes[1]->ui_scale(), 0.625, 0.01); 229 EXPECT_NEAR(display_modes[1]->ui_scale(), 0.625, 0.01);
237 EXPECT_EQ(display_modes[1]->refresh_rate(), 60); 230 EXPECT_EQ(display_modes[1]->refresh_rate(), 60);
238 231
239 EXPECT_EQ("1920x1080", display_modes[2]->size().ToString()); 232 EXPECT_EQ("1920x1080", display_modes[2]->size().ToString());
240 EXPECT_FALSE(display_modes[2]->native()); 233 EXPECT_FALSE(display_modes[2]->native());
241 EXPECT_NEAR(display_modes[2]->ui_scale(), 0.8, 0.01); 234 EXPECT_NEAR(display_modes[2]->ui_scale(), 0.8, 0.01);
242 EXPECT_EQ(display_modes[2]->refresh_rate(), 60); 235 EXPECT_EQ(display_modes[2]->refresh_rate(), 60);
243 236
244 EXPECT_EQ("1920x1080", display_modes[3]->size().ToString()); 237 EXPECT_EQ("1920x1080", display_modes[3]->size().ToString());
245 EXPECT_TRUE(display_modes[3]->native()); 238 EXPECT_TRUE(display_modes[3]->native());
246 EXPECT_NEAR(display_modes[3]->ui_scale(), 1.0, 0.01); 239 EXPECT_NEAR(display_modes[3]->ui_scale(), 1.0, 0.01);
247 EXPECT_EQ(display_modes[3]->refresh_rate(), 60); 240 EXPECT_EQ(display_modes[3]->refresh_rate(), 60);
248 241
249 EXPECT_EQ("1920x1080", display_modes[4]->size().ToString()); 242 EXPECT_EQ("1920x1080", display_modes[4]->size().ToString());
250 EXPECT_FALSE(display_modes[4]->native()); 243 EXPECT_FALSE(display_modes[4]->native());
251 EXPECT_NEAR(display_modes[4]->ui_scale(), 1.25, 0.01); 244 EXPECT_NEAR(display_modes[4]->ui_scale(), 1.25, 0.01);
252 EXPECT_EQ(display_modes[4]->refresh_rate(), 60); 245 EXPECT_EQ(display_modes[4]->refresh_rate(), 60);
253 } 246 }
254 247
255 TEST_F(DisplayChangeObserverTest, GetExternalManagedDisplayModeList4K) { 248 TEST(DisplayChangeObserverTest, GetExternalManagedDisplayModeList4K) {
256 std::vector<std::unique_ptr<const ui::DisplayMode>> modes; 249 std::unique_ptr<ui::DisplaySnapshot> display_snapshot =
257 modes.push_back( 250 display::FakeDisplaySnapshot::Builder()
258 base::MakeUnique<ui::DisplayMode>(gfx::Size(3840, 2160), false, 30)); 251 .SetId(123)
259 modes.push_back( 252 .SetNativeMode(MakeDisplayMode(3840, 2160, false, 30))
260 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1200), false, 60)); 253 .AddMode(MakeDisplayMode(1920, 1200, false, 60))
261 254 // All non-interlaced (as would be seen with different refresh rates).
262 // All non-interlaced (as would be seen with different refresh rates). 255 .AddMode(MakeDisplayMode(1920, 1080, false, 80))
263 modes.push_back( 256 .AddMode(MakeDisplayMode(1920, 1080, false, 70))
264 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), false, 80)); 257 .AddMode(MakeDisplayMode(1920, 1080, false, 60))
265 modes.push_back( 258 // Interlaced vs non-interlaced.
266 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), false, 70)); 259 .AddMode(MakeDisplayMode(1280, 720, true, 60))
267 modes.push_back( 260 .AddMode(MakeDisplayMode(1280, 720, false, 60))
268 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), false, 60)); 261 // Interlaced only.
269 262 .AddMode(MakeDisplayMode(1024, 768, true, 70))
270 // Interlaced vs non-interlaced. 263 .AddMode(MakeDisplayMode(1024, 768, true, 60))
271 modes.push_back( 264 // Mixed.
272 base::MakeUnique<ui::DisplayMode>(gfx::Size(1280, 720), true, 60)); 265 .AddMode(MakeDisplayMode(1024, 600, true, 60))
273 modes.push_back( 266 .AddMode(MakeDisplayMode(1024, 600, false, 70))
274 base::MakeUnique<ui::DisplayMode>(gfx::Size(1280, 720), false, 60)); 267 .AddMode(MakeDisplayMode(1024, 600, false, 60))
275 268 // Just one interlaced mode.
276 // Interlaced only. 269 .AddMode(MakeDisplayMode(640, 480, true, 60))
277 modes.push_back( 270 .Build();
278 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 768), true, 70));
279 modes.push_back(
280 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 768), true, 60));
281
282 // Mixed.
283 modes.push_back(
284 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 600), true, 60));
285 modes.push_back(
286 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 600), false, 70));
287 modes.push_back(
288 base::MakeUnique<ui::DisplayMode>(gfx::Size(1024, 600), false, 60));
289
290 // Just one interlaced mode.
291 modes.push_back(
292 base::MakeUnique<ui::DisplayMode>(gfx::Size(640, 480), true, 60));
293
294 ui::TestDisplaySnapshot display_snapshot;
295 display_snapshot.set_native_mode(modes[0].get());
296 display_snapshot.set_modes(std::move(modes));
297 271
298 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes = 272 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes =
299 DisplayChangeObserver::GetExternalManagedDisplayModeList( 273 DisplayChangeObserver::GetExternalManagedDisplayModeList(
300 display_snapshot); 274 *display_snapshot);
301 display::ManagedDisplayInfo info(1, "", false); 275 display::ManagedDisplayInfo info(1, "", false);
302 info.SetManagedDisplayModes(display_modes); // Sort as external display. 276 info.SetManagedDisplayModes(display_modes); // Sort as external display.
303 display_modes = info.display_modes(); 277 display_modes = info.display_modes();
304 278
305 ASSERT_EQ(9u, display_modes.size()); 279 ASSERT_EQ(9u, display_modes.size());
306 EXPECT_EQ("640x480", display_modes[0]->size().ToString()); 280 EXPECT_EQ("640x480", display_modes[0]->size().ToString());
307 EXPECT_TRUE(display_modes[0]->is_interlaced()); 281 EXPECT_TRUE(display_modes[0]->is_interlaced());
308 EXPECT_EQ(display_modes[0]->refresh_rate(), 60); 282 EXPECT_EQ(display_modes[0]->refresh_rate(), 60);
309 283
310 EXPECT_EQ("1024x600", display_modes[1]->size().ToString()); 284 EXPECT_EQ("1024x600", display_modes[1]->size().ToString());
(...skipping 25 matching lines...) Expand all
336 EXPECT_EQ("3840x2160", display_modes[7]->size().ToString()); 310 EXPECT_EQ("3840x2160", display_modes[7]->size().ToString());
337 EXPECT_FALSE(display_modes[7]->is_interlaced()); 311 EXPECT_FALSE(display_modes[7]->is_interlaced());
338 EXPECT_FALSE(display_modes[7]->native()); 312 EXPECT_FALSE(display_modes[7]->native());
339 EXPECT_EQ(display_modes[7]->refresh_rate(), 30); 313 EXPECT_EQ(display_modes[7]->refresh_rate(), 30);
340 EXPECT_EQ(display_modes[7]->device_scale_factor(), 1.25); 314 EXPECT_EQ(display_modes[7]->device_scale_factor(), 1.25);
341 315
342 EXPECT_EQ("3840x2160", display_modes[8]->size().ToString()); 316 EXPECT_EQ("3840x2160", display_modes[8]->size().ToString());
343 EXPECT_FALSE(display_modes[8]->is_interlaced()); 317 EXPECT_FALSE(display_modes[8]->is_interlaced());
344 EXPECT_TRUE(display_modes[8]->native()); 318 EXPECT_TRUE(display_modes[8]->native());
345 EXPECT_EQ(display_modes[8]->refresh_rate(), 30); 319 EXPECT_EQ(display_modes[8]->refresh_rate(), 30);
346
347 // Outputs without any modes shouldn't cause a crash.
348 modes.clear();
349 display_snapshot.set_native_mode(NULL);
350 display_snapshot.set_modes(std::move(modes));
351
352 display_modes = DisplayChangeObserver::GetExternalManagedDisplayModeList(
353 display_snapshot);
354 EXPECT_EQ(0u, display_modes.size());
355 } 320 }
356 321
357 namespace { 322 TEST(DisplayChangeObserverTest, FindDeviceScaleFactor) {
358
359 float ComputeDeviceScaleFactor(float diagonal_inch,
360 const gfx::Rect& resolution) {
361 // We assume that displays have square pixel.
362 float diagonal_pixel = std::sqrt(std::pow(resolution.width(), 2) +
363 std::pow(resolution.height(), 2));
364 float dpi = diagonal_pixel / diagonal_inch;
365 return DisplayChangeObserver::FindDeviceScaleFactor(dpi);
366 }
367
368 } // namespace
369
370 TEST_F(DisplayChangeObserverTest, FindDeviceScaleFactor) {
371 EXPECT_EQ(1.0f, ComputeDeviceScaleFactor(19.5f, gfx::Rect(1600, 900))); 323 EXPECT_EQ(1.0f, ComputeDeviceScaleFactor(19.5f, gfx::Rect(1600, 900)));
372 324
373 // 21.5" 1920x1080 325 // 21.5" 1920x1080
374 EXPECT_EQ(1.0f, ComputeDeviceScaleFactor(21.5f, gfx::Rect(1920, 1080))); 326 EXPECT_EQ(1.0f, ComputeDeviceScaleFactor(21.5f, gfx::Rect(1920, 1080)));
375 327
376 // 12.1" 1280x800 328 // 12.1" 1280x800
377 EXPECT_EQ(1.0f, ComputeDeviceScaleFactor(12.1f, gfx::Rect(1280, 800))); 329 EXPECT_EQ(1.0f, ComputeDeviceScaleFactor(12.1f, gfx::Rect(1280, 800)));
378 330
379 // 11.6" 1920x1080 331 // 11.6" 1920x1080
380 EXPECT_EQ(1.25f, ComputeDeviceScaleFactor(11.6f, gfx::Rect(1920, 1080))); 332 EXPECT_EQ(1.25f, ComputeDeviceScaleFactor(11.6f, gfx::Rect(1920, 1080)));
381 333
382 // 13.3" 1920x1080 334 // 13.3" 1920x1080
383 EXPECT_EQ(1.25f, ComputeDeviceScaleFactor(13.3f, gfx::Rect(1920, 1080))); 335 EXPECT_EQ(1.25f, ComputeDeviceScaleFactor(13.3f, gfx::Rect(1920, 1080)));
384 336
385 // 14" 1920x1080 337 // 14" 1920x1080
386 EXPECT_EQ(1.25f, ComputeDeviceScaleFactor(14.0f, gfx::Rect(1920, 1080))); 338 EXPECT_EQ(1.25f, ComputeDeviceScaleFactor(14.0f, gfx::Rect(1920, 1080)));
387 339
388 // 12.85" 2560x1700 340 // 12.85" 2560x1700
389 EXPECT_EQ(2.0f, ComputeDeviceScaleFactor(12.85f, gfx::Rect(2560, 1700))); 341 EXPECT_EQ(2.0f, ComputeDeviceScaleFactor(12.85f, gfx::Rect(2560, 1700)));
390 342
391 // Erroneous values should still work. 343 // Erroneous values should still work.
392 EXPECT_EQ(1.0f, DisplayChangeObserver::FindDeviceScaleFactor(-100.0f)); 344 EXPECT_EQ(1.0f, DisplayChangeObserver::FindDeviceScaleFactor(-100.0f));
393 EXPECT_EQ(1.0f, DisplayChangeObserver::FindDeviceScaleFactor(0.0f)); 345 EXPECT_EQ(1.0f, DisplayChangeObserver::FindDeviceScaleFactor(0.0f));
394 EXPECT_EQ(2.0f, DisplayChangeObserver::FindDeviceScaleFactor(10000.0f)); 346 EXPECT_EQ(2.0f, DisplayChangeObserver::FindDeviceScaleFactor(10000.0f));
395 } 347 }
396 348
397 TEST_F(DisplayChangeObserverTest, 349 TEST(DisplayChangeObserverTest, FindExternalDisplayNativeModeWhenOverwritten) {
398 FindExternalDisplayNativeModeWhenOverwritten) { 350 std::unique_ptr<ui::DisplaySnapshot> display_snapshot =
399 std::vector<std::unique_ptr<const ui::DisplayMode>> modes; 351 display::FakeDisplaySnapshot::Builder()
400 modes.push_back( 352 .SetId(123)
401 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), true, 60)); 353 .SetNativeMode(MakeDisplayMode(1920, 1080, true, 60))
402 modes.push_back( 354 .AddMode(MakeDisplayMode(1920, 1080, false, 60))
403 base::MakeUnique<ui::DisplayMode>(gfx::Size(1920, 1080), false, 60)); 355 .Build();
404
405 ui::TestDisplaySnapshot display_snapshot;
406 display_snapshot.set_native_mode(modes[0].get());
407 display_snapshot.set_modes(std::move(modes));
408 356
409 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes = 357 display::ManagedDisplayInfo::ManagedDisplayModeList display_modes =
410 DisplayChangeObserver::GetExternalManagedDisplayModeList( 358 DisplayChangeObserver::GetExternalManagedDisplayModeList(
411 display_snapshot); 359 *display_snapshot);
412 ASSERT_EQ(2u, display_modes.size()); 360 ASSERT_EQ(2u, display_modes.size());
413 EXPECT_EQ("1920x1080", display_modes[0]->size().ToString()); 361 EXPECT_EQ("1920x1080", display_modes[0]->size().ToString());
414 EXPECT_FALSE(display_modes[0]->is_interlaced()); 362 EXPECT_FALSE(display_modes[0]->is_interlaced());
415 EXPECT_FALSE(display_modes[0]->native()); 363 EXPECT_FALSE(display_modes[0]->native());
416 EXPECT_EQ(display_modes[0]->refresh_rate(), 60); 364 EXPECT_EQ(display_modes[0]->refresh_rate(), 60);
417 365
418 EXPECT_EQ("1920x1080", display_modes[1]->size().ToString()); 366 EXPECT_EQ("1920x1080", display_modes[1]->size().ToString());
419 EXPECT_TRUE(display_modes[1]->is_interlaced()); 367 EXPECT_TRUE(display_modes[1]->is_interlaced());
420 EXPECT_TRUE(display_modes[1]->native()); 368 EXPECT_TRUE(display_modes[1]->native());
421 EXPECT_EQ(display_modes[1]->refresh_rate(), 60); 369 EXPECT_EQ(display_modes[1]->refresh_rate(), 60);
422 } 370 }
423 371
424 } // namespace ash 372 } // namespace ash
OLDNEW
« no previous file with comments | « ash/BUILD.gn ('k') | ash/display/display_color_manager_chromeos_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698