| 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_builder.h" | |
| 11 #include "ash/display/display_layout_store.h" | 10 #include "ash/display/display_layout_store.h" |
| 12 #include "ash/display/display_util.h" | 11 #include "ash/display/display_util.h" |
| 13 #include "ash/display/mirror_window_controller.h" | 12 #include "ash/display/mirror_window_controller.h" |
| 14 #include "ash/display/window_tree_host_manager.h" | 13 #include "ash/display/window_tree_host_manager.h" |
| 15 #include "ash/screen_util.h" | 14 #include "ash/screen_util.h" |
| 16 #include "ash/shell.h" | 15 #include "ash/shell.h" |
| 17 #include "ash/test/ash_test_base.h" | 16 #include "ash/test/ash_test_base.h" |
| 18 #include "ash/test/display_manager_test_api.h" | 17 #include "ash/test/display_manager_test_api.h" |
| 19 #include "ash/test/mirror_window_test_api.h" | 18 #include "ash/test/mirror_window_test_api.h" |
| 20 #include "ash/wm/window_state.h" | 19 #include "ash/wm/window_state.h" |
| 21 #include "base/command_line.h" | 20 #include "base/command_line.h" |
| 22 #include "base/format_macros.h" | 21 #include "base/format_macros.h" |
| 23 #include "base/strings/string_number_conversions.h" | 22 #include "base/strings/string_number_conversions.h" |
| 24 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
| 25 #include "ui/aura/client/aura_constants.h" | 24 #include "ui/aura/client/aura_constants.h" |
| 26 #include "ui/aura/env.h" | 25 #include "ui/aura/env.h" |
| 27 #include "ui/aura/window_observer.h" | 26 #include "ui/aura/window_observer.h" |
| 28 #include "ui/aura/window_tree_host.h" | 27 #include "ui/aura/window_tree_host.h" |
| 28 #include "ui/display/manager/display_layout_builder.h" |
| 29 #include "ui/events/test/event_generator.h" | 29 #include "ui/events/test/event_generator.h" |
| 30 #include "ui/gfx/display.h" | 30 #include "ui/gfx/display.h" |
| 31 #include "ui/gfx/display_observer.h" | 31 #include "ui/gfx/display_observer.h" |
| 32 #include "ui/gfx/font_render_params.h" | 32 #include "ui/gfx/font_render_params.h" |
| 33 #include "ui/gfx/screen.h" | 33 #include "ui/gfx/screen.h" |
| 34 | 34 |
| 35 namespace ash { | 35 namespace ash { |
| 36 | 36 |
| 37 using std::vector; | 37 using std::vector; |
| 38 using std::string; | 38 using std::string; |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 // Verify calling ReconfigureDisplays doesn't change anything. | 307 // Verify calling ReconfigureDisplays doesn't change anything. |
| 308 display_manager()->ReconfigureDisplays(); | 308 display_manager()->ReconfigureDisplays(); |
| 309 EXPECT_EQ(3U, display_manager()->GetNumDisplays()); | 309 EXPECT_EQ(3U, display_manager()->GetNumDisplays()); |
| 310 EXPECT_EQ("0,0 640x480", | 310 EXPECT_EQ("0,0 640x480", |
| 311 display_manager()->GetDisplayAt(0).bounds().ToString()); | 311 display_manager()->GetDisplayAt(0).bounds().ToString()); |
| 312 EXPECT_EQ("640,0 320x200", | 312 EXPECT_EQ("640,0 320x200", |
| 313 display_manager()->GetDisplayAt(1).bounds().ToString()); | 313 display_manager()->GetDisplayAt(1).bounds().ToString()); |
| 314 EXPECT_EQ("960,0 400x300", | 314 EXPECT_EQ("960,0 400x300", |
| 315 display_manager()->GetDisplayAt(2).bounds().ToString()); | 315 display_manager()->GetDisplayAt(2).bounds().ToString()); |
| 316 | 316 |
| 317 DisplayPlacement default_placement(DisplayPlacement::BOTTOM, 10); | 317 display::DisplayPlacement default_placement(display::DisplayPlacement::BOTTOM, |
| 318 10); |
| 318 display_manager()->layout_store()->SetDefaultDisplayPlacement( | 319 display_manager()->layout_store()->SetDefaultDisplayPlacement( |
| 319 default_placement); | 320 default_placement); |
| 320 | 321 |
| 321 // Test with new displays. | 322 // Test with new displays. |
| 322 UpdateDisplay("640x480"); | 323 UpdateDisplay("640x480"); |
| 323 UpdateDisplay("640x480,320x200,400x300"); | 324 UpdateDisplay("640x480,320x200,400x300"); |
| 324 | 325 |
| 325 EXPECT_EQ("0,0 640x480", | 326 EXPECT_EQ("0,0 640x480", |
| 326 display_manager()->GetDisplayAt(0).bounds().ToString()); | 327 display_manager()->GetDisplayAt(0).bounds().ToString()); |
| 327 EXPECT_EQ("10,480 320x200", | 328 EXPECT_EQ("10,480 320x200", |
| 328 display_manager()->GetDisplayAt(1).bounds().ToString()); | 329 display_manager()->GetDisplayAt(1).bounds().ToString()); |
| 329 EXPECT_EQ("20,680 400x300", | 330 EXPECT_EQ("20,680 400x300", |
| 330 display_manager()->GetDisplayAt(2).bounds().ToString()); | 331 display_manager()->GetDisplayAt(2).bounds().ToString()); |
| 331 } | 332 } |
| 332 | 333 |
| 333 TEST_F(DisplayManagerTest, LayoutMorethanThreeDisplaysTest) { | 334 TEST_F(DisplayManagerTest, LayoutMorethanThreeDisplaysTest) { |
| 334 if (!SupportsMultipleDisplays()) | 335 if (!SupportsMultipleDisplays()) |
| 335 return; | 336 return; |
| 336 | 337 |
| 337 int64_t primary_id = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 338 int64_t primary_id = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| 338 DisplayIdList list = ash::test::CreateDisplayIdListN( | 339 display::DisplayIdList list = ash::test::CreateDisplayIdListN( |
| 339 3, primary_id, primary_id + 1, primary_id + 2); | 340 3, primary_id, primary_id + 1, primary_id + 2); |
| 340 { | 341 { |
| 341 // Layout: [2] | 342 // Layout: [2] |
| 342 // [1][P] | 343 // [1][P] |
| 343 DisplayLayoutBuilder builder(primary_id); | 344 display::DisplayLayoutBuilder builder(primary_id); |
| 344 builder.AddDisplayPlacement(list[1], primary_id, DisplayPlacement::LEFT, | 345 builder.AddDisplayPlacement(list[1], primary_id, |
| 345 10); | 346 display::DisplayPlacement::LEFT, 10); |
| 346 builder.AddDisplayPlacement(list[2], list[1], DisplayPlacement::TOP, 10); | 347 builder.AddDisplayPlacement(list[2], list[1], |
| 348 display::DisplayPlacement::TOP, 10); |
| 347 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 349 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 348 list, builder.Build()); | 350 list, builder.Build()); |
| 349 | 351 |
| 350 UpdateDisplay("640x480,320x200,400x300"); | 352 UpdateDisplay("640x480,320x200,400x300"); |
| 351 | 353 |
| 352 EXPECT_EQ(3U, display_manager()->GetNumDisplays()); | 354 EXPECT_EQ(3U, display_manager()->GetNumDisplays()); |
| 353 | 355 |
| 354 EXPECT_EQ("0,0 640x480", | 356 EXPECT_EQ("0,0 640x480", |
| 355 display_manager()->GetDisplayAt(0).bounds().ToString()); | 357 display_manager()->GetDisplayAt(0).bounds().ToString()); |
| 356 EXPECT_EQ("-320,10 320x200", | 358 EXPECT_EQ("-320,10 320x200", |
| 357 display_manager()->GetDisplayAt(1).bounds().ToString()); | 359 display_manager()->GetDisplayAt(1).bounds().ToString()); |
| 358 EXPECT_EQ("-310,-290 400x300", | 360 EXPECT_EQ("-310,-290 400x300", |
| 359 display_manager()->GetDisplayAt(2).bounds().ToString()); | 361 display_manager()->GetDisplayAt(2).bounds().ToString()); |
| 360 } | 362 } |
| 361 { | 363 { |
| 362 // Layout: [1] | 364 // Layout: [1] |
| 363 // [P][2] | 365 // [P][2] |
| 364 DisplayLayoutBuilder builder(primary_id); | 366 display::DisplayLayoutBuilder builder(primary_id); |
| 365 builder.AddDisplayPlacement(list[1], primary_id, DisplayPlacement::TOP, 10); | 367 builder.AddDisplayPlacement(list[1], primary_id, |
| 366 builder.AddDisplayPlacement(list[2], primary_id, DisplayPlacement::RIGHT, | 368 display::DisplayPlacement::TOP, 10); |
| 367 10); | 369 builder.AddDisplayPlacement(list[2], primary_id, |
| 370 display::DisplayPlacement::RIGHT, 10); |
| 368 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 371 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 369 list, builder.Build()); | 372 list, builder.Build()); |
| 370 | 373 |
| 371 UpdateDisplay("640x480,320x200,400x300"); | 374 UpdateDisplay("640x480,320x200,400x300"); |
| 372 | 375 |
| 373 EXPECT_EQ(3U, display_manager()->GetNumDisplays()); | 376 EXPECT_EQ(3U, display_manager()->GetNumDisplays()); |
| 374 | 377 |
| 375 EXPECT_EQ("0,0 640x480", | 378 EXPECT_EQ("0,0 640x480", |
| 376 display_manager()->GetDisplayAt(0).bounds().ToString()); | 379 display_manager()->GetDisplayAt(0).bounds().ToString()); |
| 377 EXPECT_EQ("10,-200 320x200", | 380 EXPECT_EQ("10,-200 320x200", |
| 378 display_manager()->GetDisplayAt(1).bounds().ToString()); | 381 display_manager()->GetDisplayAt(1).bounds().ToString()); |
| 379 EXPECT_EQ("640,10 400x300", | 382 EXPECT_EQ("640,10 400x300", |
| 380 display_manager()->GetDisplayAt(2).bounds().ToString()); | 383 display_manager()->GetDisplayAt(2).bounds().ToString()); |
| 381 } | 384 } |
| 382 { | 385 { |
| 383 // Layout: [P] | 386 // Layout: [P] |
| 384 // [2] | 387 // [2] |
| 385 // [1] | 388 // [1] |
| 386 DisplayLayoutBuilder builder(primary_id); | 389 display::DisplayLayoutBuilder builder(primary_id); |
| 387 builder.AddDisplayPlacement(list[1], list[2], DisplayPlacement::BOTTOM, 10); | 390 builder.AddDisplayPlacement(list[1], list[2], |
| 388 builder.AddDisplayPlacement(list[2], primary_id, DisplayPlacement::BOTTOM, | 391 display::DisplayPlacement::BOTTOM, 10); |
| 389 10); | 392 builder.AddDisplayPlacement(list[2], primary_id, |
| 393 display::DisplayPlacement::BOTTOM, 10); |
| 390 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 394 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 391 list, builder.Build()); | 395 list, builder.Build()); |
| 392 | 396 |
| 393 UpdateDisplay("640x480,320x200,400x300"); | 397 UpdateDisplay("640x480,320x200,400x300"); |
| 394 | 398 |
| 395 EXPECT_EQ(3U, display_manager()->GetNumDisplays()); | 399 EXPECT_EQ(3U, display_manager()->GetNumDisplays()); |
| 396 | 400 |
| 397 EXPECT_EQ("0,0 640x480", | 401 EXPECT_EQ("0,0 640x480", |
| 398 display_manager()->GetDisplayAt(0).bounds().ToString()); | 402 display_manager()->GetDisplayAt(0).bounds().ToString()); |
| 399 EXPECT_EQ("20,780 320x200", | 403 EXPECT_EQ("20,780 320x200", |
| 400 display_manager()->GetDisplayAt(1).bounds().ToString()); | 404 display_manager()->GetDisplayAt(1).bounds().ToString()); |
| 401 EXPECT_EQ("10,480 400x300", | 405 EXPECT_EQ("10,480 400x300", |
| 402 display_manager()->GetDisplayAt(2).bounds().ToString()); | 406 display_manager()->GetDisplayAt(2).bounds().ToString()); |
| 403 } | 407 } |
| 404 | 408 |
| 405 { | 409 { |
| 406 list = ash::test::CreateDisplayIdListN(5, primary_id, primary_id + 1, | 410 list = ash::test::CreateDisplayIdListN(5, primary_id, primary_id + 1, |
| 407 primary_id + 2, primary_id + 3, | 411 primary_id + 2, primary_id + 3, |
| 408 primary_id + 4); | 412 primary_id + 4); |
| 409 // Layout: [P][2] | 413 // Layout: [P][2] |
| 410 // [3][4] | 414 // [3][4] |
| 411 // [1] | 415 // [1] |
| 412 DisplayLayoutBuilder builder(primary_id); | 416 display::DisplayLayoutBuilder builder(primary_id); |
| 413 builder.AddDisplayPlacement(list[2], primary_id, DisplayPlacement::RIGHT, | 417 builder.AddDisplayPlacement(list[2], primary_id, |
| 414 10); | 418 display::DisplayPlacement::RIGHT, 10); |
| 415 builder.AddDisplayPlacement(list[1], list[3], DisplayPlacement::BOTTOM, 10); | 419 builder.AddDisplayPlacement(list[1], list[3], |
| 416 builder.AddDisplayPlacement(list[3], list[4], DisplayPlacement::LEFT, 10); | 420 display::DisplayPlacement::BOTTOM, 10); |
| 417 builder.AddDisplayPlacement(list[4], primary_id, DisplayPlacement::BOTTOM, | 421 builder.AddDisplayPlacement(list[3], list[4], |
| 418 10); | 422 display::DisplayPlacement::LEFT, 10); |
| 423 builder.AddDisplayPlacement(list[4], primary_id, |
| 424 display::DisplayPlacement::BOTTOM, 10); |
| 419 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 425 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 420 list, builder.Build()); | 426 list, builder.Build()); |
| 421 | 427 |
| 422 UpdateDisplay("640x480,320x200,400x300,300x200,200x100"); | 428 UpdateDisplay("640x480,320x200,400x300,300x200,200x100"); |
| 423 | 429 |
| 424 EXPECT_EQ(5U, display_manager()->GetNumDisplays()); | 430 EXPECT_EQ(5U, display_manager()->GetNumDisplays()); |
| 425 | 431 |
| 426 EXPECT_EQ("0,0 640x480", | 432 EXPECT_EQ("0,0 640x480", |
| 427 display_manager()->GetDisplayAt(0).bounds().ToString()); | 433 display_manager()->GetDisplayAt(0).bounds().ToString()); |
| 428 // 2nd is right of the primary. | 434 // 2nd is right of the primary. |
| (...skipping 1134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1563 EXPECT_EQ(2U, display_manager->num_connected_displays()); | 1569 EXPECT_EQ(2U, display_manager->num_connected_displays()); |
| 1564 | 1570 |
| 1565 UpdateDisplay("500x500,500x500"); | 1571 UpdateDisplay("500x500,500x500"); |
| 1566 EXPECT_FALSE(display_manager->GetCurrentDisplayLayout().mirrored); | 1572 EXPECT_FALSE(display_manager->GetCurrentDisplayLayout().mirrored); |
| 1567 EXPECT_EQ(2, gfx::Screen::GetScreen()->GetNumDisplays()); | 1573 EXPECT_EQ(2, gfx::Screen::GetScreen()->GetNumDisplays()); |
| 1568 EXPECT_EQ(2U, display_manager->num_connected_displays()); | 1574 EXPECT_EQ(2U, display_manager->num_connected_displays()); |
| 1569 } | 1575 } |
| 1570 | 1576 |
| 1571 TEST_F(DisplayManagerTest, InvertLayout) { | 1577 TEST_F(DisplayManagerTest, InvertLayout) { |
| 1572 EXPECT_EQ("left, 0", | 1578 EXPECT_EQ("left, 0", |
| 1573 DisplayPlacement(DisplayPlacement::RIGHT, 0).Swap().ToString()); | 1579 display::DisplayPlacement(display::DisplayPlacement::RIGHT, 0) |
| 1580 .Swap() |
| 1581 .ToString()); |
| 1574 EXPECT_EQ("left, -100", | 1582 EXPECT_EQ("left, -100", |
| 1575 DisplayPlacement(DisplayPlacement::RIGHT, 100).Swap().ToString()); | 1583 display::DisplayPlacement(display::DisplayPlacement::RIGHT, 100) |
| 1584 .Swap() |
| 1585 .ToString()); |
| 1576 EXPECT_EQ("left, 50", | 1586 EXPECT_EQ("left, 50", |
| 1577 DisplayPlacement(DisplayPlacement::RIGHT, -50).Swap().ToString()); | 1587 display::DisplayPlacement(display::DisplayPlacement::RIGHT, -50) |
| 1588 .Swap() |
| 1589 .ToString()); |
| 1578 | 1590 |
| 1579 EXPECT_EQ("right, 0", | 1591 EXPECT_EQ("right, 0", |
| 1580 DisplayPlacement(DisplayPlacement::LEFT, 0).Swap().ToString()); | 1592 display::DisplayPlacement(display::DisplayPlacement::LEFT, 0) |
| 1593 .Swap() |
| 1594 .ToString()); |
| 1581 EXPECT_EQ("right, -90", | 1595 EXPECT_EQ("right, -90", |
| 1582 DisplayPlacement(DisplayPlacement::LEFT, 90).Swap().ToString()); | 1596 display::DisplayPlacement(display::DisplayPlacement::LEFT, 90) |
| 1597 .Swap() |
| 1598 .ToString()); |
| 1583 EXPECT_EQ("right, 60", | 1599 EXPECT_EQ("right, 60", |
| 1584 DisplayPlacement(DisplayPlacement::LEFT, -60).Swap().ToString()); | 1600 display::DisplayPlacement(display::DisplayPlacement::LEFT, -60) |
| 1601 .Swap() |
| 1602 .ToString()); |
| 1585 | 1603 |
| 1586 EXPECT_EQ("bottom, 0", | 1604 EXPECT_EQ("bottom, 0", |
| 1587 DisplayPlacement(DisplayPlacement::TOP, 0).Swap().ToString()); | 1605 display::DisplayPlacement(display::DisplayPlacement::TOP, 0) |
| 1606 .Swap() |
| 1607 .ToString()); |
| 1588 EXPECT_EQ("bottom, -80", | 1608 EXPECT_EQ("bottom, -80", |
| 1589 DisplayPlacement(DisplayPlacement::TOP, 80).Swap().ToString()); | 1609 display::DisplayPlacement(display::DisplayPlacement::TOP, 80) |
| 1610 .Swap() |
| 1611 .ToString()); |
| 1590 EXPECT_EQ("bottom, 70", | 1612 EXPECT_EQ("bottom, 70", |
| 1591 DisplayPlacement(DisplayPlacement::TOP, -70).Swap().ToString()); | 1613 display::DisplayPlacement(display::DisplayPlacement::TOP, -70) |
| 1614 .Swap() |
| 1615 .ToString()); |
| 1592 | 1616 |
| 1593 EXPECT_EQ("top, 0", | 1617 EXPECT_EQ("top, 0", |
| 1594 DisplayPlacement(DisplayPlacement::BOTTOM, 0).Swap().ToString()); | 1618 display::DisplayPlacement(display::DisplayPlacement::BOTTOM, 0) |
| 1619 .Swap() |
| 1620 .ToString()); |
| 1595 EXPECT_EQ("top, -70", | 1621 EXPECT_EQ("top, -70", |
| 1596 DisplayPlacement(DisplayPlacement::BOTTOM, 70).Swap().ToString()); | 1622 display::DisplayPlacement(display::DisplayPlacement::BOTTOM, 70) |
| 1623 .Swap() |
| 1624 .ToString()); |
| 1597 EXPECT_EQ("top, 80", | 1625 EXPECT_EQ("top, 80", |
| 1598 DisplayPlacement(DisplayPlacement::BOTTOM, -80).Swap().ToString()); | 1626 display::DisplayPlacement(display::DisplayPlacement::BOTTOM, -80) |
| 1627 .Swap() |
| 1628 .ToString()); |
| 1599 } | 1629 } |
| 1600 | 1630 |
| 1601 TEST_F(DisplayManagerTest, NotifyPrimaryChange) { | 1631 TEST_F(DisplayManagerTest, NotifyPrimaryChange) { |
| 1602 if (!SupportsMultipleDisplays()) | 1632 if (!SupportsMultipleDisplays()) |
| 1603 return; | 1633 return; |
| 1604 UpdateDisplay("500x500,500x500"); | 1634 UpdateDisplay("500x500,500x500"); |
| 1605 test::SwapPrimaryDisplay(); | 1635 test::SwapPrimaryDisplay(); |
| 1606 reset(); | 1636 reset(); |
| 1607 UpdateDisplay("500x500"); | 1637 UpdateDisplay("500x500"); |
| 1608 EXPECT_FALSE(changed_metrics() & gfx::DisplayObserver::DISPLAY_METRIC_BOUNDS); | 1638 EXPECT_FALSE(changed_metrics() & gfx::DisplayObserver::DISPLAY_METRIC_BOUNDS); |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1759 display_info_list.push_back(d2); | 1789 display_info_list.push_back(d2); |
| 1760 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1790 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1761 ASSERT_TRUE(display_manager()->IsInMirrorMode()); | 1791 ASSERT_TRUE(display_manager()->IsInMirrorMode()); |
| 1762 display_manager()->SetUnifiedDesktopEnabled(true); | 1792 display_manager()->SetUnifiedDesktopEnabled(true); |
| 1763 EXPECT_TRUE(display_manager()->IsInMirrorMode()); | 1793 EXPECT_TRUE(display_manager()->IsInMirrorMode()); |
| 1764 | 1794 |
| 1765 // The display manager automaticaclly switches to software mirroring | 1795 // The display manager automaticaclly switches to software mirroring |
| 1766 // if the displays are configured to use mirroring when running on desktop. | 1796 // if the displays are configured to use mirroring when running on desktop. |
| 1767 // This is a workdaround to force the display manager to forget | 1797 // This is a workdaround to force the display manager to forget |
| 1768 // the mirroing layout. | 1798 // the mirroing layout. |
| 1769 DisplayIdList list = test::CreateDisplayIdList2(1, 2); | 1799 display::DisplayIdList list = test::CreateDisplayIdList2(1, 2); |
| 1770 DisplayLayoutBuilder builder( | 1800 display::DisplayLayoutBuilder builder( |
| 1771 display_manager()->layout_store()->GetRegisteredDisplayLayout(list)); | 1801 display_manager()->layout_store()->GetRegisteredDisplayLayout(list)); |
| 1772 builder.SetMirrored(false); | 1802 builder.SetMirrored(false); |
| 1773 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 1803 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 1774 list, builder.Build()); | 1804 list, builder.Build()); |
| 1775 | 1805 |
| 1776 // Exit from hardware mirroring. | 1806 // Exit from hardware mirroring. |
| 1777 d2.SetBounds(gfx::Rect(0, 500, 500, 500)); | 1807 d2.SetBounds(gfx::Rect(0, 500, 500, 500)); |
| 1778 display_info_list.clear(); | 1808 display_info_list.clear(); |
| 1779 display_info_list.push_back(d1); | 1809 display_info_list.push_back(d1); |
| 1780 display_info_list.push_back(d2); | 1810 display_info_list.push_back(d2); |
| 1781 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1811 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1782 EXPECT_FALSE(display_manager()->IsInMirrorMode()); | 1812 EXPECT_FALSE(display_manager()->IsInMirrorMode()); |
| 1783 EXPECT_TRUE(display_manager()->IsInUnifiedMode()); | 1813 EXPECT_TRUE(display_manager()->IsInUnifiedMode()); |
| 1784 } | 1814 } |
| 1785 | 1815 |
| 1786 TEST_F(DisplayManagerTest, UnifiedDesktopEnabledWithExtended) { | 1816 TEST_F(DisplayManagerTest, UnifiedDesktopEnabledWithExtended) { |
| 1787 if (!SupportsMultipleDisplays()) | 1817 if (!SupportsMultipleDisplays()) |
| 1788 return; | 1818 return; |
| 1789 // Don't check root window destruction in unified mode. | 1819 // Don't check root window destruction in unified mode. |
| 1790 Shell::GetPrimaryRootWindow()->RemoveObserver(this); | 1820 Shell::GetPrimaryRootWindow()->RemoveObserver(this); |
| 1791 | 1821 |
| 1792 UpdateDisplay("400x500,300x200"); | 1822 UpdateDisplay("400x500,300x200"); |
| 1793 DisplayIdList list = display_manager()->GetCurrentDisplayIdList(); | 1823 display::DisplayIdList list = display_manager()->GetCurrentDisplayIdList(); |
| 1794 DisplayLayoutBuilder builder( | 1824 display::DisplayLayoutBuilder builder( |
| 1795 display_manager()->layout_store()->GetRegisteredDisplayLayout(list)); | 1825 display_manager()->layout_store()->GetRegisteredDisplayLayout(list)); |
| 1796 builder.SetDefaultUnified(false); | 1826 builder.SetDefaultUnified(false); |
| 1797 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 1827 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 1798 list, builder.Build()); | 1828 list, builder.Build()); |
| 1799 display_manager()->SetUnifiedDesktopEnabled(true); | 1829 display_manager()->SetUnifiedDesktopEnabled(true); |
| 1800 EXPECT_FALSE(display_manager()->IsInUnifiedMode()); | 1830 EXPECT_FALSE(display_manager()->IsInUnifiedMode()); |
| 1801 } | 1831 } |
| 1802 | 1832 |
| 1803 TEST_F(DisplayManagerTest, UnifiedDesktopWith2xDSF) { | 1833 TEST_F(DisplayManagerTest, UnifiedDesktopWith2xDSF) { |
| 1804 if (!SupportsMultipleDisplays()) | 1834 if (!SupportsMultipleDisplays()) |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2004 DisplayInfo invalid_info; | 2034 DisplayInfo invalid_info; |
| 2005 EXPECT_FALSE(GetDisplayModeForNextUIScale(invalid_info, true, &mode)); | 2035 EXPECT_FALSE(GetDisplayModeForNextUIScale(invalid_info, true, &mode)); |
| 2006 EXPECT_FALSE(GetDisplayModeForNextUIScale(invalid_info, false, &mode)); | 2036 EXPECT_FALSE(GetDisplayModeForNextUIScale(invalid_info, false, &mode)); |
| 2007 EXPECT_FALSE(SetDisplayUIScale(gfx::Display::kInvalidDisplayID, 1.0f)); | 2037 EXPECT_FALSE(SetDisplayUIScale(gfx::Display::kInvalidDisplayID, 1.0f)); |
| 2008 } | 2038 } |
| 2009 | 2039 |
| 2010 // Make sure that bad layout information is ignored and does not crash. | 2040 // Make sure that bad layout information is ignored and does not crash. |
| 2011 TEST_F(DisplayManagerTest, DontRegisterBadConfig) { | 2041 TEST_F(DisplayManagerTest, DontRegisterBadConfig) { |
| 2012 if (!SupportsMultipleDisplays()) | 2042 if (!SupportsMultipleDisplays()) |
| 2013 return; | 2043 return; |
| 2014 DisplayIdList list = ash::test::CreateDisplayIdList2(1, 2); | 2044 display::DisplayIdList list = ash::test::CreateDisplayIdList2(1, 2); |
| 2015 DisplayLayoutBuilder builder(1); | 2045 display::DisplayLayoutBuilder builder(1); |
| 2016 builder.AddDisplayPlacement(2, 1, ash::DisplayPlacement::LEFT, 0); | 2046 builder.AddDisplayPlacement(2, 1, display::DisplayPlacement::LEFT, 0); |
| 2017 builder.AddDisplayPlacement(3, 1, ash::DisplayPlacement::BOTTOM, 0); | 2047 builder.AddDisplayPlacement(3, 1, display::DisplayPlacement::BOTTOM, 0); |
| 2018 | 2048 |
| 2019 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 2049 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 2020 list, builder.Build()); | 2050 list, builder.Build()); |
| 2021 } | 2051 } |
| 2022 | 2052 |
| 2023 class ScreenShutdownTest : public test::AshTestBase { | 2053 class ScreenShutdownTest : public test::AshTestBase { |
| 2024 public: | 2054 public: |
| 2025 ScreenShutdownTest() { | 2055 ScreenShutdownTest() { |
| 2026 } | 2056 } |
| 2027 ~ScreenShutdownTest() override {} | 2057 ~ScreenShutdownTest() override {} |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2192 info.GetRotation(gfx::Display::ROTATION_SOURCE_USER)); | 2222 info.GetRotation(gfx::Display::ROTATION_SOURCE_USER)); |
| 2193 EXPECT_EQ(gfx::Display::ROTATE_90, | 2223 EXPECT_EQ(gfx::Display::ROTATE_90, |
| 2194 info.GetRotation(gfx::Display::ROTATION_SOURCE_ACTIVE)); | 2224 info.GetRotation(gfx::Display::ROTATION_SOURCE_ACTIVE)); |
| 2195 } | 2225 } |
| 2196 | 2226 |
| 2197 TEST_F(DisplayManagerTest, RejectInvalidLayoutData) { | 2227 TEST_F(DisplayManagerTest, RejectInvalidLayoutData) { |
| 2198 DisplayLayoutStore* layout_store = display_manager()->layout_store(); | 2228 DisplayLayoutStore* layout_store = display_manager()->layout_store(); |
| 2199 int64_t id1 = 10001; | 2229 int64_t id1 = 10001; |
| 2200 int64_t id2 = 10002; | 2230 int64_t id2 = 10002; |
| 2201 ASSERT_TRUE(CompareDisplayIds(id1, id2)); | 2231 ASSERT_TRUE(CompareDisplayIds(id1, id2)); |
| 2202 DisplayLayoutBuilder good_builder(id1); | 2232 display::DisplayLayoutBuilder good_builder(id1); |
| 2203 good_builder.SetSecondaryPlacement(id2, DisplayPlacement::LEFT, 0); | 2233 good_builder.SetSecondaryPlacement(id2, display::DisplayPlacement::LEFT, 0); |
| 2204 scoped_ptr<DisplayLayout> good(good_builder.Build()); | 2234 scoped_ptr<display::DisplayLayout> good(good_builder.Build()); |
| 2205 | 2235 |
| 2206 DisplayIdList good_list = test::CreateDisplayIdList2(id1, id2); | 2236 display::DisplayIdList good_list = test::CreateDisplayIdList2(id1, id2); |
| 2207 layout_store->RegisterLayoutForDisplayIdList(good_list, good->Copy()); | 2237 layout_store->RegisterLayoutForDisplayIdList(good_list, good->Copy()); |
| 2208 | 2238 |
| 2209 DisplayLayoutBuilder bad(id1); | 2239 display::DisplayLayoutBuilder bad(id1); |
| 2210 bad.SetSecondaryPlacement(id2, DisplayPlacement::BOTTOM, 0); | 2240 bad.SetSecondaryPlacement(id2, display::DisplayPlacement::BOTTOM, 0); |
| 2211 | 2241 |
| 2212 DisplayIdList bad_list(2); | 2242 display::DisplayIdList bad_list(2); |
| 2213 bad_list[0] = id2; | 2243 bad_list[0] = id2; |
| 2214 bad_list[1] = id1; | 2244 bad_list[1] = id1; |
| 2215 layout_store->RegisterLayoutForDisplayIdList(bad_list, bad.Build()); | 2245 layout_store->RegisterLayoutForDisplayIdList(bad_list, bad.Build()); |
| 2216 | 2246 |
| 2217 EXPECT_EQ(good->ToString(), | 2247 EXPECT_EQ(good->ToString(), |
| 2218 layout_store->GetRegisteredDisplayLayout(good_list).ToString()); | 2248 layout_store->GetRegisteredDisplayLayout(good_list).ToString()); |
| 2219 } | 2249 } |
| 2220 | 2250 |
| 2221 TEST_F(DisplayManagerTest, GuessDisplayIdFieldsInDisplayLayout) { | 2251 TEST_F(DisplayManagerTest, GuessDisplayIdFieldsInDisplayLayout) { |
| 2222 int64_t id1 = 10001; | 2252 int64_t id1 = 10001; |
| 2223 int64_t id2 = 10002; | 2253 int64_t id2 = 10002; |
| 2224 | 2254 |
| 2225 scoped_ptr<DisplayLayout> old_layout(new DisplayLayout); | 2255 scoped_ptr<display::DisplayLayout> old_layout(new display::DisplayLayout); |
| 2226 old_layout->placement_list.emplace_back(DisplayPlacement::BOTTOM, 0); | 2256 old_layout->placement_list.emplace_back(display::DisplayPlacement::BOTTOM, 0); |
| 2227 old_layout->primary_id = id1; | 2257 old_layout->primary_id = id1; |
| 2228 | 2258 |
| 2229 DisplayLayoutStore* layout_store = display_manager()->layout_store(); | 2259 DisplayLayoutStore* layout_store = display_manager()->layout_store(); |
| 2230 DisplayIdList list = test::CreateDisplayIdList2(id1, id2); | 2260 display::DisplayIdList list = test::CreateDisplayIdList2(id1, id2); |
| 2231 layout_store->RegisterLayoutForDisplayIdList(list, std::move(old_layout)); | 2261 layout_store->RegisterLayoutForDisplayIdList(list, std::move(old_layout)); |
| 2232 const DisplayLayout& stored = layout_store->GetRegisteredDisplayLayout(list); | 2262 const display::DisplayLayout& stored = |
| 2263 layout_store->GetRegisteredDisplayLayout(list); |
| 2233 | 2264 |
| 2234 EXPECT_EQ(id1, stored.placement_list[0].parent_display_id); | 2265 EXPECT_EQ(id1, stored.placement_list[0].parent_display_id); |
| 2235 EXPECT_EQ(id2, stored.placement_list[0].display_id); | 2266 EXPECT_EQ(id2, stored.placement_list[0].display_id); |
| 2236 } | 2267 } |
| 2237 | 2268 |
| 2238 #endif // OS_CHROMEOS | 2269 #endif // OS_CHROMEOS |
| 2239 | 2270 |
| 2240 } // namespace ash | 2271 } // namespace ash |
| OLD | NEW |