| OLD | NEW |
| 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/accelerators/accelerator_commands.h" | 7 #include "ash/accelerators/accelerator_commands.h" |
| 8 #include "ash/common/ash_switches.h" | 8 #include "ash/common/ash_switches.h" |
| 9 #include "ash/common/display/display_info.h" | 9 #include "ash/common/display/display_info.h" |
| 10 #include "ash/common/material_design/material_design_controller.h" | 10 #include "ash/common/material_design/material_design_controller.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 | 53 |
| 54 } // namespace | 54 } // namespace |
| 55 | 55 |
| 56 class DisplayManagerTest : public test::AshMDTestBase, | 56 class DisplayManagerTest : public test::AshMDTestBase, |
| 57 public display::DisplayObserver, | 57 public display::DisplayObserver, |
| 58 public aura::WindowObserver { | 58 public aura::WindowObserver { |
| 59 public: | 59 public: |
| 60 DisplayManagerTest() | 60 DisplayManagerTest() |
| 61 : removed_count_(0U), | 61 : removed_count_(0U), |
| 62 root_window_destroyed_(false), | 62 root_window_destroyed_(false), |
| 63 changed_metrics_(0U) { | 63 changed_metrics_(0U) {} |
| 64 } | |
| 65 ~DisplayManagerTest() override {} | 64 ~DisplayManagerTest() override {} |
| 66 | 65 |
| 67 void SetUp() override { | 66 void SetUp() override { |
| 68 AshMDTestBase::SetUp(); | 67 AshMDTestBase::SetUp(); |
| 69 display::Screen::GetScreen()->AddObserver(this); | 68 display::Screen::GetScreen()->AddObserver(this); |
| 70 Shell::GetPrimaryRootWindow()->AddObserver(this); | 69 Shell::GetPrimaryRootWindow()->AddObserver(this); |
| 71 } | 70 } |
| 72 void TearDown() override { | 71 void TearDown() override { |
| 73 Shell::GetPrimaryRootWindow()->RemoveObserver(this); | 72 Shell::GetPrimaryRootWindow()->RemoveObserver(this); |
| 74 display::Screen::GetScreen()->RemoveObserver(this); | 73 display::Screen::GetScreen()->RemoveObserver(this); |
| 75 AshMDTestBase::TearDown(); | 74 AshMDTestBase::TearDown(); |
| 76 } | 75 } |
| 77 | 76 |
| 78 DisplayManager* display_manager() { | 77 DisplayManager* display_manager() { |
| 79 return Shell::GetInstance()->display_manager(); | 78 return Shell::GetInstance()->display_manager(); |
| 80 } | 79 } |
| 81 const vector<display::Display>& changed() const { return changed_; } | 80 const vector<display::Display>& changed() const { return changed_; } |
| 82 const vector<display::Display>& added() const { return added_; } | 81 const vector<display::Display>& added() const { return added_; } |
| 83 uint32_t changed_metrics() const { return changed_metrics_; } | 82 uint32_t changed_metrics() const { return changed_metrics_; } |
| 84 | 83 |
| 85 string GetCountSummary() const { | 84 string GetCountSummary() const { |
| 86 return StringPrintf("%" PRIuS " %" PRIuS " %" PRIuS, | 85 return StringPrintf("%" PRIuS " %" PRIuS " %" PRIuS, changed_.size(), |
| 87 changed_.size(), added_.size(), removed_count_); | 86 added_.size(), removed_count_); |
| 88 } | 87 } |
| 89 | 88 |
| 90 void reset() { | 89 void reset() { |
| 91 changed_.clear(); | 90 changed_.clear(); |
| 92 added_.clear(); | 91 added_.clear(); |
| 93 removed_count_ = 0U; | 92 removed_count_ = 0U; |
| 94 changed_metrics_ = 0U; | 93 changed_metrics_ = 0U; |
| 95 root_window_destroyed_ = false; | 94 root_window_destroyed_ = false; |
| 96 } | 95 } |
| 97 | 96 |
| 98 bool root_window_destroyed() const { | 97 bool root_window_destroyed() const { return root_window_destroyed_; } |
| 99 return root_window_destroyed_; | |
| 100 } | |
| 101 | 98 |
| 102 const DisplayInfo& GetDisplayInfo(const display::Display& display) { | 99 const DisplayInfo& GetDisplayInfo(const display::Display& display) { |
| 103 return display_manager()->GetDisplayInfo(display.id()); | 100 return display_manager()->GetDisplayInfo(display.id()); |
| 104 } | 101 } |
| 105 | 102 |
| 106 const DisplayInfo& GetDisplayInfoAt(int index) { | 103 const DisplayInfo& GetDisplayInfoAt(int index) { |
| 107 return GetDisplayInfo(display_manager()->GetDisplayAt(index)); | 104 return GetDisplayInfo(display_manager()->GetDisplayAt(index)); |
| 108 } | 105 } |
| 109 | 106 |
| 110 const display::Display& GetDisplayForId(int64_t id) { | 107 const display::Display& GetDisplayForId(int64_t id) { |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 | 474 |
| 478 TEST_P(DisplayManagerTest, OverscanInsetsTest) { | 475 TEST_P(DisplayManagerTest, OverscanInsetsTest) { |
| 479 if (!SupportsMultipleDisplays()) | 476 if (!SupportsMultipleDisplays()) |
| 480 return; | 477 return; |
| 481 | 478 |
| 482 UpdateDisplay("0+0-500x500,0+501-400x400"); | 479 UpdateDisplay("0+0-500x500,0+501-400x400"); |
| 483 reset(); | 480 reset(); |
| 484 ASSERT_EQ(2u, display_manager()->GetNumDisplays()); | 481 ASSERT_EQ(2u, display_manager()->GetNumDisplays()); |
| 485 const DisplayInfo& display_info1 = GetDisplayInfoAt(0); | 482 const DisplayInfo& display_info1 = GetDisplayInfoAt(0); |
| 486 const DisplayInfo& display_info2 = GetDisplayInfoAt(1); | 483 const DisplayInfo& display_info2 = GetDisplayInfoAt(1); |
| 487 display_manager()->SetOverscanInsets( | 484 display_manager()->SetOverscanInsets(display_info2.id(), |
| 488 display_info2.id(), gfx::Insets(13, 12, 11, 10)); | 485 gfx::Insets(13, 12, 11, 10)); |
| 489 | 486 |
| 490 std::vector<display::Display> changed_displays = changed(); | 487 std::vector<display::Display> changed_displays = changed(); |
| 491 EXPECT_EQ(1u, changed_displays.size()); | 488 EXPECT_EQ(1u, changed_displays.size()); |
| 492 EXPECT_EQ(display_info2.id(), changed_displays[0].id()); | 489 EXPECT_EQ(display_info2.id(), changed_displays[0].id()); |
| 493 EXPECT_EQ("0,0 500x500", | 490 EXPECT_EQ("0,0 500x500", GetDisplayInfoAt(0).bounds_in_native().ToString()); |
| 494 GetDisplayInfoAt(0).bounds_in_native().ToString()); | |
| 495 DisplayInfo updated_display_info2 = GetDisplayInfoAt(1); | 491 DisplayInfo updated_display_info2 = GetDisplayInfoAt(1); |
| 496 EXPECT_EQ("0,501 400x400", | 492 EXPECT_EQ("0,501 400x400", |
| 497 updated_display_info2.bounds_in_native().ToString()); | 493 updated_display_info2.bounds_in_native().ToString()); |
| 498 EXPECT_EQ("378x376", | 494 EXPECT_EQ("378x376", updated_display_info2.size_in_pixel().ToString()); |
| 499 updated_display_info2.size_in_pixel().ToString()); | |
| 500 EXPECT_EQ("13,12,11,10", | 495 EXPECT_EQ("13,12,11,10", |
| 501 updated_display_info2.overscan_insets_in_dip().ToString()); | 496 updated_display_info2.overscan_insets_in_dip().ToString()); |
| 502 EXPECT_EQ("500,0 378x376", | 497 EXPECT_EQ("500,0 378x376", |
| 503 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); | 498 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); |
| 504 | 499 |
| 505 // Make sure that SetOverscanInsets() is idempotent. | 500 // Make sure that SetOverscanInsets() is idempotent. |
| 506 display_manager()->SetOverscanInsets(display_info1.id(), gfx::Insets()); | 501 display_manager()->SetOverscanInsets(display_info1.id(), gfx::Insets()); |
| 507 display_manager()->SetOverscanInsets( | 502 display_manager()->SetOverscanInsets(display_info2.id(), |
| 508 display_info2.id(), gfx::Insets(13, 12, 11, 10)); | 503 gfx::Insets(13, 12, 11, 10)); |
| 509 EXPECT_EQ("0,0 500x500", | 504 EXPECT_EQ("0,0 500x500", GetDisplayInfoAt(0).bounds_in_native().ToString()); |
| 510 GetDisplayInfoAt(0).bounds_in_native().ToString()); | |
| 511 updated_display_info2 = GetDisplayInfoAt(1); | 505 updated_display_info2 = GetDisplayInfoAt(1); |
| 512 EXPECT_EQ("0,501 400x400", | 506 EXPECT_EQ("0,501 400x400", |
| 513 updated_display_info2.bounds_in_native().ToString()); | 507 updated_display_info2.bounds_in_native().ToString()); |
| 514 EXPECT_EQ("378x376", | 508 EXPECT_EQ("378x376", updated_display_info2.size_in_pixel().ToString()); |
| 515 updated_display_info2.size_in_pixel().ToString()); | |
| 516 EXPECT_EQ("13,12,11,10", | 509 EXPECT_EQ("13,12,11,10", |
| 517 updated_display_info2.overscan_insets_in_dip().ToString()); | 510 updated_display_info2.overscan_insets_in_dip().ToString()); |
| 518 | 511 |
| 519 display_manager()->SetOverscanInsets( | 512 display_manager()->SetOverscanInsets(display_info2.id(), |
| 520 display_info2.id(), gfx::Insets(10, 11, 12, 13)); | 513 gfx::Insets(10, 11, 12, 13)); |
| 521 EXPECT_EQ("0,0 500x500", | 514 EXPECT_EQ("0,0 500x500", GetDisplayInfoAt(0).bounds_in_native().ToString()); |
| 522 GetDisplayInfoAt(0).bounds_in_native().ToString()); | 515 EXPECT_EQ("376x378", GetDisplayInfoAt(1).size_in_pixel().ToString()); |
| 523 EXPECT_EQ("376x378", | |
| 524 GetDisplayInfoAt(1).size_in_pixel().ToString()); | |
| 525 EXPECT_EQ("10,11,12,13", | 516 EXPECT_EQ("10,11,12,13", |
| 526 GetDisplayInfoAt(1).overscan_insets_in_dip().ToString()); | 517 GetDisplayInfoAt(1).overscan_insets_in_dip().ToString()); |
| 527 | 518 |
| 528 // Recreate a new 2nd display. It won't apply the overscan inset because the | 519 // Recreate a new 2nd display. It won't apply the overscan inset because the |
| 529 // new display has a different ID. | 520 // new display has a different ID. |
| 530 UpdateDisplay("0+0-500x500"); | 521 UpdateDisplay("0+0-500x500"); |
| 531 UpdateDisplay("0+0-500x500,0+501-400x400"); | 522 UpdateDisplay("0+0-500x500,0+501-400x400"); |
| 532 EXPECT_EQ("0,0 500x500", | 523 EXPECT_EQ("0,0 500x500", GetDisplayInfoAt(0).bounds_in_native().ToString()); |
| 533 GetDisplayInfoAt(0).bounds_in_native().ToString()); | 524 EXPECT_EQ("0,501 400x400", GetDisplayInfoAt(1).bounds_in_native().ToString()); |
| 534 EXPECT_EQ("0,501 400x400", | |
| 535 GetDisplayInfoAt(1).bounds_in_native().ToString()); | |
| 536 | 525 |
| 537 // Recreate the displays with the same ID. It should apply the overscan | 526 // Recreate the displays with the same ID. It should apply the overscan |
| 538 // inset. | 527 // inset. |
| 539 UpdateDisplay("0+0-500x500"); | 528 UpdateDisplay("0+0-500x500"); |
| 540 std::vector<DisplayInfo> display_info_list; | 529 std::vector<DisplayInfo> display_info_list; |
| 541 display_info_list.push_back(display_info1); | 530 display_info_list.push_back(display_info1); |
| 542 display_info_list.push_back(display_info2); | 531 display_info_list.push_back(display_info2); |
| 543 display_manager()->OnNativeDisplaysChanged(display_info_list); | 532 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 544 EXPECT_EQ("1,1 500x500", | 533 EXPECT_EQ("1,1 500x500", GetDisplayInfoAt(0).bounds_in_native().ToString()); |
| 545 GetDisplayInfoAt(0).bounds_in_native().ToString()); | |
| 546 updated_display_info2 = GetDisplayInfoAt(1); | 534 updated_display_info2 = GetDisplayInfoAt(1); |
| 547 EXPECT_EQ("376x378", | 535 EXPECT_EQ("376x378", updated_display_info2.size_in_pixel().ToString()); |
| 548 updated_display_info2.size_in_pixel().ToString()); | |
| 549 EXPECT_EQ("10,11,12,13", | 536 EXPECT_EQ("10,11,12,13", |
| 550 updated_display_info2.overscan_insets_in_dip().ToString()); | 537 updated_display_info2.overscan_insets_in_dip().ToString()); |
| 551 | 538 |
| 552 // HiDPI but overscan display. The specified insets size should be doubled. | 539 // HiDPI but overscan display. The specified insets size should be doubled. |
| 553 UpdateDisplay("0+0-500x500,0+501-400x400*2"); | 540 UpdateDisplay("0+0-500x500,0+501-400x400*2"); |
| 554 display_manager()->SetOverscanInsets( | 541 display_manager()->SetOverscanInsets(display_manager()->GetDisplayAt(1).id(), |
| 555 display_manager()->GetDisplayAt(1).id(), gfx::Insets(4, 5, 6, 7)); | 542 gfx::Insets(4, 5, 6, 7)); |
| 556 EXPECT_EQ("0,0 500x500", | 543 EXPECT_EQ("0,0 500x500", GetDisplayInfoAt(0).bounds_in_native().ToString()); |
| 557 GetDisplayInfoAt(0).bounds_in_native().ToString()); | |
| 558 updated_display_info2 = GetDisplayInfoAt(1); | 544 updated_display_info2 = GetDisplayInfoAt(1); |
| 559 EXPECT_EQ("0,501 400x400", | 545 EXPECT_EQ("0,501 400x400", |
| 560 updated_display_info2.bounds_in_native().ToString()); | 546 updated_display_info2.bounds_in_native().ToString()); |
| 561 EXPECT_EQ("376x380", | 547 EXPECT_EQ("376x380", updated_display_info2.size_in_pixel().ToString()); |
| 562 updated_display_info2.size_in_pixel().ToString()); | |
| 563 EXPECT_EQ("4,5,6,7", | 548 EXPECT_EQ("4,5,6,7", |
| 564 updated_display_info2.overscan_insets_in_dip().ToString()); | 549 updated_display_info2.overscan_insets_in_dip().ToString()); |
| 565 EXPECT_EQ("8,10,12,14", | 550 EXPECT_EQ("8,10,12,14", |
| 566 updated_display_info2.GetOverscanInsetsInPixel().ToString()); | 551 updated_display_info2.GetOverscanInsetsInPixel().ToString()); |
| 567 | 552 |
| 568 // Make sure switching primary display applies the overscan offset only once. | 553 // Make sure switching primary display applies the overscan offset only once. |
| 569 ash::Shell::GetInstance()->window_tree_host_manager()->SetPrimaryDisplayId( | 554 ash::Shell::GetInstance()->window_tree_host_manager()->SetPrimaryDisplayId( |
| 570 ScreenUtil::GetSecondaryDisplay().id()); | 555 ScreenUtil::GetSecondaryDisplay().id()); |
| 571 EXPECT_EQ("-500,0 500x500", | 556 EXPECT_EQ("-500,0 500x500", |
| 572 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); | 557 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); |
| 573 EXPECT_EQ("0,0 500x500", | 558 EXPECT_EQ("0,0 500x500", GetDisplayInfo(ScreenUtil::GetSecondaryDisplay()) |
| 574 GetDisplayInfo(ScreenUtil::GetSecondaryDisplay()). | 559 .bounds_in_native() |
| 575 bounds_in_native().ToString()); | 560 .ToString()); |
| 576 EXPECT_EQ("0,501 400x400", | 561 EXPECT_EQ("0,501 400x400", |
| 577 GetDisplayInfo(display::Screen::GetScreen()->GetPrimaryDisplay()) | 562 GetDisplayInfo(display::Screen::GetScreen()->GetPrimaryDisplay()) |
| 578 .bounds_in_native() | 563 .bounds_in_native() |
| 579 .ToString()); | 564 .ToString()); |
| 580 EXPECT_EQ( | 565 EXPECT_EQ( |
| 581 "0,0 188x190", | 566 "0,0 188x190", |
| 582 display::Screen::GetScreen()->GetPrimaryDisplay().bounds().ToString()); | 567 display::Screen::GetScreen()->GetPrimaryDisplay().bounds().ToString()); |
| 583 | 568 |
| 584 // Make sure just moving the overscan area should property notify observers. | 569 // Make sure just moving the overscan area should property notify observers. |
| 585 UpdateDisplay("0+0-500x500"); | 570 UpdateDisplay("0+0-500x500"); |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 789 // and exit mirroring. | 774 // and exit mirroring. |
| 790 display_info_list.clear(); | 775 display_info_list.clear(); |
| 791 display_info_list.push_back(internal_display_info); | 776 display_info_list.push_back(internal_display_info); |
| 792 display_info_list.push_back(external_display_info); | 777 display_info_list.push_back(external_display_info); |
| 793 display_manager()->OnNativeDisplaysChanged(display_info_list); | 778 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 794 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); | 779 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); |
| 795 EXPECT_EQ(2U, display_manager()->num_connected_displays()); | 780 EXPECT_EQ(2U, display_manager()->num_connected_displays()); |
| 796 EXPECT_FALSE(display_manager()->IsInMirrorMode()); | 781 EXPECT_FALSE(display_manager()->IsInMirrorMode()); |
| 797 EXPECT_EQ("0,0 500x500", | 782 EXPECT_EQ("0,0 500x500", |
| 798 GetDisplayForId(internal_display_id).bounds().ToString()); | 783 GetDisplayForId(internal_display_id).bounds().ToString()); |
| 799 EXPECT_EQ("500,0 100x100", | 784 EXPECT_EQ("500,0 100x100", GetDisplayForId(10).bounds().ToString()); |
| 800 GetDisplayForId(10).bounds().ToString()); | |
| 801 | 785 |
| 802 // Turn off internal | 786 // Turn off internal |
| 803 display_info_list.clear(); | 787 display_info_list.clear(); |
| 804 display_info_list.push_back(external_display_info); | 788 display_info_list.push_back(external_display_info); |
| 805 display_manager()->OnNativeDisplaysChanged(display_info_list); | 789 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 806 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); | 790 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); |
| 807 EXPECT_EQ(invalid_id, GetDisplayForId(internal_display_id).id()); | 791 EXPECT_EQ(invalid_id, GetDisplayForId(internal_display_id).id()); |
| 808 EXPECT_EQ("1,1 100x100", | 792 EXPECT_EQ("1,1 100x100", |
| 809 GetDisplayInfoForId(external_id).bounds_in_native().ToString()); | 793 GetDisplayInfoForId(external_id).bounds_in_native().ToString()); |
| 810 EXPECT_EQ(1U, display_manager()->num_connected_displays()); | 794 EXPECT_EQ(1U, display_manager()->num_connected_displays()); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 865 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); | 849 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); |
| 866 | 850 |
| 867 // Connect another display which will become primary. | 851 // Connect another display which will become primary. |
| 868 const DisplayInfo external_display_info = | 852 const DisplayInfo external_display_info = |
| 869 CreateDisplayInfo(10, gfx::Rect(1, 1, 100, 100)); | 853 CreateDisplayInfo(10, gfx::Rect(1, 1, 100, 100)); |
| 870 display_info_list.push_back(external_display_info); | 854 display_info_list.push_back(external_display_info); |
| 871 display_manager()->OnNativeDisplaysChanged(display_info_list); | 855 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 872 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); | 856 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); |
| 873 EXPECT_EQ("1,1 100x100", | 857 EXPECT_EQ("1,1 100x100", |
| 874 GetDisplayInfoForId(10).bounds_in_native().ToString()); | 858 GetDisplayInfoForId(10).bounds_in_native().ToString()); |
| 875 EXPECT_EQ("100x100", ash::Shell::GetPrimaryRootWindow()->GetHost()-> | 859 EXPECT_EQ("100x100", ash::Shell::GetPrimaryRootWindow() |
| 876 GetBounds().size().ToString()); | 860 ->GetHost() |
| 861 ->GetBounds() |
| 862 .size() |
| 863 .ToString()); |
| 877 } | 864 } |
| 878 #endif // defined(OS_CHROMEOS) | 865 #endif // defined(OS_CHROMEOS) |
| 879 | 866 |
| 880 TEST_P(DisplayManagerTest, NativeDisplaysChangedAfterPrimaryChange) { | 867 TEST_P(DisplayManagerTest, NativeDisplaysChangedAfterPrimaryChange) { |
| 881 if (!SupportsMultipleDisplays()) | 868 if (!SupportsMultipleDisplays()) |
| 882 return; | 869 return; |
| 883 | 870 |
| 884 const int64_t internal_display_id = | 871 const int64_t internal_display_id = |
| 885 test::DisplayManagerTestApi().SetFirstDisplayAsInternalDisplay(); | 872 test::DisplayManagerTestApi().SetFirstDisplayAsInternalDisplay(); |
| 886 const DisplayInfo native_display_info = | 873 const DisplayInfo native_display_info = |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1026 EXPECT_TRUE(mode.native); | 1013 EXPECT_TRUE(mode.native); |
| 1027 } | 1014 } |
| 1028 } | 1015 } |
| 1029 #endif // defined(OS_CHROMEOS) | 1016 #endif // defined(OS_CHROMEOS) |
| 1030 | 1017 |
| 1031 TEST_P(DisplayManagerTest, Rotate) { | 1018 TEST_P(DisplayManagerTest, Rotate) { |
| 1032 if (!SupportsMultipleDisplays()) | 1019 if (!SupportsMultipleDisplays()) |
| 1033 return; | 1020 return; |
| 1034 | 1021 |
| 1035 UpdateDisplay("100x200/r,300x400/l"); | 1022 UpdateDisplay("100x200/r,300x400/l"); |
| 1036 EXPECT_EQ("1,1 100x200", | 1023 EXPECT_EQ("1,1 100x200", GetDisplayInfoAt(0).bounds_in_native().ToString()); |
| 1037 GetDisplayInfoAt(0).bounds_in_native().ToString()); | 1024 EXPECT_EQ("200x100", GetDisplayInfoAt(0).size_in_pixel().ToString()); |
| 1038 EXPECT_EQ("200x100", | |
| 1039 GetDisplayInfoAt(0).size_in_pixel().ToString()); | |
| 1040 | 1025 |
| 1041 EXPECT_EQ("1,201 300x400", | 1026 EXPECT_EQ("1,201 300x400", GetDisplayInfoAt(1).bounds_in_native().ToString()); |
| 1042 GetDisplayInfoAt(1).bounds_in_native().ToString()); | 1027 EXPECT_EQ("400x300", GetDisplayInfoAt(1).size_in_pixel().ToString()); |
| 1043 EXPECT_EQ("400x300", | |
| 1044 GetDisplayInfoAt(1).size_in_pixel().ToString()); | |
| 1045 reset(); | 1028 reset(); |
| 1046 UpdateDisplay("100x200/b,300x400"); | 1029 UpdateDisplay("100x200/b,300x400"); |
| 1047 EXPECT_EQ("2 0 0", GetCountSummary()); | 1030 EXPECT_EQ("2 0 0", GetCountSummary()); |
| 1048 reset(); | 1031 reset(); |
| 1049 | 1032 |
| 1050 EXPECT_EQ("1,1 100x200", | 1033 EXPECT_EQ("1,1 100x200", GetDisplayInfoAt(0).bounds_in_native().ToString()); |
| 1051 GetDisplayInfoAt(0).bounds_in_native().ToString()); | 1034 EXPECT_EQ("100x200", GetDisplayInfoAt(0).size_in_pixel().ToString()); |
| 1052 EXPECT_EQ("100x200", | |
| 1053 GetDisplayInfoAt(0).size_in_pixel().ToString()); | |
| 1054 | 1035 |
| 1055 EXPECT_EQ("1,201 300x400", | 1036 EXPECT_EQ("1,201 300x400", GetDisplayInfoAt(1).bounds_in_native().ToString()); |
| 1056 GetDisplayInfoAt(1).bounds_in_native().ToString()); | 1037 EXPECT_EQ("300x400", GetDisplayInfoAt(1).size_in_pixel().ToString()); |
| 1057 EXPECT_EQ("300x400", | |
| 1058 GetDisplayInfoAt(1).size_in_pixel().ToString()); | |
| 1059 | 1038 |
| 1060 // Just Rotating display will change the bounds on both display. | 1039 // Just Rotating display will change the bounds on both display. |
| 1061 UpdateDisplay("100x200/l,300x400"); | 1040 UpdateDisplay("100x200/l,300x400"); |
| 1062 EXPECT_EQ("2 0 0", GetCountSummary()); | 1041 EXPECT_EQ("2 0 0", GetCountSummary()); |
| 1063 reset(); | 1042 reset(); |
| 1064 | 1043 |
| 1065 // Updating to the same configuration should report no changes. | 1044 // Updating to the same configuration should report no changes. |
| 1066 UpdateDisplay("100x200/l,300x400"); | 1045 UpdateDisplay("100x200/l,300x400"); |
| 1067 EXPECT_EQ("0 0 0", GetCountSummary()); | 1046 EXPECT_EQ("0 0 0", GetCountSummary()); |
| 1068 reset(); | 1047 reset(); |
| (...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1603 TEST_P(DisplayManagerTest, SoftwareMirroringWithCompositingCursor) { | 1582 TEST_P(DisplayManagerTest, SoftwareMirroringWithCompositingCursor) { |
| 1604 if (!SupportsMultipleDisplays()) | 1583 if (!SupportsMultipleDisplays()) |
| 1605 return; | 1584 return; |
| 1606 | 1585 |
| 1607 UpdateDisplay("300x400,400x500"); | 1586 UpdateDisplay("300x400,400x500"); |
| 1608 | 1587 |
| 1609 test::MirrorWindowTestApi test_api; | 1588 test::MirrorWindowTestApi test_api; |
| 1610 EXPECT_EQ(nullptr, test_api.GetHost()); | 1589 EXPECT_EQ(nullptr, test_api.GetHost()); |
| 1611 | 1590 |
| 1612 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 1591 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
| 1613 DisplayInfo secondary_info = display_manager->GetDisplayInfo( | 1592 DisplayInfo secondary_info = |
| 1614 ScreenUtil::GetSecondaryDisplay().id()); | 1593 display_manager->GetDisplayInfo(ScreenUtil::GetSecondaryDisplay().id()); |
| 1615 | 1594 |
| 1616 display_manager->SetSoftwareMirroring(true); | 1595 display_manager->SetSoftwareMirroring(true); |
| 1617 display_manager->UpdateDisplays(); | 1596 display_manager->UpdateDisplays(); |
| 1618 | 1597 |
| 1619 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1598 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 1620 EXPECT_FALSE(root_windows[0]->Contains(test_api.GetCursorWindow())); | 1599 EXPECT_FALSE(root_windows[0]->Contains(test_api.GetCursorWindow())); |
| 1621 | 1600 |
| 1622 Shell::GetInstance()->SetCursorCompositingEnabled(true); | 1601 Shell::GetInstance()->SetCursorCompositingEnabled(true); |
| 1623 | 1602 |
| 1624 EXPECT_TRUE(root_windows[0]->Contains(test_api.GetCursorWindow())); | 1603 EXPECT_TRUE(root_windows[0]->Contains(test_api.GetCursorWindow())); |
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2133 display::DisplayLayoutBuilder builder(1); | 2112 display::DisplayLayoutBuilder builder(1); |
| 2134 builder.AddDisplayPlacement(2, 1, display::DisplayPlacement::LEFT, 0); | 2113 builder.AddDisplayPlacement(2, 1, display::DisplayPlacement::LEFT, 0); |
| 2135 builder.AddDisplayPlacement(3, 1, display::DisplayPlacement::BOTTOM, 0); | 2114 builder.AddDisplayPlacement(3, 1, display::DisplayPlacement::BOTTOM, 0); |
| 2136 | 2115 |
| 2137 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 2116 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 2138 list, builder.Build()); | 2117 list, builder.Build()); |
| 2139 } | 2118 } |
| 2140 | 2119 |
| 2141 class ScreenShutdownTest : public test::AshTestBase { | 2120 class ScreenShutdownTest : public test::AshTestBase { |
| 2142 public: | 2121 public: |
| 2143 ScreenShutdownTest() { | 2122 ScreenShutdownTest() {} |
| 2144 } | |
| 2145 ~ScreenShutdownTest() override {} | 2123 ~ScreenShutdownTest() override {} |
| 2146 | 2124 |
| 2147 void TearDown() override { | 2125 void TearDown() override { |
| 2148 display::Screen* orig_screen = display::Screen::GetScreen(); | 2126 display::Screen* orig_screen = display::Screen::GetScreen(); |
| 2149 AshTestBase::TearDown(); | 2127 AshTestBase::TearDown(); |
| 2150 if (!SupportsMultipleDisplays()) | 2128 if (!SupportsMultipleDisplays()) |
| 2151 return; | 2129 return; |
| 2152 display::Screen* screen = display::Screen::GetScreen(); | 2130 display::Screen* screen = display::Screen::GetScreen(); |
| 2153 EXPECT_NE(orig_screen, screen); | 2131 EXPECT_NE(orig_screen, screen); |
| 2154 EXPECT_EQ(2, screen->GetNumDisplays()); | 2132 EXPECT_EQ(2, screen->GetNumDisplays()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 2169 } | 2147 } |
| 2170 | 2148 |
| 2171 #if defined(OS_CHROMEOS) | 2149 #if defined(OS_CHROMEOS) |
| 2172 namespace { | 2150 namespace { |
| 2173 | 2151 |
| 2174 // A helper class that sets the display configuration and starts ash. | 2152 // A helper class that sets the display configuration and starts ash. |
| 2175 // This is to make sure the font configuration happens during ash | 2153 // This is to make sure the font configuration happens during ash |
| 2176 // initialization process. | 2154 // initialization process. |
| 2177 class FontTestHelper : public test::AshTestBase { | 2155 class FontTestHelper : public test::AshTestBase { |
| 2178 public: | 2156 public: |
| 2179 enum DisplayType { | 2157 enum DisplayType { INTERNAL, EXTERNAL }; |
| 2180 INTERNAL, | |
| 2181 EXTERNAL | |
| 2182 }; | |
| 2183 | 2158 |
| 2184 FontTestHelper(float scale, DisplayType display_type) { | 2159 FontTestHelper(float scale, DisplayType display_type) { |
| 2185 gfx::ClearFontRenderParamsCacheForTest(); | 2160 gfx::ClearFontRenderParamsCacheForTest(); |
| 2186 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 2161 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| 2187 if (display_type == INTERNAL) | 2162 if (display_type == INTERNAL) |
| 2188 command_line->AppendSwitch(switches::kAshUseFirstDisplayAsInternal); | 2163 command_line->AppendSwitch(switches::kAshUseFirstDisplayAsInternal); |
| 2189 command_line->AppendSwitchASCII(switches::kAshHostWindowBounds, | 2164 command_line->AppendSwitchASCII(switches::kAshHostWindowBounds, |
| 2190 StringPrintf("1000x800*%f", scale)); | 2165 StringPrintf("1000x800*%f", scale)); |
| 2191 SetUp(); | 2166 SetUp(); |
| 2192 } | 2167 } |
| 2193 | 2168 |
| 2194 ~FontTestHelper() override { TearDown(); } | 2169 ~FontTestHelper() override { TearDown(); } |
| 2195 | 2170 |
| 2196 // test::AshTestBase: | 2171 // test::AshTestBase: |
| 2197 void TestBody() override { NOTREACHED(); } | 2172 void TestBody() override { NOTREACHED(); } |
| 2198 | 2173 |
| 2199 private: | 2174 private: |
| 2200 DISALLOW_COPY_AND_ASSIGN(FontTestHelper); | 2175 DISALLOW_COPY_AND_ASSIGN(FontTestHelper); |
| 2201 }; | 2176 }; |
| 2202 | 2177 |
| 2203 | |
| 2204 bool IsTextSubpixelPositioningEnabled() { | 2178 bool IsTextSubpixelPositioningEnabled() { |
| 2205 gfx::FontRenderParams params = | 2179 gfx::FontRenderParams params = |
| 2206 gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr); | 2180 gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr); |
| 2207 return params.subpixel_positioning; | 2181 return params.subpixel_positioning; |
| 2208 } | 2182 } |
| 2209 | 2183 |
| 2210 gfx::FontRenderParams::Hinting GetFontHintingParams() { | 2184 gfx::FontRenderParams::Hinting GetFontHintingParams() { |
| 2211 gfx::FontRenderParams params = | 2185 gfx::FontRenderParams params = |
| 2212 gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr); | 2186 gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr); |
| 2213 return params.hinting; | 2187 return params.hinting; |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2353 const display::DisplayLayout& stored = | 2327 const display::DisplayLayout& stored = |
| 2354 layout_store->GetRegisteredDisplayLayout(list); | 2328 layout_store->GetRegisteredDisplayLayout(list); |
| 2355 | 2329 |
| 2356 EXPECT_EQ(id1, stored.placement_list[0].parent_display_id); | 2330 EXPECT_EQ(id1, stored.placement_list[0].parent_display_id); |
| 2357 EXPECT_EQ(id2, stored.placement_list[0].display_id); | 2331 EXPECT_EQ(id2, stored.placement_list[0].display_id); |
| 2358 } | 2332 } |
| 2359 | 2333 |
| 2360 #endif // OS_CHROMEOS | 2334 #endif // OS_CHROMEOS |
| 2361 | 2335 |
| 2362 } // namespace ash | 2336 } // namespace ash |
| OLD | NEW |