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

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

Issue 2355063002: Separate ash::test::DisplayManagerTestApi from ash (Closed)
Patch Set: review comment Created 4 years, 2 months 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
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/resolution_notification_controller.h" 5 #include "ash/display/resolution_notification_controller.h"
6 6
7 #include "ash/display/display_manager.h" 7 #include "ash/display/display_manager.h"
8 #include "ash/screen_util.h" 8 #include "ash/screen_util.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/test/ash_test_base.h" 10 #include "ash/test/ash_test_base.h"
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "grit/ash_strings.h" 13 #include "grit/ash_strings.h"
14 #include "ui/base/l10n/l10n_util.h" 14 #include "ui/base/l10n/l10n_util.h"
15 #include "ui/gfx/geometry/size.h" 15 #include "ui/gfx/geometry/size.h"
16 #include "ui/message_center/message_center.h" 16 #include "ui/message_center/message_center.h"
17 #include "ui/message_center/notification.h" 17 #include "ui/message_center/notification.h"
18 #include "ui/message_center/notification_list.h" 18 #include "ui/message_center/notification_list.h"
19 19
20 namespace ash { 20 namespace ash {
21 namespace {
22
23 base::string16 ExpectedNotificationMessage(int64_t display_id,
24 const gfx::Size& new_resolution) {
25 return l10n_util::GetStringFUTF16(
26 IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED,
27 base::UTF8ToUTF16(
28 Shell::GetInstance()->display_manager()->GetDisplayNameForId(
29 display_id)),
30 base::UTF8ToUTF16(new_resolution.ToString()));
31 }
32
33 base::string16 ExpectedFallbackNotificationMessage(
34 int64_t display_id,
35 const gfx::Size& specified_resolution,
36 const gfx::Size& fallback_resolution) {
37 return l10n_util::GetStringFUTF16(
38 IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED_TO_UNSUPPORTED,
39 base::UTF8ToUTF16(
40 Shell::GetInstance()->display_manager()->GetDisplayNameForId(
41 display_id)),
42 base::UTF8ToUTF16(specified_resolution.ToString()),
43 base::UTF8ToUTF16(fallback_resolution.ToString()));
44 }
45
46 } // namespace
47 21
48 class ResolutionNotificationControllerTest : public ash::test::AshTestBase { 22 class ResolutionNotificationControllerTest : public ash::test::AshTestBase {
49 public: 23 public:
50 ResolutionNotificationControllerTest() : accept_count_(0) {} 24 ResolutionNotificationControllerTest() : accept_count_(0) {}
51 25
52 ~ResolutionNotificationControllerTest() override {} 26 ~ResolutionNotificationControllerTest() override {}
53 27
28 base::string16 ExpectedNotificationMessage(int64_t display_id,
29 const gfx::Size& new_resolution) {
30 return l10n_util::GetStringFUTF16(
31 IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED,
32 base::UTF8ToUTF16(display_manager()->GetDisplayNameForId(display_id)),
33 base::UTF8ToUTF16(new_resolution.ToString()));
34 }
35
36 base::string16 ExpectedFallbackNotificationMessage(
37 int64_t display_id,
38 const gfx::Size& specified_resolution,
39 const gfx::Size& fallback_resolution) {
40 return l10n_util::GetStringFUTF16(
41 IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED_TO_UNSUPPORTED,
42 base::UTF8ToUTF16(display_manager()->GetDisplayNameForId(display_id)),
43 base::UTF8ToUTF16(specified_resolution.ToString()),
44 base::UTF8ToUTF16(fallback_resolution.ToString()));
45 }
46
54 protected: 47 protected:
55 void SetUp() override { 48 void SetUp() override {
56 ash::test::AshTestBase::SetUp(); 49 ash::test::AshTestBase::SetUp();
57 ResolutionNotificationController::SuppressTimerForTest(); 50 ResolutionNotificationController::SuppressTimerForTest();
58 } 51 }
59 52
60 void SetDisplayResolutionAndNotifyWithResolution( 53 void SetDisplayResolutionAndNotifyWithResolution(
61 const display::Display& display, 54 const display::Display& display,
62 const gfx::Size& new_resolution, 55 const gfx::Size& new_resolution,
63 const gfx::Size& actual_new_resolution) { 56 const gfx::Size& actual_new_resolution) {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 149
157 DISALLOW_COPY_AND_ASSIGN(ResolutionNotificationControllerTest); 150 DISALLOW_COPY_AND_ASSIGN(ResolutionNotificationControllerTest);
158 }; 151 };
159 152
160 // Basic behaviors and verifies it doesn't cause crashes. 153 // Basic behaviors and verifies it doesn't cause crashes.
161 TEST_F(ResolutionNotificationControllerTest, Basic) { 154 TEST_F(ResolutionNotificationControllerTest, Basic) {
162 if (!SupportsMultipleDisplays()) 155 if (!SupportsMultipleDisplays())
163 return; 156 return;
164 157
165 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60"); 158 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60");
166 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 159 int64_t id2 = display_manager()->GetSecondaryDisplay().id();
167 ash::DisplayManager* display_manager =
168 ash::Shell::GetInstance()->display_manager();
169 ASSERT_EQ(0, accept_count()); 160 ASSERT_EQ(0, accept_count());
170 EXPECT_FALSE(IsNotificationVisible()); 161 EXPECT_FALSE(IsNotificationVisible());
171 162
172 // Changes the resolution and apply the result. 163 // Changes the resolution and apply the result.
173 SetDisplayResolutionAndNotify(ScreenUtil::GetSecondaryDisplay(), 164 SetDisplayResolutionAndNotify(display_manager()->GetSecondaryDisplay(),
174 gfx::Size(200, 200)); 165 gfx::Size(200, 200));
175 EXPECT_TRUE(IsNotificationVisible()); 166 EXPECT_TRUE(IsNotificationVisible());
176 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 167 EXPECT_FALSE(controller()->DoesNotificationTimeout());
177 EXPECT_EQ(ExpectedNotificationMessage(id2, gfx::Size(200, 200)), 168 EXPECT_EQ(ExpectedNotificationMessage(id2, gfx::Size(200, 200)),
178 GetNotificationMessage()); 169 GetNotificationMessage());
179 scoped_refptr<display::ManagedDisplayMode> mode = 170 scoped_refptr<display::ManagedDisplayMode> mode =
180 display_manager->GetSelectedModeForDisplayId(id2); 171 display_manager()->GetSelectedModeForDisplayId(id2);
181 EXPECT_TRUE(!!mode); 172 EXPECT_TRUE(!!mode);
182 EXPECT_EQ("200x200", mode->size().ToString()); 173 EXPECT_EQ("200x200", mode->size().ToString());
183 EXPECT_EQ(60.0, mode->refresh_rate()); 174 EXPECT_EQ(60.0, mode->refresh_rate());
184 175
185 // Click the revert button, which reverts to the best resolution. 176 // Click the revert button, which reverts to the best resolution.
186 ClickOnNotificationButton(0); 177 ClickOnNotificationButton(0);
187 RunAllPendingInMessageLoop(); 178 RunAllPendingInMessageLoop();
188 EXPECT_FALSE(IsNotificationVisible()); 179 EXPECT_FALSE(IsNotificationVisible());
189 EXPECT_EQ(0, accept_count()); 180 EXPECT_EQ(0, accept_count());
190 mode = display_manager->GetSelectedModeForDisplayId(id2); 181 mode = display_manager()->GetSelectedModeForDisplayId(id2);
191 EXPECT_TRUE(!!mode); 182 EXPECT_TRUE(!!mode);
192 EXPECT_EQ("250x250", mode->size().ToString()); 183 EXPECT_EQ("250x250", mode->size().ToString());
193 EXPECT_EQ(59.0, mode->refresh_rate()); 184 EXPECT_EQ(59.0, mode->refresh_rate());
194 } 185 }
195 186
196 TEST_F(ResolutionNotificationControllerTest, ClickMeansAccept) { 187 TEST_F(ResolutionNotificationControllerTest, ClickMeansAccept) {
197 if (!SupportsMultipleDisplays()) 188 if (!SupportsMultipleDisplays())
198 return; 189 return;
199 190
200 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60"); 191 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60");
201 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 192 int64_t id2 = display_manager()->GetSecondaryDisplay().id();
202 ash::DisplayManager* display_manager =
203 ash::Shell::GetInstance()->display_manager();
204 ASSERT_EQ(0, accept_count()); 193 ASSERT_EQ(0, accept_count());
205 EXPECT_FALSE(IsNotificationVisible()); 194 EXPECT_FALSE(IsNotificationVisible());
206 195
207 // Changes the resolution and apply the result. 196 // Changes the resolution and apply the result.
208 SetDisplayResolutionAndNotify(ScreenUtil::GetSecondaryDisplay(), 197 SetDisplayResolutionAndNotify(display_manager()->GetSecondaryDisplay(),
209 gfx::Size(200, 200)); 198 gfx::Size(200, 200));
210 EXPECT_TRUE(IsNotificationVisible()); 199 EXPECT_TRUE(IsNotificationVisible());
211 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 200 EXPECT_FALSE(controller()->DoesNotificationTimeout());
212 scoped_refptr<display::ManagedDisplayMode> mode = 201 scoped_refptr<display::ManagedDisplayMode> mode =
213 display_manager->GetSelectedModeForDisplayId(id2); 202 display_manager()->GetSelectedModeForDisplayId(id2);
214 EXPECT_TRUE(!!mode); 203 EXPECT_TRUE(!!mode);
215 EXPECT_EQ("200x200", mode->size().ToString()); 204 EXPECT_EQ("200x200", mode->size().ToString());
216 EXPECT_EQ(60.0, mode->refresh_rate()); 205 EXPECT_EQ(60.0, mode->refresh_rate());
217 206
218 // Click the revert button, which reverts the resolution. 207 // Click the revert button, which reverts the resolution.
219 ClickOnNotification(); 208 ClickOnNotification();
220 RunAllPendingInMessageLoop(); 209 RunAllPendingInMessageLoop();
221 EXPECT_FALSE(IsNotificationVisible()); 210 EXPECT_FALSE(IsNotificationVisible());
222 EXPECT_EQ(1, accept_count()); 211 EXPECT_EQ(1, accept_count());
223 mode = display_manager->GetSelectedModeForDisplayId(id2); 212 mode = display_manager()->GetSelectedModeForDisplayId(id2);
224 EXPECT_TRUE(!!mode); 213 EXPECT_TRUE(!!mode);
225 EXPECT_EQ("200x200", mode->size().ToString()); 214 EXPECT_EQ("200x200", mode->size().ToString());
226 EXPECT_EQ(60.0, mode->refresh_rate()); 215 EXPECT_EQ(60.0, mode->refresh_rate());
227 } 216 }
228 217
229 TEST_F(ResolutionNotificationControllerTest, AcceptButton) { 218 TEST_F(ResolutionNotificationControllerTest, AcceptButton) {
230 if (!SupportsMultipleDisplays()) 219 if (!SupportsMultipleDisplays())
231 return; 220 return;
232 221
233 ash::DisplayManager* display_manager =
234 ash::Shell::GetInstance()->display_manager();
235
236 UpdateDisplay("300x300#300x300%59|200x200%60"); 222 UpdateDisplay("300x300#300x300%59|200x200%60");
237 const display::Display& display = 223 const display::Display& display =
238 display::Screen::GetScreen()->GetPrimaryDisplay(); 224 display::Screen::GetScreen()->GetPrimaryDisplay();
239 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200)); 225 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200));
240 EXPECT_TRUE(IsNotificationVisible()); 226 EXPECT_TRUE(IsNotificationVisible());
241 227
242 // If there's a single display only, it will have timeout and the first button 228 // If there's a single display only, it will have timeout and the first button
243 // becomes accept. 229 // becomes accept.
244 EXPECT_TRUE(controller()->DoesNotificationTimeout()); 230 EXPECT_TRUE(controller()->DoesNotificationTimeout());
245 ClickOnNotificationButton(0); 231 ClickOnNotificationButton(0);
246 EXPECT_FALSE(IsNotificationVisible()); 232 EXPECT_FALSE(IsNotificationVisible());
247 EXPECT_EQ(1, accept_count()); 233 EXPECT_EQ(1, accept_count());
248 234
249 scoped_refptr<display::ManagedDisplayMode> mode = 235 scoped_refptr<display::ManagedDisplayMode> mode =
250 display_manager->GetSelectedModeForDisplayId(display.id()); 236 display_manager()->GetSelectedModeForDisplayId(display.id());
251 EXPECT_TRUE(!!mode); 237 EXPECT_TRUE(!!mode);
252 238
253 EXPECT_EQ("200x200", mode->size().ToString()); 239 EXPECT_EQ("200x200", mode->size().ToString());
254 EXPECT_EQ(60.0f, mode->refresh_rate()); 240 EXPECT_EQ(60.0f, mode->refresh_rate());
255 241
256 // In that case the second button is revert. 242 // In that case the second button is revert.
257 UpdateDisplay("300x300#300x300%59|200x200%60"); 243 UpdateDisplay("300x300#300x300%59|200x200%60");
258 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200)); 244 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200));
259 EXPECT_TRUE(IsNotificationVisible()); 245 EXPECT_TRUE(IsNotificationVisible());
260 246
261 EXPECT_TRUE(controller()->DoesNotificationTimeout()); 247 EXPECT_TRUE(controller()->DoesNotificationTimeout());
262 ClickOnNotificationButton(1); 248 ClickOnNotificationButton(1);
263 EXPECT_FALSE(IsNotificationVisible()); 249 EXPECT_FALSE(IsNotificationVisible());
264 EXPECT_EQ(1, accept_count()); 250 EXPECT_EQ(1, accept_count());
265 mode = display_manager->GetSelectedModeForDisplayId(display.id()); 251 mode = display_manager()->GetSelectedModeForDisplayId(display.id());
266 EXPECT_TRUE(!!mode); 252 EXPECT_TRUE(!!mode);
267 253
268 EXPECT_EQ("300x300", mode->size().ToString()); 254 EXPECT_EQ("300x300", mode->size().ToString());
269 EXPECT_EQ(59.0f, mode->refresh_rate()); 255 EXPECT_EQ(59.0f, mode->refresh_rate());
270 } 256 }
271 257
272 TEST_F(ResolutionNotificationControllerTest, Close) { 258 TEST_F(ResolutionNotificationControllerTest, Close) {
273 if (!SupportsMultipleDisplays()) 259 if (!SupportsMultipleDisplays())
274 return; 260 return;
275 261
276 UpdateDisplay("100x100,150x150#150x150%59|200x200%60"); 262 UpdateDisplay("100x100,150x150#150x150%59|200x200%60");
277 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 263 int64_t id2 = display_manager()->GetSecondaryDisplay().id();
278 ash::DisplayManager* display_manager =
279 ash::Shell::GetInstance()->display_manager();
280 ASSERT_EQ(0, accept_count()); 264 ASSERT_EQ(0, accept_count());
281 EXPECT_FALSE(IsNotificationVisible()); 265 EXPECT_FALSE(IsNotificationVisible());
282 266
283 // Changes the resolution and apply the result. 267 // Changes the resolution and apply the result.
284 SetDisplayResolutionAndNotify(ScreenUtil::GetSecondaryDisplay(), 268 SetDisplayResolutionAndNotify(display_manager()->GetSecondaryDisplay(),
285 gfx::Size(200, 200)); 269 gfx::Size(200, 200));
286 EXPECT_TRUE(IsNotificationVisible()); 270 EXPECT_TRUE(IsNotificationVisible());
287 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 271 EXPECT_FALSE(controller()->DoesNotificationTimeout());
288 scoped_refptr<display::ManagedDisplayMode> mode = 272 scoped_refptr<display::ManagedDisplayMode> mode =
289 display_manager->GetSelectedModeForDisplayId(id2); 273 display_manager()->GetSelectedModeForDisplayId(id2);
290 EXPECT_TRUE(!!mode); 274 EXPECT_TRUE(!!mode);
291 EXPECT_EQ("200x200", mode->size().ToString()); 275 EXPECT_EQ("200x200", mode->size().ToString());
292 EXPECT_EQ(60.0f, mode->refresh_rate()); 276 EXPECT_EQ(60.0f, mode->refresh_rate());
293 277
294 // Close the notification (imitates clicking [x] button). Also verifies if 278 // Close the notification (imitates clicking [x] button). Also verifies if
295 // this does not cause a crash. See crbug.com/271784 279 // this does not cause a crash. See crbug.com/271784
296 CloseNotification(); 280 CloseNotification();
297 RunAllPendingInMessageLoop(); 281 RunAllPendingInMessageLoop();
298 EXPECT_FALSE(IsNotificationVisible()); 282 EXPECT_FALSE(IsNotificationVisible());
299 EXPECT_EQ(1, accept_count()); 283 EXPECT_EQ(1, accept_count());
(...skipping 25 matching lines...) Expand all
325 EXPECT_EQ(59.0f, mode->refresh_rate()); 309 EXPECT_EQ(59.0f, mode->refresh_rate());
326 } 310 }
327 311
328 TEST_F(ResolutionNotificationControllerTest, DisplayDisconnected) { 312 TEST_F(ResolutionNotificationControllerTest, DisplayDisconnected) {
329 if (!SupportsMultipleDisplays()) 313 if (!SupportsMultipleDisplays())
330 return; 314 return;
331 315
332 UpdateDisplay( 316 UpdateDisplay(
333 "300x300#300x300%56|200x200%57," 317 "300x300#300x300%56|200x200%57,"
334 "200x200#250x250%58|200x200%59|100x100%60"); 318 "200x200#250x250%58|200x200%59|100x100%60");
335 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 319 int64_t id2 = display_manager()->GetSecondaryDisplay().id();
336 ash::DisplayManager* display_manager = 320 SetDisplayResolutionAndNotify(display_manager()->GetSecondaryDisplay(),
337 ash::Shell::GetInstance()->display_manager();
338 SetDisplayResolutionAndNotify(ScreenUtil::GetSecondaryDisplay(),
339 gfx::Size(100, 100)); 321 gfx::Size(100, 100));
340 ASSERT_TRUE(IsNotificationVisible()); 322 ASSERT_TRUE(IsNotificationVisible());
341 323
342 // Disconnects the secondary display and verifies it doesn't cause crashes. 324 // Disconnects the secondary display and verifies it doesn't cause crashes.
343 UpdateDisplay("300x300#300x300%56|200x200%57"); 325 UpdateDisplay("300x300#300x300%56|200x200%57");
344 RunAllPendingInMessageLoop(); 326 RunAllPendingInMessageLoop();
345 EXPECT_FALSE(IsNotificationVisible()); 327 EXPECT_FALSE(IsNotificationVisible());
346 EXPECT_EQ(0, accept_count()); 328 EXPECT_EQ(0, accept_count());
347 scoped_refptr<display::ManagedDisplayMode> mode = 329 scoped_refptr<display::ManagedDisplayMode> mode =
348 display_manager->GetSelectedModeForDisplayId(id2); 330 display_manager()->GetSelectedModeForDisplayId(id2);
349 EXPECT_TRUE(!!mode); 331 EXPECT_TRUE(!!mode);
350 gfx::Size resolution; 332 gfx::Size resolution;
351 EXPECT_EQ("200x200", mode->size().ToString()); 333 EXPECT_EQ("200x200", mode->size().ToString());
352 EXPECT_EQ(59.0f, mode->refresh_rate()); 334 EXPECT_EQ(59.0f, mode->refresh_rate());
353 } 335 }
354 336
355 TEST_F(ResolutionNotificationControllerTest, MultipleResolutionChange) { 337 TEST_F(ResolutionNotificationControllerTest, MultipleResolutionChange) {
356 if (!SupportsMultipleDisplays()) 338 if (!SupportsMultipleDisplays())
357 return; 339 return;
358 340
359 UpdateDisplay( 341 UpdateDisplay(
360 "300x300#300x300%56|200x200%57," 342 "300x300#300x300%56|200x200%57,"
361 "250x250#250x250%58|200x200%59"); 343 "250x250#250x250%58|200x200%59");
362 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 344 int64_t id2 = display_manager()->GetSecondaryDisplay().id();
363 ash::DisplayManager* display_manager =
364 ash::Shell::GetInstance()->display_manager();
365 345
366 SetDisplayResolutionAndNotify(ScreenUtil::GetSecondaryDisplay(), 346 SetDisplayResolutionAndNotify(display_manager()->GetSecondaryDisplay(),
367 gfx::Size(200, 200)); 347 gfx::Size(200, 200));
368 EXPECT_TRUE(IsNotificationVisible()); 348 EXPECT_TRUE(IsNotificationVisible());
369 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 349 EXPECT_FALSE(controller()->DoesNotificationTimeout());
370 scoped_refptr<display::ManagedDisplayMode> mode = 350 scoped_refptr<display::ManagedDisplayMode> mode =
371 display_manager->GetSelectedModeForDisplayId(id2); 351 display_manager()->GetSelectedModeForDisplayId(id2);
372 EXPECT_TRUE(!!mode); 352 EXPECT_TRUE(!!mode);
373 EXPECT_EQ("200x200", mode->size().ToString()); 353 EXPECT_EQ("200x200", mode->size().ToString());
374 EXPECT_EQ(59.0f, mode->refresh_rate()); 354 EXPECT_EQ(59.0f, mode->refresh_rate());
375 355
376 // Invokes SetDisplayResolutionAndNotify during the previous notification is 356 // Invokes SetDisplayResolutionAndNotify during the previous notification is
377 // visible. 357 // visible.
378 SetDisplayResolutionAndNotify(ScreenUtil::GetSecondaryDisplay(), 358 SetDisplayResolutionAndNotify(display_manager()->GetSecondaryDisplay(),
379 gfx::Size(250, 250)); 359 gfx::Size(250, 250));
380 mode = display_manager->GetSelectedModeForDisplayId(id2); 360 mode = display_manager()->GetSelectedModeForDisplayId(id2);
381 EXPECT_TRUE(!!mode); 361 EXPECT_TRUE(!!mode);
382 EXPECT_EQ("250x250", mode->size().ToString()); 362 EXPECT_EQ("250x250", mode->size().ToString());
383 EXPECT_EQ(58.0f, mode->refresh_rate()); 363 EXPECT_EQ(58.0f, mode->refresh_rate());
384 364
385 // Then, click the revert button. Although |old_resolution| for the second 365 // Then, click the revert button. Although |old_resolution| for the second
386 // SetDisplayResolutionAndNotify is 200x200, it should revert to the original 366 // SetDisplayResolutionAndNotify is 200x200, it should revert to the original
387 // size 250x250. 367 // size 250x250.
388 ClickOnNotificationButton(0); 368 ClickOnNotificationButton(0);
389 RunAllPendingInMessageLoop(); 369 RunAllPendingInMessageLoop();
390 EXPECT_FALSE(IsNotificationVisible()); 370 EXPECT_FALSE(IsNotificationVisible());
391 EXPECT_EQ(0, accept_count()); 371 EXPECT_EQ(0, accept_count());
392 mode = display_manager->GetSelectedModeForDisplayId(id2); 372 mode = display_manager()->GetSelectedModeForDisplayId(id2);
393 EXPECT_TRUE(!!mode); 373 EXPECT_TRUE(!!mode);
394 EXPECT_EQ("250x250", mode->size().ToString()); 374 EXPECT_EQ("250x250", mode->size().ToString());
395 EXPECT_EQ(58.0f, mode->refresh_rate()); 375 EXPECT_EQ(58.0f, mode->refresh_rate());
396 } 376 }
397 377
398 TEST_F(ResolutionNotificationControllerTest, Fallback) { 378 TEST_F(ResolutionNotificationControllerTest, Fallback) {
399 if (!SupportsMultipleDisplays()) 379 if (!SupportsMultipleDisplays())
400 return; 380 return;
401 381
402 UpdateDisplay( 382 UpdateDisplay(
403 "300x300#300x300%56|200x200%57," 383 "300x300#300x300%56|200x200%57,"
404 "250x250#250x250%58|220x220%59|200x200%60"); 384 "250x250#250x250%58|220x220%59|200x200%60");
405 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 385 int64_t id2 = display_manager()->GetSecondaryDisplay().id();
406 ash::DisplayManager* display_manager =
407 ash::Shell::GetInstance()->display_manager();
408 ASSERT_EQ(0, accept_count()); 386 ASSERT_EQ(0, accept_count());
409 EXPECT_FALSE(IsNotificationVisible()); 387 EXPECT_FALSE(IsNotificationVisible());
410 388
411 // Changes the resolution and apply the result. 389 // Changes the resolution and apply the result.
412 SetDisplayResolutionAndNotifyWithResolution(ScreenUtil::GetSecondaryDisplay(), 390 SetDisplayResolutionAndNotifyWithResolution(
413 gfx::Size(220, 220), 391 display_manager()->GetSecondaryDisplay(), gfx::Size(220, 220),
414 gfx::Size(200, 200)); 392 gfx::Size(200, 200));
415 EXPECT_TRUE(IsNotificationVisible()); 393 EXPECT_TRUE(IsNotificationVisible());
416 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 394 EXPECT_FALSE(controller()->DoesNotificationTimeout());
417 EXPECT_EQ(ExpectedFallbackNotificationMessage(id2, gfx::Size(220, 220), 395 EXPECT_EQ(ExpectedFallbackNotificationMessage(id2, gfx::Size(220, 220),
418 gfx::Size(200, 200)), 396 gfx::Size(200, 200)),
419 GetNotificationMessage()); 397 GetNotificationMessage());
420 scoped_refptr<display::ManagedDisplayMode> mode = 398 scoped_refptr<display::ManagedDisplayMode> mode =
421 display_manager->GetSelectedModeForDisplayId(id2); 399 display_manager()->GetSelectedModeForDisplayId(id2);
422 EXPECT_TRUE(!!mode); 400 EXPECT_TRUE(!!mode);
423 EXPECT_EQ("200x200", mode->size().ToString()); 401 EXPECT_EQ("200x200", mode->size().ToString());
424 EXPECT_EQ(60.0f, mode->refresh_rate()); 402 EXPECT_EQ(60.0f, mode->refresh_rate());
425 403
426 // Click the revert button, which reverts to the best resolution. 404 // Click the revert button, which reverts to the best resolution.
427 ClickOnNotificationButton(0); 405 ClickOnNotificationButton(0);
428 RunAllPendingInMessageLoop(); 406 RunAllPendingInMessageLoop();
429 EXPECT_FALSE(IsNotificationVisible()); 407 EXPECT_FALSE(IsNotificationVisible());
430 EXPECT_EQ(0, accept_count()); 408 EXPECT_EQ(0, accept_count());
431 409
432 mode = display_manager->GetSelectedModeForDisplayId(id2); 410 mode = display_manager()->GetSelectedModeForDisplayId(id2);
433 EXPECT_TRUE(!!mode); 411 EXPECT_TRUE(!!mode);
434 EXPECT_EQ("250x250", mode->size().ToString()); 412 EXPECT_EQ("250x250", mode->size().ToString());
435 EXPECT_EQ(58.0f, mode->refresh_rate()); 413 EXPECT_EQ(58.0f, mode->refresh_rate());
436 } 414 }
437 415
438 } // namespace ash 416 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/mouse_cursor_event_filter_unittest.cc ('k') | ash/display/root_window_transformers_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698