| 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/ash_switches.h" | 7 #include "ash/ash_switches.h" |
| 8 #include "ash/display/display_controller.h" | 8 #include "ash/display/display_controller.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 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 } | 116 } |
| 117 void OnDisplayAdded(const gfx::Display& new_display) override { | 117 void OnDisplayAdded(const gfx::Display& new_display) override { |
| 118 added_.push_back(new_display); | 118 added_.push_back(new_display); |
| 119 } | 119 } |
| 120 void OnDisplayRemoved(const gfx::Display& old_display) override { | 120 void OnDisplayRemoved(const gfx::Display& old_display) override { |
| 121 ++removed_count_; | 121 ++removed_count_; |
| 122 } | 122 } |
| 123 | 123 |
| 124 // aura::WindowObserver overrides: | 124 // aura::WindowObserver overrides: |
| 125 void OnWindowDestroying(aura::Window* window) override { | 125 void OnWindowDestroying(aura::Window* window) override { |
| 126 // TODO(oshima): When moving between unified desktop, the | 126 ASSERT_EQ(Shell::GetPrimaryRootWindow(), window); |
| 127 // primary root window can be deleted. | 127 root_window_destroyed_ = true; |
| 128 if (!display_manager()->IsInUnifiedMode()) { | |
| 129 ASSERT_EQ(Shell::GetPrimaryRootWindow(), window); | |
| 130 root_window_destroyed_ = true; | |
| 131 } | |
| 132 } | 128 } |
| 133 | 129 |
| 134 private: | 130 private: |
| 135 vector<gfx::Display> changed_; | 131 vector<gfx::Display> changed_; |
| 136 vector<gfx::Display> added_; | 132 vector<gfx::Display> added_; |
| 137 size_t removed_count_; | 133 size_t removed_count_; |
| 138 bool root_window_destroyed_; | 134 bool root_window_destroyed_; |
| 139 uint32_t changed_metrics_; | 135 uint32_t changed_metrics_; |
| 140 | 136 |
| 141 DISALLOW_COPY_AND_ASSIGN(DisplayManagerTest); | 137 DISALLOW_COPY_AND_ASSIGN(DisplayManagerTest); |
| (...skipping 1318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1460 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 1456 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
| 1461 EXPECT_EQ("100,200", host0->GetBounds().origin().ToString()); | 1457 EXPECT_EQ("100,200", host0->GetBounds().origin().ToString()); |
| 1462 EXPECT_EQ("100x200", host0->GetBounds().size().ToString()); | 1458 EXPECT_EQ("100x200", host0->GetBounds().size().ToString()); |
| 1463 EXPECT_EQ("300,500", host1->GetBounds().origin().ToString()); | 1459 EXPECT_EQ("300,500", host1->GetBounds().origin().ToString()); |
| 1464 EXPECT_EQ("200x300", host1->GetBounds().size().ToString()); | 1460 EXPECT_EQ("200x300", host1->GetBounds().size().ToString()); |
| 1465 } | 1461 } |
| 1466 | 1462 |
| 1467 TEST_F(DisplayManagerTest, UnifiedDesktopBasic) { | 1463 TEST_F(DisplayManagerTest, UnifiedDesktopBasic) { |
| 1468 if (!SupportsMultipleDisplays()) | 1464 if (!SupportsMultipleDisplays()) |
| 1469 return; | 1465 return; |
| 1466 // Don't check root window destruction in unified mode. |
| 1467 Shell::GetPrimaryRootWindow()->RemoveObserver(this); |
| 1470 | 1468 |
| 1469 UpdateDisplay("300x200,400x500"); |
| 1470 |
| 1471 // Switch to unified desktop. |
| 1471 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::UNIFIED); | 1472 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::UNIFIED); |
| 1472 display_manager()->SetMultiDisplayMode(DisplayManager::UNIFIED); | 1473 display_manager()->ReconfigureDisplays(); |
| 1473 UpdateDisplay("300x200,400x500"); | |
| 1474 | 1474 |
| 1475 gfx::Screen* screen = | 1475 gfx::Screen* screen = |
| 1476 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); | 1476 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); |
| 1477 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString()); | 1477 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1478 | 1478 |
| 1479 display_manager()->SetMirrorMode(true); | 1479 display_manager()->SetMirrorMode(true); |
| 1480 EXPECT_EQ("300x200", screen->GetPrimaryDisplay().size().ToString()); | 1480 EXPECT_EQ("300x200", screen->GetPrimaryDisplay().size().ToString()); |
| 1481 | 1481 |
| 1482 display_manager()->SetMirrorMode(false); | 1482 display_manager()->SetMirrorMode(false); |
| 1483 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString()); | 1483 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1484 | 1484 |
| 1485 // Swithc to single desktop. | 1485 // Switch to single desktop. |
| 1486 UpdateDisplay("500x300"); | 1486 UpdateDisplay("500x300"); |
| 1487 EXPECT_EQ("500x300", screen->GetPrimaryDisplay().size().ToString()); | 1487 EXPECT_EQ("500x300", screen->GetPrimaryDisplay().size().ToString()); |
| 1488 | 1488 |
| 1489 // Swithc to unified desktop. | 1489 // Switch to unified desktop. |
| 1490 UpdateDisplay("500x300,400x500"); | 1490 UpdateDisplay("500x300,400x500"); |
| 1491 EXPECT_EQ("900x500", screen->GetPrimaryDisplay().size().ToString()); | 1491 EXPECT_EQ("900x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1492 |
| 1493 // Switch back to extended desktop. |
| 1494 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::EXTENDED); |
| 1495 display_manager()->ReconfigureDisplays(); |
| 1496 EXPECT_EQ("500x300", screen->GetPrimaryDisplay().size().ToString()); |
| 1497 EXPECT_EQ("400x500", ScreenUtil::GetSecondaryDisplay().size().ToString()); |
| 1492 } | 1498 } |
| 1493 | 1499 |
| 1494 TEST_F(DisplayManagerTest, RotateUnifiedDesktop) { | 1500 TEST_F(DisplayManagerTest, RotateUnifiedDesktop) { |
| 1495 if (!SupportsMultipleDisplays()) | 1501 if (!SupportsMultipleDisplays()) |
| 1496 return; | 1502 return; |
| 1503 // Don't check root window destruction in unified mode. |
| 1504 Shell::GetPrimaryRootWindow()->RemoveObserver(this); |
| 1497 | 1505 |
| 1498 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::UNIFIED); | 1506 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::UNIFIED); |
| 1499 display_manager()->SetMultiDisplayMode(DisplayManager::UNIFIED); | 1507 display_manager()->SetMultiDisplayMode(DisplayManager::UNIFIED); |
| 1500 UpdateDisplay("300x200,400x500"); | 1508 UpdateDisplay("300x200,400x500"); |
| 1501 | 1509 |
| 1502 gfx::Screen* screen = | 1510 gfx::Screen* screen = |
| 1503 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); | 1511 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); |
| 1504 const gfx::Display& display = screen->GetPrimaryDisplay(); | 1512 const gfx::Display& display = screen->GetPrimaryDisplay(); |
| 1505 EXPECT_EQ("700x500", display.size().ToString()); | 1513 EXPECT_EQ("700x500", display.size().ToString()); |
| 1506 display_manager()->SetDisplayRotation(display.id(), gfx::Display::ROTATE_90, | 1514 display_manager()->SetDisplayRotation(display.id(), gfx::Display::ROTATE_90, |
| 1507 gfx::Display::ROTATION_SOURCE_ACTIVE); | 1515 gfx::Display::ROTATION_SOURCE_ACTIVE); |
| 1508 EXPECT_EQ("500x700", screen->GetPrimaryDisplay().size().ToString()); | 1516 EXPECT_EQ("500x700", screen->GetPrimaryDisplay().size().ToString()); |
| 1509 display_manager()->SetDisplayRotation(display.id(), gfx::Display::ROTATE_0, | 1517 display_manager()->SetDisplayRotation(display.id(), gfx::Display::ROTATE_0, |
| 1510 gfx::Display::ROTATION_SOURCE_ACTIVE); | 1518 gfx::Display::ROTATION_SOURCE_ACTIVE); |
| 1511 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString()); | 1519 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1512 | 1520 |
| 1513 UpdateDisplay("300x200"); | 1521 UpdateDisplay("300x200"); |
| 1514 EXPECT_EQ("300x200", screen->GetPrimaryDisplay().size().ToString()); | 1522 EXPECT_EQ("300x200", screen->GetPrimaryDisplay().size().ToString()); |
| 1515 } | 1523 } |
| 1516 | 1524 |
| 1517 // Makes sure the transition from unified to single won't crash | 1525 // Makes sure the transition from unified to single won't crash |
| 1518 // with docked wnidows. | 1526 // with docked wnidows. |
| 1519 TEST_F(DisplayManagerTest, UnifiedWithDockWindows) { | 1527 TEST_F(DisplayManagerTest, UnifiedWithDockWindows) { |
| 1520 if (!SupportsMultipleDisplays()) | 1528 if (!SupportsMultipleDisplays()) |
| 1521 return; | 1529 return; |
| 1530 // Don't check root window destruction in unified mode. |
| 1531 Shell::GetPrimaryRootWindow()->RemoveObserver(this); |
| 1522 | 1532 |
| 1523 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::UNIFIED); | 1533 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::UNIFIED); |
| 1524 display_manager()->SetMultiDisplayMode(DisplayManager::UNIFIED); | 1534 display_manager()->SetMultiDisplayMode(DisplayManager::UNIFIED); |
| 1525 UpdateDisplay("300x200,400x500"); | 1535 UpdateDisplay("300x200,400x500"); |
| 1526 | 1536 |
| 1527 scoped_ptr<aura::Window> docked( | 1537 scoped_ptr<aura::Window> docked( |
| 1528 CreateTestWindowInShellWithBounds(gfx::Rect(10, 10, 50, 50))); | 1538 CreateTestWindowInShellWithBounds(gfx::Rect(10, 10, 50, 50))); |
| 1529 docked->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_DOCKED); | 1539 docked->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_DOCKED); |
| 1530 ASSERT_TRUE(wm::GetWindowState(docked.get())->IsDocked()); | 1540 ASSERT_TRUE(wm::GetWindowState(docked.get())->IsDocked()); |
| 1531 EXPECT_EQ("0,0 250x453", docked->bounds().ToString()); | 1541 EXPECT_EQ("0,0 250x453", docked->bounds().ToString()); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1689 1.25f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); | 1699 1.25f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
| 1690 EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); | 1700 EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); |
| 1691 EXPECT_EQ(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); | 1701 EXPECT_EQ(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); |
| 1692 | 1702 |
| 1693 DisplayInfo::SetUse125DSFForUIScaling(false); | 1703 DisplayInfo::SetUse125DSFForUIScaling(false); |
| 1694 } | 1704 } |
| 1695 | 1705 |
| 1696 #endif // OS_CHROMEOS | 1706 #endif // OS_CHROMEOS |
| 1697 | 1707 |
| 1698 } // namespace ash | 1708 } // namespace ash |
| OLD | NEW |