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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 } | 114 } |
115 void OnDisplayAdded(const gfx::Display& new_display) override { | 115 void OnDisplayAdded(const gfx::Display& new_display) override { |
116 added_.push_back(new_display); | 116 added_.push_back(new_display); |
117 } | 117 } |
118 void OnDisplayRemoved(const gfx::Display& old_display) override { | 118 void OnDisplayRemoved(const gfx::Display& old_display) override { |
119 ++removed_count_; | 119 ++removed_count_; |
120 } | 120 } |
121 | 121 |
122 // aura::WindowObserver overrides: | 122 // aura::WindowObserver overrides: |
123 void OnWindowDestroying(aura::Window* window) override { | 123 void OnWindowDestroying(aura::Window* window) override { |
124 ASSERT_EQ(Shell::GetPrimaryRootWindow(), window); | 124 // TODO(oshima): When moving between unified desktop, the |
125 root_window_destroyed_ = true; | 125 // primary root window can be deleted. |
| 126 if (!display_manager()->IsInUnifiedMode()) { |
| 127 ASSERT_EQ(Shell::GetPrimaryRootWindow(), window); |
| 128 root_window_destroyed_ = true; |
| 129 } |
126 } | 130 } |
127 | 131 |
128 private: | 132 private: |
129 vector<gfx::Display> changed_; | 133 vector<gfx::Display> changed_; |
130 vector<gfx::Display> added_; | 134 vector<gfx::Display> added_; |
131 size_t removed_count_; | 135 size_t removed_count_; |
132 bool root_window_destroyed_; | 136 bool root_window_destroyed_; |
133 uint32_t changed_metrics_; | 137 uint32_t changed_metrics_; |
134 | 138 |
135 DISALLOW_COPY_AND_ASSIGN(DisplayManagerTest); | 139 DISALLOW_COPY_AND_ASSIGN(DisplayManagerTest); |
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1200 | 1204 |
1201 UpdateDisplay("300x400,400x500"); | 1205 UpdateDisplay("300x400,400x500"); |
1202 | 1206 |
1203 test::MirrorWindowTestApi test_api; | 1207 test::MirrorWindowTestApi test_api; |
1204 EXPECT_EQ(NULL, test_api.GetHost()); | 1208 EXPECT_EQ(NULL, test_api.GetHost()); |
1205 | 1209 |
1206 TestDisplayObserver display_observer; | 1210 TestDisplayObserver display_observer; |
1207 Shell::GetScreen()->AddObserver(&display_observer); | 1211 Shell::GetScreen()->AddObserver(&display_observer); |
1208 | 1212 |
1209 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 1213 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
1210 display_manager->SetSecondDisplayMode(DisplayManager::MIRRORING); | 1214 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING); |
1211 display_manager->UpdateDisplays(); | 1215 display_manager->UpdateDisplays(); |
1212 RunAllPendingInMessageLoop(); | 1216 RunAllPendingInMessageLoop(); |
1213 EXPECT_TRUE(display_observer.changed_and_reset()); | 1217 EXPECT_TRUE(display_observer.changed_and_reset()); |
1214 EXPECT_EQ(1U, display_manager->GetNumDisplays()); | 1218 EXPECT_EQ(1U, display_manager->GetNumDisplays()); |
1215 EXPECT_EQ("0,0 300x400", | 1219 EXPECT_EQ("0,0 300x400", |
1216 Shell::GetScreen()->GetPrimaryDisplay().bounds().ToString()); | 1220 Shell::GetScreen()->GetPrimaryDisplay().bounds().ToString()); |
1217 EXPECT_EQ("400x500", test_api.GetHost()->GetBounds().size().ToString()); | 1221 EXPECT_EQ("400x500", test_api.GetHost()->GetBounds().size().ToString()); |
1218 EXPECT_EQ("300x400", | 1222 EXPECT_EQ("300x400", |
1219 test_api.GetHost()->window()->bounds().size().ToString()); | 1223 test_api.GetHost()->window()->bounds().size().ToString()); |
1220 EXPECT_TRUE(display_manager->IsInMirrorMode()); | 1224 EXPECT_TRUE(display_manager->IsInMirrorMode()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 | 1262 |
1259 Shell::GetScreen()->RemoveObserver(&display_observer); | 1263 Shell::GetScreen()->RemoveObserver(&display_observer); |
1260 } | 1264 } |
1261 | 1265 |
1262 TEST_F(DisplayManagerTest, SingleDisplayToSoftwareMirroring) { | 1266 TEST_F(DisplayManagerTest, SingleDisplayToSoftwareMirroring) { |
1263 if (!SupportsMultipleDisplays()) | 1267 if (!SupportsMultipleDisplays()) |
1264 return; | 1268 return; |
1265 UpdateDisplay("600x400"); | 1269 UpdateDisplay("600x400"); |
1266 | 1270 |
1267 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 1271 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
1268 display_manager->SetSecondDisplayMode(DisplayManager::MIRRORING); | 1272 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING); |
1269 UpdateDisplay("600x400,600x400"); | 1273 UpdateDisplay("600x400,600x400"); |
1270 | 1274 |
1271 EXPECT_TRUE(display_manager->IsInMirrorMode()); | 1275 EXPECT_TRUE(display_manager->IsInMirrorMode()); |
1272 EXPECT_EQ(1U, display_manager->GetNumDisplays()); | 1276 EXPECT_EQ(1U, display_manager->GetNumDisplays()); |
1273 DisplayController* display_controller = | 1277 DisplayController* display_controller = |
1274 ash::Shell::GetInstance()->display_controller(); | 1278 ash::Shell::GetInstance()->display_controller(); |
1275 EXPECT_TRUE(display_controller->mirror_window_controller()->GetWindow()); | 1279 EXPECT_TRUE(display_controller->mirror_window_controller()->GetWindow()); |
1276 | 1280 |
1277 UpdateDisplay("600x400"); | 1281 UpdateDisplay("600x400"); |
1278 EXPECT_FALSE(display_manager->IsInMirrorMode()); | 1282 EXPECT_FALSE(display_manager->IsInMirrorMode()); |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1451 EXPECT_EQ("300x400", host1->GetBounds().size().ToString()); | 1455 EXPECT_EQ("300x400", host1->GetBounds().size().ToString()); |
1452 | 1456 |
1453 UpdateDisplay("100+200-100x200,300+500-200x300"); | 1457 UpdateDisplay("100+200-100x200,300+500-200x300"); |
1454 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 1458 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
1455 EXPECT_EQ("100,200", host0->GetBounds().origin().ToString()); | 1459 EXPECT_EQ("100,200", host0->GetBounds().origin().ToString()); |
1456 EXPECT_EQ("100x200", host0->GetBounds().size().ToString()); | 1460 EXPECT_EQ("100x200", host0->GetBounds().size().ToString()); |
1457 EXPECT_EQ("300,500", host1->GetBounds().origin().ToString()); | 1461 EXPECT_EQ("300,500", host1->GetBounds().origin().ToString()); |
1458 EXPECT_EQ("200x300", host1->GetBounds().size().ToString()); | 1462 EXPECT_EQ("200x300", host1->GetBounds().size().ToString()); |
1459 } | 1463 } |
1460 | 1464 |
| 1465 #if !defined(OS_WIN) && defined(USE_X11) |
| 1466 |
| 1467 TEST_F(DisplayManagerTest, UnifiedDesktopBasic) { |
| 1468 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::UNIFIED); |
| 1469 display_manager()->SetMultiDisplayMode(DisplayManager::UNIFIED); |
| 1470 UpdateDisplay("300x200,400x500"); |
| 1471 |
| 1472 gfx::Screen* screen = |
| 1473 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); |
| 1474 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1475 |
| 1476 display_manager()->SetMirrorMode(true); |
| 1477 EXPECT_EQ("300x200", screen->GetPrimaryDisplay().size().ToString()); |
| 1478 |
| 1479 display_manager()->SetMirrorMode(false); |
| 1480 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1481 |
| 1482 // Swithc to single desktop. |
| 1483 UpdateDisplay("500x300"); |
| 1484 EXPECT_EQ("500x300", screen->GetPrimaryDisplay().size().ToString()); |
| 1485 |
| 1486 // Swithc to unified desktop. |
| 1487 UpdateDisplay("500x300,400x500"); |
| 1488 EXPECT_EQ("900x500", screen->GetPrimaryDisplay().size().ToString()); |
| 1489 } |
| 1490 |
| 1491 #endif |
| 1492 |
1461 class ScreenShutdownTest : public test::AshTestBase { | 1493 class ScreenShutdownTest : public test::AshTestBase { |
1462 public: | 1494 public: |
1463 ScreenShutdownTest() { | 1495 ScreenShutdownTest() { |
1464 } | 1496 } |
1465 ~ScreenShutdownTest() override {} | 1497 ~ScreenShutdownTest() override {} |
1466 | 1498 |
1467 void TearDown() override { | 1499 void TearDown() override { |
1468 gfx::Screen* orig_screen = | 1500 gfx::Screen* orig_screen = |
1469 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); | 1501 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); |
1470 AshTestBase::TearDown(); | 1502 AshTestBase::TearDown(); |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1612 1.25f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); | 1644 1.25f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
1613 EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); | 1645 EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); |
1614 EXPECT_EQ(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); | 1646 EXPECT_EQ(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); |
1615 | 1647 |
1616 DisplayInfo::SetUse125DSFForUIScaling(false); | 1648 DisplayInfo::SetUse125DSFForUIScaling(false); |
1617 } | 1649 } |
1618 | 1650 |
1619 #endif // OS_CHROMEOS | 1651 #endif // OS_CHROMEOS |
1620 | 1652 |
1621 } // namespace ash | 1653 } // namespace ash |
OLD | NEW |