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

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

Issue 1107733006: Unified Desktop: hook up ash to allow unified desktop mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
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/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
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 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 display_info_list.clear(); 626 display_info_list.clear();
623 display_info_list.push_back(external_display_info); 627 display_info_list.push_back(external_display_info);
624 display_manager()->OnNativeDisplaysChanged(display_info_list); 628 display_manager()->OnNativeDisplaysChanged(display_info_list);
625 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 629 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
626 EXPECT_EQ(invalid_id, GetDisplayForId(internal_display_id).id()); 630 EXPECT_EQ(invalid_id, GetDisplayForId(internal_display_id).id());
627 EXPECT_EQ("1,1 100x100", 631 EXPECT_EQ("1,1 100x100",
628 GetDisplayInfoForId(external_id).bounds_in_native().ToString()); 632 GetDisplayInfoForId(external_id).bounds_in_native().ToString());
629 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 633 EXPECT_EQ(1U, display_manager()->num_connected_displays());
630 EXPECT_FALSE(display_manager()->IsInMirrorMode()); 634 EXPECT_FALSE(display_manager()->IsInMirrorMode());
631 635
636 LOG(ERROR) << "============";
632 // Switched to another display 637 // Switched to another display
633 display_info_list.clear(); 638 display_info_list.clear();
634 display_info_list.push_back(internal_display_info); 639 display_info_list.push_back(internal_display_info);
635 display_manager()->OnNativeDisplaysChanged(display_info_list); 640 display_manager()->OnNativeDisplaysChanged(display_info_list);
636 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 641 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
637 EXPECT_EQ( 642 EXPECT_EQ(
638 "0,0 500x500", 643 "0,0 500x500",
639 GetDisplayInfoForId(internal_display_id).bounds_in_native().ToString()); 644 GetDisplayInfoForId(internal_display_id).bounds_in_native().ToString());
640 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 645 EXPECT_EQ(1U, display_manager()->num_connected_displays());
641 EXPECT_FALSE(display_manager()->IsInMirrorMode()); 646 EXPECT_FALSE(display_manager()->IsInMirrorMode());
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 1205
1201 UpdateDisplay("300x400,400x500"); 1206 UpdateDisplay("300x400,400x500");
1202 1207
1203 test::MirrorWindowTestApi test_api; 1208 test::MirrorWindowTestApi test_api;
1204 EXPECT_EQ(NULL, test_api.GetHost()); 1209 EXPECT_EQ(NULL, test_api.GetHost());
1205 1210
1206 TestDisplayObserver display_observer; 1211 TestDisplayObserver display_observer;
1207 Shell::GetScreen()->AddObserver(&display_observer); 1212 Shell::GetScreen()->AddObserver(&display_observer);
1208 1213
1209 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 1214 DisplayManager* display_manager = Shell::GetInstance()->display_manager();
1210 display_manager->SetSecondDisplayMode(DisplayManager::MIRRORING); 1215 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING);
1211 display_manager->UpdateDisplays(); 1216 display_manager->UpdateDisplays();
1212 RunAllPendingInMessageLoop(); 1217 RunAllPendingInMessageLoop();
1213 EXPECT_TRUE(display_observer.changed_and_reset()); 1218 EXPECT_TRUE(display_observer.changed_and_reset());
1214 EXPECT_EQ(1U, display_manager->GetNumDisplays()); 1219 EXPECT_EQ(1U, display_manager->GetNumDisplays());
1215 EXPECT_EQ("0,0 300x400", 1220 EXPECT_EQ("0,0 300x400",
1216 Shell::GetScreen()->GetPrimaryDisplay().bounds().ToString()); 1221 Shell::GetScreen()->GetPrimaryDisplay().bounds().ToString());
1217 EXPECT_EQ("400x500", test_api.GetHost()->GetBounds().size().ToString()); 1222 EXPECT_EQ("400x500", test_api.GetHost()->GetBounds().size().ToString());
1218 EXPECT_EQ("300x400", 1223 EXPECT_EQ("300x400",
1219 test_api.GetHost()->window()->bounds().size().ToString()); 1224 test_api.GetHost()->window()->bounds().size().ToString());
1220 EXPECT_TRUE(display_manager->IsInMirrorMode()); 1225 EXPECT_TRUE(display_manager->IsInMirrorMode());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1258 1263
1259 Shell::GetScreen()->RemoveObserver(&display_observer); 1264 Shell::GetScreen()->RemoveObserver(&display_observer);
1260 } 1265 }
1261 1266
1262 TEST_F(DisplayManagerTest, SingleDisplayToSoftwareMirroring) { 1267 TEST_F(DisplayManagerTest, SingleDisplayToSoftwareMirroring) {
1263 if (!SupportsMultipleDisplays()) 1268 if (!SupportsMultipleDisplays())
1264 return; 1269 return;
1265 UpdateDisplay("600x400"); 1270 UpdateDisplay("600x400");
1266 1271
1267 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 1272 DisplayManager* display_manager = Shell::GetInstance()->display_manager();
1268 display_manager->SetSecondDisplayMode(DisplayManager::MIRRORING); 1273 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING);
1269 UpdateDisplay("600x400,600x400"); 1274 UpdateDisplay("600x400,600x400");
1270 1275
1271 EXPECT_TRUE(display_manager->IsInMirrorMode()); 1276 EXPECT_TRUE(display_manager->IsInMirrorMode());
1272 EXPECT_EQ(1U, display_manager->GetNumDisplays()); 1277 EXPECT_EQ(1U, display_manager->GetNumDisplays());
1273 DisplayController* display_controller = 1278 DisplayController* display_controller =
1274 ash::Shell::GetInstance()->display_controller(); 1279 ash::Shell::GetInstance()->display_controller();
1275 EXPECT_TRUE(display_controller->mirror_window_controller()->GetWindow()); 1280 EXPECT_TRUE(display_controller->mirror_window_controller()->GetWindow());
1276 1281
1277 UpdateDisplay("600x400"); 1282 UpdateDisplay("600x400");
1278 EXPECT_FALSE(display_manager->IsInMirrorMode()); 1283 EXPECT_FALSE(display_manager->IsInMirrorMode());
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
1451 EXPECT_EQ("300x400", host1->GetBounds().size().ToString()); 1456 EXPECT_EQ("300x400", host1->GetBounds().size().ToString());
1452 1457
1453 UpdateDisplay("100+200-100x200,300+500-200x300"); 1458 UpdateDisplay("100+200-100x200,300+500-200x300");
1454 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); 1459 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
1455 EXPECT_EQ("100,200", host0->GetBounds().origin().ToString()); 1460 EXPECT_EQ("100,200", host0->GetBounds().origin().ToString());
1456 EXPECT_EQ("100x200", host0->GetBounds().size().ToString()); 1461 EXPECT_EQ("100x200", host0->GetBounds().size().ToString());
1457 EXPECT_EQ("300,500", host1->GetBounds().origin().ToString()); 1462 EXPECT_EQ("300,500", host1->GetBounds().origin().ToString());
1458 EXPECT_EQ("200x300", host1->GetBounds().size().ToString()); 1463 EXPECT_EQ("200x300", host1->GetBounds().size().ToString());
1459 } 1464 }
1460 1465
1466 #if !defined(OS_WIN) && defined(USE_X11)
1467
1468 TEST_F(DisplayManagerTest, UnifiedDesktopBasic) {
1469 display_manager()->SetDefaultMultiDisplayMode(DisplayManager::UNIFIED);
1470 display_manager()->SetMultiDisplayMode(DisplayManager::UNIFIED);
1471 UpdateDisplay("300x200,400x500");
1472
1473 gfx::Screen* screen =
1474 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE);
1475 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString());
1476
1477 display_manager()->SetMirrorMode(true);
1478 EXPECT_EQ("300x200", screen->GetPrimaryDisplay().size().ToString());
1479
1480 display_manager()->SetMirrorMode(false);
1481 EXPECT_EQ("700x500", screen->GetPrimaryDisplay().size().ToString());
1482 }
1483
1484 #endif
1485
1461 class ScreenShutdownTest : public test::AshTestBase { 1486 class ScreenShutdownTest : public test::AshTestBase {
1462 public: 1487 public:
1463 ScreenShutdownTest() { 1488 ScreenShutdownTest() {
1464 } 1489 }
1465 ~ScreenShutdownTest() override {} 1490 ~ScreenShutdownTest() override {}
1466 1491
1467 void TearDown() override { 1492 void TearDown() override {
1468 gfx::Screen* orig_screen = 1493 gfx::Screen* orig_screen =
1469 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); 1494 gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE);
1470 AshTestBase::TearDown(); 1495 AshTestBase::TearDown();
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1612 1.25f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor()); 1637 1.25f, Shell::GetScreen()->GetPrimaryDisplay().device_scale_factor());
1613 EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); 1638 EXPECT_TRUE(IsTextSubpixelPositioningEnabled());
1614 EXPECT_EQ(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); 1639 EXPECT_EQ(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams());
1615 1640
1616 DisplayInfo::SetUse125DSFForUIScaling(false); 1641 DisplayInfo::SetUse125DSFForUIScaling(false);
1617 } 1642 }
1618 1643
1619 #endif // OS_CHROMEOS 1644 #endif // OS_CHROMEOS
1620 1645
1621 } // namespace ash 1646 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698