| 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/ash_switches.h" | 8 #include "ash/ash_switches.h" |
| 9 #include "ash/display/display_info.h" | 9 #include "ash/display/display_info.h" |
| 10 #include "ash/display/display_layout_store.h" | 10 #include "ash/display/display_layout_store.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
| 24 #include "ui/aura/client/aura_constants.h" | 24 #include "ui/aura/client/aura_constants.h" |
| 25 #include "ui/aura/env.h" | 25 #include "ui/aura/env.h" |
| 26 #include "ui/aura/window_observer.h" | 26 #include "ui/aura/window_observer.h" |
| 27 #include "ui/aura/window_tree_host.h" | 27 #include "ui/aura/window_tree_host.h" |
| 28 #include "ui/events/test/event_generator.h" | 28 #include "ui/events/test/event_generator.h" |
| 29 #include "ui/gfx/display.h" | 29 #include "ui/gfx/display.h" |
| 30 #include "ui/gfx/display_observer.h" | 30 #include "ui/gfx/display_observer.h" |
| 31 #include "ui/gfx/font_render_params.h" | 31 #include "ui/gfx/font_render_params.h" |
| 32 #include "ui/gfx/screen.h" | 32 #include "ui/gfx/screen.h" |
| 33 #include "ui/gfx/screen_type_delegate.h" | |
| 34 | 33 |
| 35 namespace ash { | 34 namespace ash { |
| 36 | 35 |
| 37 using std::vector; | 36 using std::vector; |
| 38 using std::string; | 37 using std::string; |
| 39 | 38 |
| 40 using base::StringPrintf; | 39 using base::StringPrintf; |
| 41 | 40 |
| 42 namespace { | 41 namespace { |
| 43 | 42 |
| (...skipping 1489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1533 | 1532 |
| 1534 // Don't check root window destruction in unified mode. | 1533 // Don't check root window destruction in unified mode. |
| 1535 Shell::GetPrimaryRootWindow()->RemoveObserver(this); | 1534 Shell::GetPrimaryRootWindow()->RemoveObserver(this); |
| 1536 | 1535 |
| 1537 UpdateDisplay("400x500,300x200"); | 1536 UpdateDisplay("400x500,300x200"); |
| 1538 | 1537 |
| 1539 // Enable after extended mode. | 1538 // Enable after extended mode. |
| 1540 display_manager()->SetUnifiedDesktopEnabled(true); | 1539 display_manager()->SetUnifiedDesktopEnabled(true); |
| 1541 | 1540 |
| 1542 // Defaults to the unified desktop. | 1541 // Defaults to the unified desktop. |
| 1543 gfx::Screen* screen = | 1542 gfx::Screen* screen = gfx::Screen::GetScreen(); |
| 1544 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); | |
| 1545 // The 2nd display is scaled so that it has the same height as 1st display. | 1543 // The 2nd display is scaled so that it has the same height as 1st display. |
| 1546 // 300 * 500 / 200 + 400 = 1150. | 1544 // 300 * 500 / 200 + 400 = 1150. |
| 1547 EXPECT_EQ("1150x500", screen->GetPrimaryDisplay().size().ToString()); | 1545 EXPECT_EQ("1150x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1548 | 1546 |
| 1549 display_manager()->SetMirrorMode(true); | 1547 display_manager()->SetMirrorMode(true); |
| 1550 EXPECT_EQ("400x500", screen->GetPrimaryDisplay().size().ToString()); | 1548 EXPECT_EQ("400x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1551 | 1549 |
| 1552 display_manager()->SetMirrorMode(false); | 1550 display_manager()->SetMirrorMode(false); |
| 1553 EXPECT_EQ("1150x500", screen->GetPrimaryDisplay().size().ToString()); | 1551 EXPECT_EQ("1150x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1554 | 1552 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1636 EXPECT_FALSE(display_manager()->IsInUnifiedMode()); | 1634 EXPECT_FALSE(display_manager()->IsInUnifiedMode()); |
| 1637 } | 1635 } |
| 1638 | 1636 |
| 1639 TEST_F(DisplayManagerTest, UnifiedDesktopWith2xDSF) { | 1637 TEST_F(DisplayManagerTest, UnifiedDesktopWith2xDSF) { |
| 1640 if (!SupportsMultipleDisplays()) | 1638 if (!SupportsMultipleDisplays()) |
| 1641 return; | 1639 return; |
| 1642 // Don't check root window destruction in unified mode. | 1640 // Don't check root window destruction in unified mode. |
| 1643 Shell::GetPrimaryRootWindow()->RemoveObserver(this); | 1641 Shell::GetPrimaryRootWindow()->RemoveObserver(this); |
| 1644 | 1642 |
| 1645 display_manager()->SetUnifiedDesktopEnabled(true); | 1643 display_manager()->SetUnifiedDesktopEnabled(true); |
| 1646 gfx::Screen* screen = | 1644 gfx::Screen* screen = gfx::Screen::GetScreen(); |
| 1647 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); | |
| 1648 | 1645 |
| 1649 // 2nd display is 2x. | 1646 // 2nd display is 2x. |
| 1650 UpdateDisplay("400x500,1000x800*2"); | 1647 UpdateDisplay("400x500,1000x800*2"); |
| 1651 DisplayInfo info = | 1648 DisplayInfo info = |
| 1652 display_manager()->GetDisplayInfo(screen->GetPrimaryDisplay().id()); | 1649 display_manager()->GetDisplayInfo(screen->GetPrimaryDisplay().id()); |
| 1653 EXPECT_EQ(2u, info.display_modes().size()); | 1650 EXPECT_EQ(2u, info.display_modes().size()); |
| 1654 EXPECT_EQ("1640x800", info.display_modes()[0].size.ToString()); | 1651 EXPECT_EQ("1640x800", info.display_modes()[0].size.ToString()); |
| 1655 EXPECT_EQ(2.0f, info.display_modes()[0].device_scale_factor); | 1652 EXPECT_EQ(2.0f, info.display_modes()[0].device_scale_factor); |
| 1656 EXPECT_EQ("1025x500", info.display_modes()[1].size.ToString()); | 1653 EXPECT_EQ("1025x500", info.display_modes()[1].size.ToString()); |
| 1657 EXPECT_EQ(1.0f, info.display_modes()[1].device_scale_factor); | 1654 EXPECT_EQ(1.0f, info.display_modes()[1].device_scale_factor); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1758 TEST_F(DisplayManagerTest, NoRotateUnifiedDesktop) { | 1755 TEST_F(DisplayManagerTest, NoRotateUnifiedDesktop) { |
| 1759 if (!SupportsMultipleDisplays()) | 1756 if (!SupportsMultipleDisplays()) |
| 1760 return; | 1757 return; |
| 1761 display_manager()->SetUnifiedDesktopEnabled(true); | 1758 display_manager()->SetUnifiedDesktopEnabled(true); |
| 1762 | 1759 |
| 1763 // Don't check root window destruction in unified mode. | 1760 // Don't check root window destruction in unified mode. |
| 1764 Shell::GetPrimaryRootWindow()->RemoveObserver(this); | 1761 Shell::GetPrimaryRootWindow()->RemoveObserver(this); |
| 1765 | 1762 |
| 1766 UpdateDisplay("400x500,300x200"); | 1763 UpdateDisplay("400x500,300x200"); |
| 1767 | 1764 |
| 1768 gfx::Screen* screen = | 1765 gfx::Screen* screen = gfx::Screen::GetScreen(); |
| 1769 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); | |
| 1770 const gfx::Display& display = screen->GetPrimaryDisplay(); | 1766 const gfx::Display& display = screen->GetPrimaryDisplay(); |
| 1771 EXPECT_EQ("1150x500", display.size().ToString()); | 1767 EXPECT_EQ("1150x500", display.size().ToString()); |
| 1772 display_manager()->SetDisplayRotation(display.id(), gfx::Display::ROTATE_90, | 1768 display_manager()->SetDisplayRotation(display.id(), gfx::Display::ROTATE_90, |
| 1773 gfx::Display::ROTATION_SOURCE_ACTIVE); | 1769 gfx::Display::ROTATION_SOURCE_ACTIVE); |
| 1774 EXPECT_EQ("1150x500", screen->GetPrimaryDisplay().size().ToString()); | 1770 EXPECT_EQ("1150x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1775 display_manager()->SetDisplayRotation(display.id(), gfx::Display::ROTATE_0, | 1771 display_manager()->SetDisplayRotation(display.id(), gfx::Display::ROTATE_0, |
| 1776 gfx::Display::ROTATION_SOURCE_ACTIVE); | 1772 gfx::Display::ROTATION_SOURCE_ACTIVE); |
| 1777 EXPECT_EQ("1150x500", screen->GetPrimaryDisplay().size().ToString()); | 1773 EXPECT_EQ("1150x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1778 | 1774 |
| 1779 UpdateDisplay("400x500"); | 1775 UpdateDisplay("400x500"); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1845 EXPECT_FALSE(SetDisplayUIScale(gfx::Display::kInvalidDisplayID, 1.0f)); | 1841 EXPECT_FALSE(SetDisplayUIScale(gfx::Display::kInvalidDisplayID, 1.0f)); |
| 1846 } | 1842 } |
| 1847 | 1843 |
| 1848 class ScreenShutdownTest : public test::AshTestBase { | 1844 class ScreenShutdownTest : public test::AshTestBase { |
| 1849 public: | 1845 public: |
| 1850 ScreenShutdownTest() { | 1846 ScreenShutdownTest() { |
| 1851 } | 1847 } |
| 1852 ~ScreenShutdownTest() override {} | 1848 ~ScreenShutdownTest() override {} |
| 1853 | 1849 |
| 1854 void TearDown() override { | 1850 void TearDown() override { |
| 1855 gfx::Screen* orig_screen = | 1851 gfx::Screen* orig_screen = gfx::Screen::GetScreen(); |
| 1856 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); | |
| 1857 AshTestBase::TearDown(); | 1852 AshTestBase::TearDown(); |
| 1858 if (!SupportsMultipleDisplays()) | 1853 if (!SupportsMultipleDisplays()) |
| 1859 return; | 1854 return; |
| 1860 gfx::Screen* screen = | 1855 gfx::Screen* screen = gfx::Screen::GetScreen(); |
| 1861 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); | |
| 1862 EXPECT_NE(orig_screen, screen); | 1856 EXPECT_NE(orig_screen, screen); |
| 1863 EXPECT_EQ(2, screen->GetNumDisplays()); | 1857 EXPECT_EQ(2, screen->GetNumDisplays()); |
| 1864 EXPECT_EQ("500x300", screen->GetPrimaryDisplay().size().ToString()); | 1858 EXPECT_EQ("500x300", screen->GetPrimaryDisplay().size().ToString()); |
| 1865 std::vector<gfx::Display> all = screen->GetAllDisplays(); | 1859 std::vector<gfx::Display> all = screen->GetAllDisplays(); |
| 1866 EXPECT_EQ("500x300", all[0].size().ToString()); | 1860 EXPECT_EQ("500x300", all[0].size().ToString()); |
| 1867 EXPECT_EQ("800x400", all[1].size().ToString()); | 1861 EXPECT_EQ("800x400", all[1].size().ToString()); |
| 1868 } | 1862 } |
| 1869 | 1863 |
| 1870 private: | 1864 private: |
| 1871 DISALLOW_COPY_AND_ASSIGN(ScreenShutdownTest); | 1865 DISALLOW_COPY_AND_ASSIGN(ScreenShutdownTest); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2029 layout_store->RegisterLayoutForDisplayIdPair(id2, id1, bad); | 2023 layout_store->RegisterLayoutForDisplayIdPair(id2, id1, bad); |
| 2030 | 2024 |
| 2031 EXPECT_EQ(good.ToString(), layout_store->GetRegisteredDisplayLayout( | 2025 EXPECT_EQ(good.ToString(), layout_store->GetRegisteredDisplayLayout( |
| 2032 CreateDisplayIdPair(id1, id2)) | 2026 CreateDisplayIdPair(id1, id2)) |
| 2033 .ToString()); | 2027 .ToString()); |
| 2034 } | 2028 } |
| 2035 | 2029 |
| 2036 #endif // OS_CHROMEOS | 2030 #endif // OS_CHROMEOS |
| 2037 | 2031 |
| 2038 } // namespace ash | 2032 } // namespace ash |
| OLD | NEW |