Index: ash/display/display_manager_unittest.cc |
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc |
index b9ed83d8150c41228ea16cefbda3250af2070f82..775f3d5c9fbcb5d7999b643eccacfa8b790c56db 100644 |
--- a/ash/display/display_manager_unittest.cc |
+++ b/ash/display/display_manager_unittest.cc |
@@ -1381,6 +1381,48 @@ TEST_F(DisplayManagerTest, InvertLayout) { |
DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString()); |
} |
+TEST_F(DisplayManagerTest, NotifyPrimaryChange) { |
+ if (!SupportsMultipleDisplays()) |
+ return; |
+ UpdateDisplay("500x500,500x500"); |
+ ash::Shell::GetInstance()->display_controller()->SwapPrimaryDisplay(); |
+ reset(); |
+ UpdateDisplay("500x500"); |
+ EXPECT_FALSE(changed_metrics() & gfx::DisplayObserver::DISPLAY_METRIC_BOUNDS); |
+ EXPECT_FALSE(changed_metrics() & |
+ gfx::DisplayObserver::DISPLAY_METRIC_WORK_AREA); |
+ EXPECT_TRUE(changed_metrics() & |
+ gfx::DisplayObserver::DISPLAY_METRIC_PRIMARY); |
+ |
+ UpdateDisplay("500x500,500x500"); |
+ ash::Shell::GetInstance()->display_controller()->SwapPrimaryDisplay(); |
+ reset(); |
+ UpdateDisplay("500x400"); |
+ EXPECT_TRUE(changed_metrics() & gfx::DisplayObserver::DISPLAY_METRIC_BOUNDS); |
+ EXPECT_TRUE(changed_metrics() & |
+ gfx::DisplayObserver::DISPLAY_METRIC_WORK_AREA); |
+ EXPECT_TRUE(changed_metrics() & |
+ gfx::DisplayObserver::DISPLAY_METRIC_PRIMARY); |
+} |
+ |
+TEST_F(DisplayManagerTest, NotifyPrimaryChangeUndock) { |
+ if (!SupportsMultipleDisplays()) |
+ return; |
+ // Assume the default display is an external display, and |
+ // emulates undocking by switching to another display. |
+ DisplayInfo another_display_info = |
+ CreateDisplayInfo(1, gfx::Rect(0, 0, 1280, 800)); |
+ std::vector<DisplayInfo> info_list; |
+ info_list.push_back(another_display_info); |
+ reset(); |
+ display_manager()->OnNativeDisplaysChanged(info_list); |
+ EXPECT_TRUE(changed_metrics() & gfx::DisplayObserver::DISPLAY_METRIC_BOUNDS); |
+ EXPECT_TRUE(changed_metrics() & |
+ gfx::DisplayObserver::DISPLAY_METRIC_WORK_AREA); |
+ EXPECT_TRUE(changed_metrics() & |
+ gfx::DisplayObserver::DISPLAY_METRIC_PRIMARY); |
+} |
+ |
#if defined(OS_WIN) |
// TODO(scottmg): RootWindow doesn't get resized on Windows |
// Ash. http://crbug.com/247916. |