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

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

Issue 15730006: Use the source display's pixel size as a mirror window's size. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 years, 6 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
« no previous file with comments | « ash/display/display_manager.cc ('k') | ash/display/mirror_window_controller.h » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_manager.h" 5 #include "ash/display/display_manager.h"
6 6
7 #include "ash/display/display_controller.h" 7 #include "ash/display/display_controller.h"
8 #include "ash/screen_ash.h" 8 #include "ash/screen_ash.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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 } 79 }
80 80
81 const gfx::Display& FindDisplayForId(int64 id) { 81 const gfx::Display& FindDisplayForId(int64 id) {
82 return display_manager()->FindDisplayForId(id); 82 return display_manager()->FindDisplayForId(id);
83 } 83 }
84 84
85 const DisplayInfo& FindDisplayInfoForId(int64 id) { 85 const DisplayInfo& FindDisplayInfoForId(int64 id) {
86 return GetDisplayInfo(display_manager()->FindDisplayForId(id)); 86 return GetDisplayInfo(display_manager()->FindDisplayForId(id));
87 } 87 }
88 88
89 const gfx::Display GetMirroredDisplay() {
90 test::MirrorWindowTestApi test_api;
91 return Shell::GetInstance()->display_manager()->
92 FindDisplayForRootWindow(test_api.GetRootWindow());
93 }
94
89 // aura::DisplayObserver overrides: 95 // aura::DisplayObserver overrides:
90 virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE { 96 virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE {
91 changed_.push_back(display); 97 changed_.push_back(display);
92 } 98 }
93 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE { 99 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE {
94 added_.push_back(new_display); 100 added_.push_back(new_display);
95 } 101 }
96 virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE { 102 virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE {
97 ++removed_count_; 103 ++removed_count_;
98 } 104 }
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 std::string default_bounds = 390 std::string default_bounds =
385 display_manager()->GetDisplayAt(0)->bounds().ToString(); 391 display_manager()->GetDisplayAt(0)->bounds().ToString();
386 392
387 std::vector<DisplayInfo> display_info_list; 393 std::vector<DisplayInfo> display_info_list;
388 // Primary disconnected. 394 // Primary disconnected.
389 display_manager()->OnNativeDisplaysChanged(display_info_list); 395 display_manager()->OnNativeDisplaysChanged(display_info_list);
390 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 396 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
391 EXPECT_EQ(default_bounds, 397 EXPECT_EQ(default_bounds,
392 display_manager()->GetDisplayAt(0)->bounds().ToString()); 398 display_manager()->GetDisplayAt(0)->bounds().ToString());
393 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 399 EXPECT_EQ(1U, display_manager()->num_connected_displays());
394 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 400 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
395 401
396 // External connected while primary was disconnected. 402 // External connected while primary was disconnected.
397 display_info_list.push_back(external_display_info); 403 display_info_list.push_back(external_display_info);
398 display_manager()->OnNativeDisplaysChanged(display_info_list); 404 display_manager()->OnNativeDisplaysChanged(display_info_list);
399 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 405 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
400 406
401 EXPECT_EQ(invalid_id, FindDisplayForId(internal_display_id).id()); 407 EXPECT_EQ(invalid_id, FindDisplayForId(internal_display_id).id());
402 EXPECT_EQ("1,1 100x100", 408 EXPECT_EQ("1,1 100x100",
403 FindDisplayInfoForId(external_id).bounds_in_pixel().ToString()); 409 FindDisplayInfoForId(external_id).bounds_in_pixel().ToString());
404 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 410 EXPECT_EQ(1U, display_manager()->num_connected_displays());
405 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 411 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
406 EXPECT_EQ(external_id, Shell::GetScreen()->GetPrimaryDisplay().id()); 412 EXPECT_EQ(external_id, Shell::GetScreen()->GetPrimaryDisplay().id());
407 413
408 // Primary connected, with different bounds. 414 // Primary connected, with different bounds.
409 display_info_list.clear(); 415 display_info_list.clear();
410 display_info_list.push_back(internal_display_info); 416 display_info_list.push_back(internal_display_info);
411 display_info_list.push_back(external_display_info); 417 display_info_list.push_back(external_display_info);
412 display_manager()->OnNativeDisplaysChanged(display_info_list); 418 display_manager()->OnNativeDisplaysChanged(display_info_list);
413 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 419 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
414 // need to remember which is primary 420 // need to remember which is primary
415 EXPECT_EQ("0,0 500x500", 421 EXPECT_EQ("0,0 500x500",
416 FindDisplayForId(internal_display_id).bounds().ToString()); 422 FindDisplayForId(internal_display_id).bounds().ToString());
417 EXPECT_EQ("1,1 100x100", 423 EXPECT_EQ("1,1 100x100",
418 FindDisplayInfoForId(10).bounds_in_pixel().ToString()); 424 FindDisplayInfoForId(10).bounds_in_pixel().ToString());
419 EXPECT_EQ(2U, display_manager()->num_connected_displays()); 425 EXPECT_EQ(2U, display_manager()->num_connected_displays());
420 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 426 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
421 EXPECT_EQ(StringPrintf("x-%d", internal_display_id), 427 EXPECT_EQ(StringPrintf("x-%d", internal_display_id),
422 display_manager()->GetDisplayNameForId(internal_display_id)); 428 display_manager()->GetDisplayNameForId(internal_display_id));
423 429
424 // Emulate suspend. 430 // Emulate suspend.
425 display_info_list.clear(); 431 display_info_list.clear();
426 display_manager()->OnNativeDisplaysChanged(display_info_list); 432 display_manager()->OnNativeDisplaysChanged(display_info_list);
427 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 433 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
428 EXPECT_EQ("0,0 500x500", 434 EXPECT_EQ("0,0 500x500",
429 FindDisplayForId(internal_display_id).bounds().ToString()); 435 FindDisplayForId(internal_display_id).bounds().ToString());
430 EXPECT_EQ("1,1 100x100", 436 EXPECT_EQ("1,1 100x100",
431 FindDisplayInfoForId(10).bounds_in_pixel().ToString()); 437 FindDisplayInfoForId(10).bounds_in_pixel().ToString());
432 EXPECT_EQ(2U, display_manager()->num_connected_displays()); 438 EXPECT_EQ(2U, display_manager()->num_connected_displays());
433 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 439 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
434 EXPECT_EQ(StringPrintf("x-%d", internal_display_id), 440 EXPECT_EQ(StringPrintf("x-%d", internal_display_id),
435 display_manager()->GetDisplayNameForId(internal_display_id)); 441 display_manager()->GetDisplayNameForId(internal_display_id));
436 442
437 // External display has disconnected then resumed. 443 // External display has disconnected then resumed.
438 display_info_list.push_back(internal_display_info); 444 display_info_list.push_back(internal_display_info);
439 display_manager()->OnNativeDisplaysChanged(display_info_list); 445 display_manager()->OnNativeDisplaysChanged(display_info_list);
440 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 446 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
441 EXPECT_EQ("0,0 500x500", 447 EXPECT_EQ("0,0 500x500",
442 FindDisplayForId(internal_display_id).bounds().ToString()); 448 FindDisplayForId(internal_display_id).bounds().ToString());
443 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 449 EXPECT_EQ(1U, display_manager()->num_connected_displays());
444 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 450 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
445 451
446 // External display was changed during suspend. 452 // External display was changed during suspend.
447 display_info_list.push_back(external_display_info); 453 display_info_list.push_back(external_display_info);
448 display_manager()->OnNativeDisplaysChanged(display_info_list); 454 display_manager()->OnNativeDisplaysChanged(display_info_list);
449 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 455 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
450 EXPECT_EQ(2U, display_manager()->num_connected_displays()); 456 EXPECT_EQ(2U, display_manager()->num_connected_displays());
451 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 457 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
452 458
453 // suspend... 459 // suspend...
454 display_info_list.clear(); 460 display_info_list.clear();
455 display_manager()->OnNativeDisplaysChanged(display_info_list); 461 display_manager()->OnNativeDisplaysChanged(display_info_list);
456 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 462 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
457 EXPECT_EQ(2U, display_manager()->num_connected_displays()); 463 EXPECT_EQ(2U, display_manager()->num_connected_displays());
458 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 464 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
459 465
460 // and resume with different external display. 466 // and resume with different external display.
461 display_info_list.push_back(internal_display_info); 467 display_info_list.push_back(internal_display_info);
462 display_info_list.push_back(CreateDisplayInfo(12, gfx::Rect(1, 1, 100, 100))); 468 display_info_list.push_back(CreateDisplayInfo(12, gfx::Rect(1, 1, 100, 100)));
463 display_manager()->OnNativeDisplaysChanged(display_info_list); 469 display_manager()->OnNativeDisplaysChanged(display_info_list);
464 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 470 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
465 EXPECT_EQ(2U, display_manager()->num_connected_displays()); 471 EXPECT_EQ(2U, display_manager()->num_connected_displays());
466 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 472 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
467 EXPECT_FALSE(display_manager()->IsMirrored()); 473 EXPECT_FALSE(display_manager()->IsMirrored());
468 474
469 // mirrored... 475 // mirrored...
470 display_info_list.clear(); 476 display_info_list.clear();
471 display_info_list.push_back(internal_display_info); 477 display_info_list.push_back(internal_display_info);
472 display_info_list.push_back(mirrored_display_info); 478 display_info_list.push_back(mirrored_display_info);
473 display_manager()->OnNativeDisplaysChanged(display_info_list); 479 display_manager()->OnNativeDisplaysChanged(display_info_list);
474 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 480 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
475 EXPECT_EQ("0,0 500x500", 481 EXPECT_EQ("0,0 500x500",
476 FindDisplayForId(internal_display_id).bounds().ToString()); 482 FindDisplayForId(internal_display_id).bounds().ToString());
477 EXPECT_EQ(2U, display_manager()->num_connected_displays()); 483 EXPECT_EQ(2U, display_manager()->num_connected_displays());
478 EXPECT_EQ(11U, display_manager()->mirrored_display_id()); 484 EXPECT_EQ(11U, display_manager()->mirrored_display().id());
479 EXPECT_TRUE(display_manager()->IsMirrored()); 485 EXPECT_TRUE(display_manager()->IsMirrored());
480 486
481 // Test display name. 487 // Test display name.
482 EXPECT_EQ(StringPrintf("x-%d", internal_display_id), 488 EXPECT_EQ(StringPrintf("x-%d", internal_display_id),
483 display_manager()->GetDisplayNameForId(internal_display_id)); 489 display_manager()->GetDisplayNameForId(internal_display_id));
484 EXPECT_EQ("x-10", display_manager()->GetDisplayNameForId(10)); 490 EXPECT_EQ("x-10", display_manager()->GetDisplayNameForId(10));
485 EXPECT_EQ("x-11", display_manager()->GetDisplayNameForId(11)); 491 EXPECT_EQ("x-11", display_manager()->GetDisplayNameForId(11));
486 EXPECT_EQ("x-12", display_manager()->GetDisplayNameForId(12)); 492 EXPECT_EQ("x-12", display_manager()->GetDisplayNameForId(12));
487 // Default name for the id that doesn't exist. 493 // Default name for the id that doesn't exist.
488 EXPECT_EQ("Display 100", display_manager()->GetDisplayNameForId(100)); 494 EXPECT_EQ("Display 100", display_manager()->GetDisplayNameForId(100));
(...skipping 13 matching lines...) Expand all
502 508
503 // Turn off internal 509 // Turn off internal
504 display_info_list.clear(); 510 display_info_list.clear();
505 display_info_list.push_back(external_display_info); 511 display_info_list.push_back(external_display_info);
506 display_manager()->OnNativeDisplaysChanged(display_info_list); 512 display_manager()->OnNativeDisplaysChanged(display_info_list);
507 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 513 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
508 EXPECT_EQ(invalid_id, FindDisplayForId(internal_display_id).id()); 514 EXPECT_EQ(invalid_id, FindDisplayForId(internal_display_id).id());
509 EXPECT_EQ("1,1 100x100", 515 EXPECT_EQ("1,1 100x100",
510 FindDisplayInfoForId(external_id).bounds_in_pixel().ToString()); 516 FindDisplayInfoForId(external_id).bounds_in_pixel().ToString());
511 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 517 EXPECT_EQ(1U, display_manager()->num_connected_displays());
512 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 518 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
513 519
514 // Switched to another display 520 // Switched to another display
515 display_info_list.clear(); 521 display_info_list.clear();
516 display_info_list.push_back(internal_display_info); 522 display_info_list.push_back(internal_display_info);
517 display_manager()->OnNativeDisplaysChanged(display_info_list); 523 display_manager()->OnNativeDisplaysChanged(display_info_list);
518 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 524 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
519 EXPECT_EQ( 525 EXPECT_EQ(
520 "0,0 500x500", 526 "0,0 500x500",
521 FindDisplayInfoForId(internal_display_id).bounds_in_pixel().ToString()); 527 FindDisplayInfoForId(internal_display_id).bounds_in_pixel().ToString());
522 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 528 EXPECT_EQ(1U, display_manager()->num_connected_displays());
523 EXPECT_EQ(invalid_id, display_manager()->mirrored_display_id()); 529 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
524 } 530 }
525 531
526 #if defined(OS_WIN) 532 #if defined(OS_WIN)
527 // This test currently fails on Win8/Metro as it picks up the actual 533 // This test currently fails on Win8/Metro as it picks up the actual
528 // display size. http://crbug.com/154081 534 // display size. http://crbug.com/154081
529 #define MAYBE_TestNativeDisplaysChangedNoInternal \ 535 #define MAYBE_TestNativeDisplaysChangedNoInternal \
530 DISABLED_TestNativeDisplaysChangedNoInternal 536 DISABLED_TestNativeDisplaysChangedNoInternal
531 #else 537 #else
532 #define MAYBE_TestNativeDisplaysChangedNoInternal \ 538 #define MAYBE_TestNativeDisplaysChangedNoInternal \
533 TestNativeDisplaysChangedNoInternal 539 TestNativeDisplaysChangedNoInternal
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 test::MirrorWindowTestApi test_api; 876 test::MirrorWindowTestApi test_api;
871 EXPECT_EQ(NULL, test_api.GetRootWindow()); 877 EXPECT_EQ(NULL, test_api.GetRootWindow());
872 878
873 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 879 DisplayManager* display_manager = Shell::GetInstance()->display_manager();
874 display_manager->SetSoftwareMirroring(true); 880 display_manager->SetSoftwareMirroring(true);
875 display_manager->UpdateDisplays(); 881 display_manager->UpdateDisplays();
876 EXPECT_EQ(1U, display_manager->GetNumDisplays()); 882 EXPECT_EQ(1U, display_manager->GetNumDisplays());
877 EXPECT_EQ("0,0 300x400", 883 EXPECT_EQ("0,0 300x400",
878 Shell::GetScreen()->GetPrimaryDisplay().bounds().ToString()); 884 Shell::GetScreen()->GetPrimaryDisplay().bounds().ToString());
879 EXPECT_EQ("400x500", test_api.GetRootWindow()->GetHostSize().ToString()); 885 EXPECT_EQ("400x500", test_api.GetRootWindow()->GetHostSize().ToString());
886 EXPECT_EQ("300x400", test_api.GetRootWindow()->bounds().size().ToString());
880 EXPECT_TRUE(display_manager->IsMirrored()); 887 EXPECT_TRUE(display_manager->IsMirrored());
881 888
882 display_manager->SetMirrorMode(false); 889 display_manager->SetMirrorMode(false);
883 EXPECT_EQ(NULL, test_api.GetRootWindow()); 890 EXPECT_EQ(NULL, test_api.GetRootWindow());
884 EXPECT_EQ(2U, display_manager->GetNumDisplays()); 891 EXPECT_EQ(2U, display_manager->GetNumDisplays());
885 EXPECT_FALSE(display_manager->IsMirrored()); 892 EXPECT_FALSE(display_manager->IsMirrored());
893
894 // Make sure the mirror window has the pixel size of the
895 // source display.
896 display_manager->SetMirrorMode(true);
897
898 UpdateDisplay("300x400@0.5,400x500");
899 EXPECT_EQ("300x400", test_api.GetRootWindow()->bounds().size().ToString());
900 EXPECT_EQ("400x500", GetMirroredDisplay().size().ToString());
901
902 UpdateDisplay("310x410*2,400x500");
903 EXPECT_EQ("310x410", test_api.GetRootWindow()->bounds().size().ToString());
904 EXPECT_EQ("400x500", GetMirroredDisplay().size().ToString());
905
906 UpdateDisplay("320x420/r,400x500");
907 EXPECT_EQ("320x420", test_api.GetRootWindow()->bounds().size().ToString());
908 EXPECT_EQ("400x500", GetMirroredDisplay().size().ToString());
909
910 UpdateDisplay("330x440/r,400x500");
911 EXPECT_EQ("330x440", test_api.GetRootWindow()->bounds().size().ToString());
912 EXPECT_EQ("400x500", GetMirroredDisplay().size().ToString());
913
914 // Overscan insets are ignored.
915 UpdateDisplay("400x600/o,600x800/o");
916 EXPECT_EQ("400x600", test_api.GetRootWindow()->bounds().size().ToString());
917 EXPECT_EQ("600x800", GetMirroredDisplay().size().ToString());
886 } 918 }
887 919
888 } // namespace internal 920 } // namespace internal
889 } // namespace ash 921 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/display_manager.cc ('k') | ash/display/mirror_window_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698