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

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

Issue 138903025: Read compositor VSync information from platform, when possible (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 041e3518 Cleaned up. Created 6 years, 11 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 | Annotate | Revision Log
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"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 int accept_count_; 150 int accept_count_;
151 151
152 DISALLOW_COPY_AND_ASSIGN(ResolutionNotificationControllerTest); 152 DISALLOW_COPY_AND_ASSIGN(ResolutionNotificationControllerTest);
153 }; 153 };
154 154
155 // Basic behaviors and verifies it doesn't cause crashes. 155 // Basic behaviors and verifies it doesn't cause crashes.
156 TEST_F(ResolutionNotificationControllerTest, Basic) { 156 TEST_F(ResolutionNotificationControllerTest, Basic) {
157 if (!SupportsMultipleDisplays()) 157 if (!SupportsMultipleDisplays())
158 return; 158 return;
159 159
160 UpdateDisplay("300x300#300x300|200x200,250x250#250x250|200x200"); 160 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60");
161 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 161 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
162 ash::internal::DisplayManager* display_manager = 162 ash::internal::DisplayManager* display_manager =
163 ash::Shell::GetInstance()->display_manager(); 163 ash::Shell::GetInstance()->display_manager();
164 ASSERT_EQ(0, accept_count()); 164 ASSERT_EQ(0, accept_count());
165 EXPECT_FALSE(IsNotificationVisible()); 165 EXPECT_FALSE(IsNotificationVisible());
166 166
167 // Changes the resolution and apply the result. 167 // Changes the resolution and apply the result.
168 SetDisplayResolutionAndNotify( 168 SetDisplayResolutionAndNotify(
169 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200)); 169 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200));
170 EXPECT_TRUE(IsNotificationVisible()); 170 EXPECT_TRUE(IsNotificationVisible());
171 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 171 EXPECT_FALSE(controller()->DoesNotificationTimeout());
172 EXPECT_EQ(ExpectedNotificationMessage(id2, gfx::Size(200, 200)), 172 EXPECT_EQ(ExpectedNotificationMessage(id2, gfx::Size(200, 200)),
173 GetNotificationMessage()); 173 GetNotificationMessage());
174 gfx::Size resolution; 174 gfx::Size resolution;
175 EXPECT_TRUE( 175 float refresh_rate = 0.0f;
176 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 176 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
177 id2, &resolution, &refresh_rate));
177 EXPECT_EQ("200x200", resolution.ToString()); 178 EXPECT_EQ("200x200", resolution.ToString());
179 EXPECT_EQ(60.0, refresh_rate);
178 180
179 // Click the revert button, which reverts to the best resolution. 181 // Click the revert button, which reverts to the best resolution.
180 ClickOnNotificationButton(0); 182 ClickOnNotificationButton(0);
181 RunAllPendingInMessageLoop(); 183 RunAllPendingInMessageLoop();
182 EXPECT_FALSE(IsNotificationVisible()); 184 EXPECT_FALSE(IsNotificationVisible());
183 EXPECT_EQ(0, accept_count()); 185 EXPECT_EQ(0, accept_count());
184 EXPECT_FALSE( 186 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
185 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 187 id2, &resolution, &refresh_rate));
188 EXPECT_EQ("250x250", resolution.ToString());
189 EXPECT_EQ(59.0, refresh_rate);
186 } 190 }
187 191
188 TEST_F(ResolutionNotificationControllerTest, ClickMeansAccept) { 192 TEST_F(ResolutionNotificationControllerTest, ClickMeansAccept) {
189 if (!SupportsMultipleDisplays()) 193 if (!SupportsMultipleDisplays())
190 return; 194 return;
191 195
192 UpdateDisplay("300x300#300x300|200x200,250x250#250x250|200x200"); 196 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60");
193 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 197 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
194 ash::internal::DisplayManager* display_manager = 198 ash::internal::DisplayManager* display_manager =
195 ash::Shell::GetInstance()->display_manager(); 199 ash::Shell::GetInstance()->display_manager();
196 ASSERT_EQ(0, accept_count()); 200 ASSERT_EQ(0, accept_count());
197 EXPECT_FALSE(IsNotificationVisible()); 201 EXPECT_FALSE(IsNotificationVisible());
198 202
199 // Changes the resolution and apply the result. 203 // Changes the resolution and apply the result.
200 SetDisplayResolutionAndNotify( 204 SetDisplayResolutionAndNotify(
201 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200)); 205 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200));
202 EXPECT_TRUE(IsNotificationVisible()); 206 EXPECT_TRUE(IsNotificationVisible());
203 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 207 EXPECT_FALSE(controller()->DoesNotificationTimeout());
204 gfx::Size resolution; 208 gfx::Size resolution;
205 EXPECT_TRUE( 209 float refresh_rate = 0.0f;
206 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 210 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
211 id2, &resolution, &refresh_rate));
207 EXPECT_EQ("200x200", resolution.ToString()); 212 EXPECT_EQ("200x200", resolution.ToString());
213 EXPECT_EQ(60.0, refresh_rate);
208 214
209 // Click the revert button, which reverts the resolution. 215 // Click the revert button, which reverts the resolution.
210 ClickOnNotification(); 216 ClickOnNotification();
211 RunAllPendingInMessageLoop(); 217 RunAllPendingInMessageLoop();
212 EXPECT_FALSE(IsNotificationVisible()); 218 EXPECT_FALSE(IsNotificationVisible());
213 EXPECT_EQ(1, accept_count()); 219 EXPECT_EQ(1, accept_count());
214 EXPECT_TRUE( 220 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
215 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 221 id2, &resolution, &refresh_rate));
216 EXPECT_EQ("200x200", resolution.ToString()); 222 EXPECT_EQ("200x200", resolution.ToString());
223 EXPECT_EQ(60.0, refresh_rate);
217 } 224 }
218 225
219 TEST_F(ResolutionNotificationControllerTest, AcceptButton) { 226 TEST_F(ResolutionNotificationControllerTest, AcceptButton) {
220 if (!SupportsMultipleDisplays()) 227 if (!SupportsMultipleDisplays())
221 return; 228 return;
222 229
223 ash::internal::DisplayManager* display_manager = 230 ash::internal::DisplayManager* display_manager =
224 ash::Shell::GetInstance()->display_manager(); 231 ash::Shell::GetInstance()->display_manager();
225 232
226 UpdateDisplay("300x300#300x300|200x200"); 233 UpdateDisplay("300x300#300x300%59|200x200%60");
227 const gfx::Display& display = ash::Shell::GetScreen()->GetPrimaryDisplay(); 234 const gfx::Display& display = ash::Shell::GetScreen()->GetPrimaryDisplay();
228 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200)); 235 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200));
229 EXPECT_TRUE(IsNotificationVisible()); 236 EXPECT_TRUE(IsNotificationVisible());
230 237
231 // If there's a single display only, it will have timeout and the first button 238 // If there's a single display only, it will have timeout and the first button
232 // becomes accept. 239 // becomes accept.
233 EXPECT_TRUE(controller()->DoesNotificationTimeout()); 240 EXPECT_TRUE(controller()->DoesNotificationTimeout());
234 ClickOnNotificationButton(0); 241 ClickOnNotificationButton(0);
235 EXPECT_FALSE(IsNotificationVisible()); 242 EXPECT_FALSE(IsNotificationVisible());
236 EXPECT_EQ(1, accept_count()); 243 EXPECT_EQ(1, accept_count());
237 gfx::Size resolution; 244 gfx::Size resolution;
245 float refresh_rate = 0.0f;
238 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId( 246 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
239 display.id(), &resolution)); 247 display.id(), &resolution, &refresh_rate));
240 EXPECT_EQ("200x200", resolution.ToString()); 248 EXPECT_EQ("200x200", resolution.ToString());
249 EXPECT_EQ(60.0f, refresh_rate);
241 250
242 // In that case the second button is revert. 251 // In that case the second button is revert.
243 UpdateDisplay("300x300#300x300|200x200"); 252 UpdateDisplay("300x300#300x300%59|200x200%60");
244 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200)); 253 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200));
245 EXPECT_TRUE(IsNotificationVisible()); 254 EXPECT_TRUE(IsNotificationVisible());
246 255
247 EXPECT_TRUE(controller()->DoesNotificationTimeout()); 256 EXPECT_TRUE(controller()->DoesNotificationTimeout());
248 ClickOnNotificationButton(1); 257 ClickOnNotificationButton(1);
249 EXPECT_FALSE(IsNotificationVisible()); 258 EXPECT_FALSE(IsNotificationVisible());
250 EXPECT_EQ(1, accept_count()); 259 EXPECT_EQ(1, accept_count());
251 EXPECT_FALSE(display_manager->GetSelectedResolutionForDisplayId( 260 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
252 display.id(), &resolution)); 261 display.id(), &resolution, &refresh_rate));
262 EXPECT_EQ("300x300", resolution.ToString());
263 EXPECT_EQ(59.0f, refresh_rate);
253 } 264 }
254 265
255 TEST_F(ResolutionNotificationControllerTest, Close) { 266 TEST_F(ResolutionNotificationControllerTest, Close) {
256 if (!SupportsMultipleDisplays()) 267 if (!SupportsMultipleDisplays())
257 return; 268 return;
258 269
259 UpdateDisplay("100x100,150x150#150x150|200x200"); 270 UpdateDisplay("100x100,150x150#150x150%59|200x200%60");
260 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 271 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
261 ash::internal::DisplayManager* display_manager = 272 ash::internal::DisplayManager* display_manager =
262 ash::Shell::GetInstance()->display_manager(); 273 ash::Shell::GetInstance()->display_manager();
263 ASSERT_EQ(0, accept_count()); 274 ASSERT_EQ(0, accept_count());
264 EXPECT_FALSE(IsNotificationVisible()); 275 EXPECT_FALSE(IsNotificationVisible());
265 276
266 // Changes the resolution and apply the result. 277 // Changes the resolution and apply the result.
267 SetDisplayResolutionAndNotify( 278 SetDisplayResolutionAndNotify(
268 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200)); 279 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200));
269 EXPECT_TRUE(IsNotificationVisible()); 280 EXPECT_TRUE(IsNotificationVisible());
270 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 281 EXPECT_FALSE(controller()->DoesNotificationTimeout());
271 gfx::Size resolution; 282 gfx::Size resolution;
272 EXPECT_TRUE( 283 float refresh_rate = 0.0f;
273 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 284 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
285 id2, &resolution, &refresh_rate));
274 EXPECT_EQ("200x200", resolution.ToString()); 286 EXPECT_EQ("200x200", resolution.ToString());
287 EXPECT_EQ(60.0f, refresh_rate);
275 288
276 // Close the notification (imitates clicking [x] button). Also verifies if 289 // Close the notification (imitates clicking [x] button). Also verifies if
277 // this does not cause a crash. See crbug.com/271784 290 // this does not cause a crash. See crbug.com/271784
278 CloseNotification(); 291 CloseNotification();
279 RunAllPendingInMessageLoop(); 292 RunAllPendingInMessageLoop();
280 EXPECT_FALSE(IsNotificationVisible()); 293 EXPECT_FALSE(IsNotificationVisible());
281 EXPECT_EQ(1, accept_count()); 294 EXPECT_EQ(1, accept_count());
282 } 295 }
283 296
284 TEST_F(ResolutionNotificationControllerTest, Timeout) { 297 TEST_F(ResolutionNotificationControllerTest, Timeout) {
285 if (!SupportsMultipleDisplays()) 298 if (!SupportsMultipleDisplays())
286 return; 299 return;
287 300
288 UpdateDisplay("300x300#300x300|200x200"); 301 UpdateDisplay("300x300#300x300%59|200x200%60");
289 const gfx::Display& display = ash::Shell::GetScreen()->GetPrimaryDisplay(); 302 const gfx::Display& display = ash::Shell::GetScreen()->GetPrimaryDisplay();
290 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200)); 303 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200));
291 304
292 for (int i = 0; i < ResolutionNotificationController::kTimeoutInSec; ++i) { 305 for (int i = 0; i < ResolutionNotificationController::kTimeoutInSec; ++i) {
293 EXPECT_TRUE(IsNotificationVisible()) << "notification is closed after " 306 EXPECT_TRUE(IsNotificationVisible()) << "notification is closed after "
294 << i << "-th timer tick"; 307 << i << "-th timer tick";
295 TickTimer(); 308 TickTimer();
296 RunAllPendingInMessageLoop(); 309 RunAllPendingInMessageLoop();
297 } 310 }
298 EXPECT_FALSE(IsNotificationVisible()); 311 EXPECT_FALSE(IsNotificationVisible());
299 EXPECT_EQ(0, accept_count()); 312 EXPECT_EQ(0, accept_count());
300 gfx::Size resolution; 313 gfx::Size resolution;
314 float refresh_rate = 0.0f;
301 ash::internal::DisplayManager* display_manager = 315 ash::internal::DisplayManager* display_manager =
302 ash::Shell::GetInstance()->display_manager(); 316 ash::Shell::GetInstance()->display_manager();
303 EXPECT_FALSE(display_manager->GetSelectedResolutionForDisplayId( 317 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
304 display.id(), &resolution)); 318 display.id(), &resolution, &refresh_rate));
319 EXPECT_EQ("300x300", resolution.ToString());
320 EXPECT_EQ(59.0f, refresh_rate);
305 } 321 }
306 322
307 TEST_F(ResolutionNotificationControllerTest, DisplayDisconnected) { 323 TEST_F(ResolutionNotificationControllerTest, DisplayDisconnected) {
308 if (!SupportsMultipleDisplays()) 324 if (!SupportsMultipleDisplays())
309 return; 325 return;
310 326
311 UpdateDisplay("300x300#300x300|200x200,200x200#250x250|200x200|100x100"); 327 UpdateDisplay("300x300#300x300%56|200x200%57,"
328 "200x200#250x250%58|200x200%59|100x100%60");
312 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 329 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
313 ash::internal::DisplayManager* display_manager = 330 ash::internal::DisplayManager* display_manager =
314 ash::Shell::GetInstance()->display_manager(); 331 ash::Shell::GetInstance()->display_manager();
315 SetDisplayResolutionAndNotify( 332 SetDisplayResolutionAndNotify(
316 ScreenUtil::GetSecondaryDisplay(), gfx::Size(100, 100)); 333 ScreenUtil::GetSecondaryDisplay(), gfx::Size(100, 100));
317 ASSERT_TRUE(IsNotificationVisible()); 334 ASSERT_TRUE(IsNotificationVisible());
318 335
319 // Disconnects the secondary display and verifies it doesn't cause crashes. 336 // Disconnects the secondary display and verifies it doesn't cause crashes.
320 UpdateDisplay("300x300#300x300|200x200"); 337 UpdateDisplay("300x300#300x300%56|200x200%57");
321 RunAllPendingInMessageLoop(); 338 RunAllPendingInMessageLoop();
322 EXPECT_FALSE(IsNotificationVisible()); 339 EXPECT_FALSE(IsNotificationVisible());
323 EXPECT_EQ(0, accept_count()); 340 EXPECT_EQ(0, accept_count());
324 gfx::Size resolution; 341 gfx::Size resolution;
325 EXPECT_TRUE( 342 float refresh_rate = 0.0f;
326 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 343 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
344 id2, &resolution, &refresh_rate));
327 EXPECT_EQ("200x200", resolution.ToString()); 345 EXPECT_EQ("200x200", resolution.ToString());
346 EXPECT_EQ(59.0f, refresh_rate);
328 } 347 }
329 348
330 TEST_F(ResolutionNotificationControllerTest, MultipleResolutionChange) { 349 TEST_F(ResolutionNotificationControllerTest, MultipleResolutionChange) {
331 if (!SupportsMultipleDisplays()) 350 if (!SupportsMultipleDisplays())
332 return; 351 return;
333 352
334 UpdateDisplay("300x300#300x300|200x200,250x250#250x250|200x200"); 353 UpdateDisplay("300x300#300x300%56|200x200%57,"
354 "250x250#250x250%58|200x200%59");
335 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 355 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
336 ash::internal::DisplayManager* display_manager = 356 ash::internal::DisplayManager* display_manager =
337 ash::Shell::GetInstance()->display_manager(); 357 ash::Shell::GetInstance()->display_manager();
338 358
339 SetDisplayResolutionAndNotify( 359 SetDisplayResolutionAndNotify(
340 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200)); 360 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200));
341 EXPECT_TRUE(IsNotificationVisible()); 361 EXPECT_TRUE(IsNotificationVisible());
342 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 362 EXPECT_FALSE(controller()->DoesNotificationTimeout());
343 gfx::Size resolution; 363 gfx::Size resolution;
344 EXPECT_TRUE( 364 float refresh_rate = 0.0f;
345 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 365 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
366 id2, &resolution, &refresh_rate));
346 EXPECT_EQ("200x200", resolution.ToString()); 367 EXPECT_EQ("200x200", resolution.ToString());
368 EXPECT_EQ(59.0f, refresh_rate);
347 369
348 // Invokes SetDisplayResolutionAndNotify during the previous notification is 370 // Invokes SetDisplayResolutionAndNotify during the previous notification is
349 // visible. 371 // visible.
350 SetDisplayResolutionAndNotify( 372 SetDisplayResolutionAndNotify(
351 ScreenUtil::GetSecondaryDisplay(), gfx::Size(250, 250)); 373 ScreenUtil::GetSecondaryDisplay(), gfx::Size(250, 250));
352 EXPECT_FALSE( 374 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
353 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 375 id2, &resolution, &refresh_rate));
376 EXPECT_EQ("250x250", resolution.ToString());
377 EXPECT_EQ(58.0f, refresh_rate);
354 378
355 // Then, click the revert button. Although |old_resolution| for the second 379 // Then, click the revert button. Although |old_resolution| for the second
356 // SetDisplayResolutionAndNotify is 200x200, it should revert to the original 380 // SetDisplayResolutionAndNotify is 200x200, it should revert to the original
357 // size 150x150. 381 // size 250x250.
358 ClickOnNotificationButton(0); 382 ClickOnNotificationButton(0);
359 RunAllPendingInMessageLoop(); 383 RunAllPendingInMessageLoop();
360 EXPECT_FALSE(IsNotificationVisible()); 384 EXPECT_FALSE(IsNotificationVisible());
361 EXPECT_EQ(0, accept_count()); 385 EXPECT_EQ(0, accept_count());
362 EXPECT_FALSE( 386 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
363 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 387 id2, &resolution, &refresh_rate));
388 EXPECT_EQ("250x250", resolution.ToString());
389 EXPECT_EQ(58.0f, refresh_rate);
364 } 390 }
365 391
366 TEST_F(ResolutionNotificationControllerTest, Fallback) { 392 TEST_F(ResolutionNotificationControllerTest, Fallback) {
367 if (!SupportsMultipleDisplays()) 393 if (!SupportsMultipleDisplays())
368 return; 394 return;
369 395
370 UpdateDisplay("300x300#300x300|200x200,250x250#250x250|220x220|200x200"); 396 UpdateDisplay("300x300#300x300%56|200x200%57,"
397 "250x250#250x250%58|220x220%59|200x200%60");
371 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 398 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
372 ash::internal::DisplayManager* display_manager = 399 ash::internal::DisplayManager* display_manager =
373 ash::Shell::GetInstance()->display_manager(); 400 ash::Shell::GetInstance()->display_manager();
374 ASSERT_EQ(0, accept_count()); 401 ASSERT_EQ(0, accept_count());
375 EXPECT_FALSE(IsNotificationVisible()); 402 EXPECT_FALSE(IsNotificationVisible());
376 403
377 // Changes the resolution and apply the result. 404 // Changes the resolution and apply the result.
378 SetDisplayResolutionAndNotifyWithResolution( 405 SetDisplayResolutionAndNotifyWithResolution(
379 ScreenUtil::GetSecondaryDisplay(), 406 ScreenUtil::GetSecondaryDisplay(),
380 gfx::Size(220, 220), 407 gfx::Size(220, 220),
381 gfx::Size(200, 200)); 408 gfx::Size(200, 200));
382 EXPECT_TRUE(IsNotificationVisible()); 409 EXPECT_TRUE(IsNotificationVisible());
383 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 410 EXPECT_FALSE(controller()->DoesNotificationTimeout());
384 EXPECT_EQ( 411 EXPECT_EQ(
385 ExpectedFallbackNotificationMessage( 412 ExpectedFallbackNotificationMessage(
386 id2, gfx::Size(220, 220), gfx::Size(200, 200)), 413 id2, gfx::Size(220, 220), gfx::Size(200, 200)),
387 GetNotificationMessage()); 414 GetNotificationMessage());
388 gfx::Size resolution; 415 gfx::Size resolution;
389 EXPECT_TRUE( 416 float refresh_rate = 0.0f;
390 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 417 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
418 id2, &resolution, &refresh_rate));
391 EXPECT_EQ("200x200", resolution.ToString()); 419 EXPECT_EQ("200x200", resolution.ToString());
420 EXPECT_EQ(60.0f, refresh_rate);
392 421
393 // Click the revert button, which reverts to the best resolution. 422 // Click the revert button, which reverts to the best resolution.
394 ClickOnNotificationButton(0); 423 ClickOnNotificationButton(0);
395 RunAllPendingInMessageLoop(); 424 RunAllPendingInMessageLoop();
396 EXPECT_FALSE(IsNotificationVisible()); 425 EXPECT_FALSE(IsNotificationVisible());
397 EXPECT_EQ(0, accept_count()); 426 EXPECT_EQ(0, accept_count());
398 EXPECT_FALSE( 427 EXPECT_TRUE(display_manager->GetSelectedResolutionForDisplayId(
399 display_manager->GetSelectedResolutionForDisplayId(id2, &resolution)); 428 id2, &resolution, &refresh_rate));
429 EXPECT_EQ("250x250", resolution.ToString());
430 EXPECT_EQ(58.0f, refresh_rate);
400 } 431 }
401 432
402 } // namespace internal 433 } // namespace internal
403 } // namespace ash 434 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698