| 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/window_tree_host_manager.h" | 5 #include "ash/display/window_tree_host_manager.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "ash/common/material_design/material_design_controller.h" | |
| 10 #include "ash/common/shelf/shelf_widget.h" | 9 #include "ash/common/shelf/shelf_widget.h" |
| 11 #include "ash/common/shelf/wm_shelf.h" | 10 #include "ash/common/shelf/wm_shelf.h" |
| 12 #include "ash/common/wm/window_state.h" | 11 #include "ash/common/wm/window_state.h" |
| 13 #include "ash/common/wm/wm_event.h" | 12 #include "ash/common/wm/wm_event.h" |
| 14 #include "ash/common/wm/wm_screen_util.h" | 13 #include "ash/common/wm/wm_screen_util.h" |
| 15 #include "ash/common/wm_window.h" | 14 #include "ash/common/wm_window.h" |
| 16 #include "ash/display/display_util.h" | 15 #include "ash/display/display_util.h" |
| 17 #include "ash/screen_util.h" | 16 #include "ash/screen_util.h" |
| 18 #include "ash/shell.h" | 17 #include "ash/shell.h" |
| 19 #include "ash/test/ash_md_test_base.h" | |
| 20 #include "ash/test/ash_test_base.h" | 18 #include "ash/test/ash_test_base.h" |
| 21 #include "ash/test/ash_test_helper.h" | 19 #include "ash/test/ash_test_helper.h" |
| 22 #include "ash/test/cursor_manager_test_api.h" | 20 #include "ash/test/cursor_manager_test_api.h" |
| 23 #include "ash/test/test_shell_delegate.h" | 21 #include "ash/test/test_shell_delegate.h" |
| 24 #include "ash/wm/window_state_aura.h" | 22 #include "ash/wm/window_state_aura.h" |
| 25 #include "base/command_line.h" | 23 #include "base/command_line.h" |
| 26 #include "ui/aura/client/focus_change_observer.h" | 24 #include "ui/aura/client/focus_change_observer.h" |
| 27 #include "ui/aura/client/focus_client.h" | 25 #include "ui/aura/client/focus_client.h" |
| 28 #include "ui/aura/env.h" | 26 #include "ui/aura/env.h" |
| 29 #include "ui/aura/window_observer.h" | 27 #include "ui/aura/window_observer.h" |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 | 396 |
| 399 private: | 397 private: |
| 400 // views::MouseWatcherListener: | 398 // views::MouseWatcherListener: |
| 401 void MouseMovedOutOfHost() override {} | 399 void MouseMovedOutOfHost() override {} |
| 402 | 400 |
| 403 DISALLOW_COPY_AND_ASSIGN(TestMouseWatcherListener); | 401 DISALLOW_COPY_AND_ASSIGN(TestMouseWatcherListener); |
| 404 }; | 402 }; |
| 405 | 403 |
| 406 } // namespace | 404 } // namespace |
| 407 | 405 |
| 408 class WindowTreeHostManagerTest : public test::AshMDTestBase, | 406 class WindowTreeHostManagerTest : public test::AshTestBase, public TestHelper { |
| 409 public TestHelper { | |
| 410 public: | 407 public: |
| 411 WindowTreeHostManagerTest() : TestHelper(this){}; | 408 WindowTreeHostManagerTest() : TestHelper(this){}; |
| 412 ~WindowTreeHostManagerTest() override{}; | 409 ~WindowTreeHostManagerTest() override{}; |
| 413 | 410 |
| 414 private: | 411 private: |
| 415 DISALLOW_COPY_AND_ASSIGN(WindowTreeHostManagerTest); | 412 DISALLOW_COPY_AND_ASSIGN(WindowTreeHostManagerTest); |
| 416 }; | 413 }; |
| 417 | 414 |
| 418 INSTANTIATE_TEST_CASE_P( | |
| 419 /* prefix intentionally left blank due to only one parameterization */, | |
| 420 WindowTreeHostManagerTest, | |
| 421 testing::Values(MaterialDesignController::NON_MATERIAL, | |
| 422 MaterialDesignController::MATERIAL_NORMAL, | |
| 423 MaterialDesignController::MATERIAL_EXPERIMENTAL)); | |
| 424 | |
| 425 TEST_F(WindowTreeHostManagerShutdownTest, Shutdown) { | 415 TEST_F(WindowTreeHostManagerShutdownTest, Shutdown) { |
| 426 UpdateDisplay("444x333, 200x200"); | 416 UpdateDisplay("444x333, 200x200"); |
| 427 } | 417 } |
| 428 | 418 |
| 429 TEST_F(WindowTreeHostManagerStartupTest, Startup) { | 419 TEST_F(WindowTreeHostManagerStartupTest, Startup) { |
| 430 EXPECT_TRUE(startup_helper()->displays_initialized()); | 420 EXPECT_TRUE(startup_helper()->displays_initialized()); |
| 431 } | 421 } |
| 432 | 422 |
| 433 TEST_P(WindowTreeHostManagerTest, SecondaryDisplayLayout) { | 423 TEST_F(WindowTreeHostManagerTest, SecondaryDisplayLayout) { |
| 434 // Creates windows to catch activation change event. | 424 // Creates windows to catch activation change event. |
| 435 std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); | 425 std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); |
| 436 w1->Focus(); | 426 w1->Focus(); |
| 437 | 427 |
| 438 TestObserver observer; | 428 TestObserver observer; |
| 439 UpdateDisplay("500x500,400x400"); | 429 UpdateDisplay("500x500,400x400"); |
| 440 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 430 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
| 441 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 431 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 442 EXPECT_EQ(2, observer.GetWorkareaChangedCountAndReset()); | 432 EXPECT_EQ(2, observer.GetWorkareaChangedCountAndReset()); |
| 443 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 433 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 int64_t id, | 575 int64_t id, |
| 586 float device_scale_factor) { | 576 float device_scale_factor) { |
| 587 display::ManagedDisplayInfo info = | 577 display::ManagedDisplayInfo info = |
| 588 CreateDisplayInfo(id, 0, display::Display::ROTATE_0); | 578 CreateDisplayInfo(id, 0, display::Display::ROTATE_0); |
| 589 info.set_device_scale_factor(device_scale_factor); | 579 info.set_device_scale_factor(device_scale_factor); |
| 590 return info; | 580 return info; |
| 591 } | 581 } |
| 592 | 582 |
| 593 } // namespace | 583 } // namespace |
| 594 | 584 |
| 595 TEST_P(WindowTreeHostManagerTest, MirrorToDockedWithFullscreen) { | 585 TEST_F(WindowTreeHostManagerTest, MirrorToDockedWithFullscreen) { |
| 596 // Creates windows to catch activation change event. | 586 // Creates windows to catch activation change event. |
| 597 std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); | 587 std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); |
| 598 w1->Focus(); | 588 w1->Focus(); |
| 599 | 589 |
| 600 // Docked mode. | 590 // Docked mode. |
| 601 | 591 |
| 602 const display::ManagedDisplayInfo internal_display_info = | 592 const display::ManagedDisplayInfo internal_display_info = |
| 603 CreateMirroredDisplayInfo(1, 2.0f); | 593 CreateMirroredDisplayInfo(1, 2.0f); |
| 604 const display::ManagedDisplayInfo external_display_info = | 594 const display::ManagedDisplayInfo external_display_info = |
| 605 CreateMirroredDisplayInfo(2, 1.0f); | 595 CreateMirroredDisplayInfo(2, 1.0f); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 634 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); | 624 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
| 635 EXPECT_EQ(1, observer.GetPrimaryChangedCountAndReset()); | 625 EXPECT_EQ(1, observer.GetPrimaryChangedCountAndReset()); |
| 636 EXPECT_EQ(1, observer.CountAndReset()); | 626 EXPECT_EQ(1, observer.CountAndReset()); |
| 637 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 627 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
| 638 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 628 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
| 639 | 629 |
| 640 EXPECT_TRUE(window_state->IsFullscreen()); | 630 EXPECT_TRUE(window_state->IsFullscreen()); |
| 641 EXPECT_EQ("0,0 500x500", w1->bounds().ToString()); | 631 EXPECT_EQ("0,0 500x500", w1->bounds().ToString()); |
| 642 } | 632 } |
| 643 | 633 |
| 644 TEST_P(WindowTreeHostManagerTest, BoundsUpdated) { | 634 TEST_F(WindowTreeHostManagerTest, BoundsUpdated) { |
| 645 // Creates windows to catch activation change event. | 635 // Creates windows to catch activation change event. |
| 646 std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); | 636 std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); |
| 647 w1->Focus(); | 637 w1->Focus(); |
| 648 | 638 |
| 649 TestObserver observer; | 639 TestObserver observer; |
| 650 SetDefaultDisplayLayout(display::DisplayPlacement::BOTTOM); | 640 SetDefaultDisplayLayout(display::DisplayPlacement::BOTTOM); |
| 651 UpdateDisplay("200x200,300x300"); // layout, resize and add. | 641 UpdateDisplay("200x200,300x300"); // layout, resize and add. |
| 652 EXPECT_EQ(1, observer.CountAndReset()); | 642 EXPECT_EQ(1, observer.CountAndReset()); |
| 653 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 643 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
| 654 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 644 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 744 EXPECT_EQ(0, observer.CountAndReset()); | 734 EXPECT_EQ(0, observer.CountAndReset()); |
| 745 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 735 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
| 746 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 736 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
| 747 display::test::DisplayManagerTestApi(display_manager()) | 737 display::test::DisplayManagerTestApi(display_manager()) |
| 748 .SetDisplayUIScale(primary_id, 1.125f); | 738 .SetDisplayUIScale(primary_id, 1.125f); |
| 749 EXPECT_EQ(0, observer.CountAndReset()); | 739 EXPECT_EQ(0, observer.CountAndReset()); |
| 750 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 740 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
| 751 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 741 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
| 752 } | 742 } |
| 753 | 743 |
| 754 TEST_P(WindowTreeHostManagerTest, FindNearestDisplay) { | 744 TEST_F(WindowTreeHostManagerTest, FindNearestDisplay) { |
| 755 WindowTreeHostManager* window_tree_host_manager = | 745 WindowTreeHostManager* window_tree_host_manager = |
| 756 Shell::GetInstance()->window_tree_host_manager(); | 746 Shell::GetInstance()->window_tree_host_manager(); |
| 757 | 747 |
| 758 UpdateDisplay("200x200,300x300"); | 748 UpdateDisplay("200x200,300x300"); |
| 759 display_manager()->SetLayoutForCurrentDisplays( | 749 display_manager()->SetLayoutForCurrentDisplays( |
| 760 display::test::CreateDisplayLayout(display_manager(), | 750 display::test::CreateDisplayLayout(display_manager(), |
| 761 display::DisplayPlacement::RIGHT, 50)); | 751 display::DisplayPlacement::RIGHT, 50)); |
| 762 | 752 |
| 763 display::Display primary_display = | 753 display::Display primary_display = |
| 764 display::Screen::GetScreen()->GetPrimaryDisplay(); | 754 display::Screen::GetScreen()->GetPrimaryDisplay(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 803 EXPECT_EQ(secondary_display.id(), | 793 EXPECT_EQ(secondary_display.id(), |
| 804 display::Screen::GetScreen() | 794 display::Screen::GetScreen() |
| 805 ->GetDisplayNearestPoint(gfx::Point(176, 225)) | 795 ->GetDisplayNearestPoint(gfx::Point(176, 225)) |
| 806 .id()); | 796 .id()); |
| 807 EXPECT_EQ(secondary_display.id(), | 797 EXPECT_EQ(secondary_display.id(), |
| 808 display::Screen::GetScreen() | 798 display::Screen::GetScreen() |
| 809 ->GetDisplayNearestPoint(gfx::Point(300, 400)) | 799 ->GetDisplayNearestPoint(gfx::Point(300, 400)) |
| 810 .id()); | 800 .id()); |
| 811 } | 801 } |
| 812 | 802 |
| 813 TEST_P(WindowTreeHostManagerTest, SwapPrimaryById) { | 803 TEST_F(WindowTreeHostManagerTest, SwapPrimaryById) { |
| 814 const int height_offset = GetMdMaximizedWindowHeightOffset(); | |
| 815 | |
| 816 WindowTreeHostManager* window_tree_host_manager = | 804 WindowTreeHostManager* window_tree_host_manager = |
| 817 Shell::GetInstance()->window_tree_host_manager(); | 805 Shell::GetInstance()->window_tree_host_manager(); |
| 818 | 806 |
| 819 UpdateDisplay("200x200,300x300"); | 807 UpdateDisplay("200x200,300x300"); |
| 820 display::Display primary_display = | 808 display::Display primary_display = |
| 821 display::Screen::GetScreen()->GetPrimaryDisplay(); | 809 display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 822 display::Display secondary_display = display_manager()->GetSecondaryDisplay(); | 810 display::Display secondary_display = display_manager()->GetSecondaryDisplay(); |
| 823 | 811 |
| 824 display_manager()->SetLayoutForCurrentDisplays( | 812 display_manager()->SetLayoutForCurrentDisplays( |
| 825 display::test::CreateDisplayLayout(display_manager(), | 813 display::test::CreateDisplayLayout(display_manager(), |
| (...skipping 12 matching lines...) Expand all Loading... |
| 838 EXPECT_NE(primary_root, secondary_root); | 826 EXPECT_NE(primary_root, secondary_root); |
| 839 EXPECT_EQ(primary_display.id(), | 827 EXPECT_EQ(primary_display.id(), |
| 840 display::Screen::GetScreen() | 828 display::Screen::GetScreen() |
| 841 ->GetDisplayNearestPoint(gfx::Point(-100, -100)) | 829 ->GetDisplayNearestPoint(gfx::Point(-100, -100)) |
| 842 .id()); | 830 .id()); |
| 843 EXPECT_EQ( | 831 EXPECT_EQ( |
| 844 primary_display.id(), | 832 primary_display.id(), |
| 845 display::Screen::GetScreen()->GetDisplayNearestWindow(nullptr).id()); | 833 display::Screen::GetScreen()->GetDisplayNearestWindow(nullptr).id()); |
| 846 | 834 |
| 847 EXPECT_EQ("0,0 200x200", primary_display.bounds().ToString()); | 835 EXPECT_EQ("0,0 200x200", primary_display.bounds().ToString()); |
| 848 EXPECT_EQ(gfx::Rect(0, 0, 200, 153 + height_offset).ToString(), | 836 EXPECT_EQ(gfx::Rect(0, 0, 200, 152).ToString(), |
| 849 primary_display.work_area().ToString()); | 837 primary_display.work_area().ToString()); |
| 850 EXPECT_EQ("200,0 300x300", secondary_display.bounds().ToString()); | 838 EXPECT_EQ("200,0 300x300", secondary_display.bounds().ToString()); |
| 851 EXPECT_EQ(gfx::Rect(200, 0, 300, 253 + height_offset).ToString(), | 839 EXPECT_EQ(gfx::Rect(200, 0, 300, 252).ToString(), |
| 852 secondary_display.work_area().ToString()); | 840 secondary_display.work_area().ToString()); |
| 853 EXPECT_EQ("id=2200000001, parent=2200000000, right, 50", | 841 EXPECT_EQ("id=2200000001, parent=2200000000, right, 50", |
| 854 display_manager() | 842 display_manager() |
| 855 ->GetCurrentDisplayLayout() | 843 ->GetCurrentDisplayLayout() |
| 856 .placement_list[0] | 844 .placement_list[0] |
| 857 .ToString()); | 845 .ToString()); |
| 858 | 846 |
| 859 // Switch primary and secondary by display ID. | 847 // Switch primary and secondary by display ID. |
| 860 TestObserver observer; | 848 TestObserver observer; |
| 861 window_tree_host_manager->SetPrimaryDisplayId(secondary_display.id()); | 849 window_tree_host_manager->SetPrimaryDisplayId(secondary_display.id()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 875 const display::DisplayLayout& inverted_layout = | 863 const display::DisplayLayout& inverted_layout = |
| 876 display_manager()->GetCurrentDisplayLayout(); | 864 display_manager()->GetCurrentDisplayLayout(); |
| 877 | 865 |
| 878 EXPECT_EQ("id=2200000000, parent=2200000001, left, -50", | 866 EXPECT_EQ("id=2200000000, parent=2200000001, left, -50", |
| 879 inverted_layout.placement_list[0].ToString()); | 867 inverted_layout.placement_list[0].ToString()); |
| 880 // Test if the bounds are correctly swapped. | 868 // Test if the bounds are correctly swapped. |
| 881 display::Display swapped_primary = | 869 display::Display swapped_primary = |
| 882 display::Screen::GetScreen()->GetPrimaryDisplay(); | 870 display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 883 display::Display swapped_secondary = display_manager()->GetSecondaryDisplay(); | 871 display::Display swapped_secondary = display_manager()->GetSecondaryDisplay(); |
| 884 EXPECT_EQ("0,0 300x300", swapped_primary.bounds().ToString()); | 872 EXPECT_EQ("0,0 300x300", swapped_primary.bounds().ToString()); |
| 885 EXPECT_EQ(gfx::Rect(0, 0, 300, 253 + height_offset).ToString(), | 873 EXPECT_EQ(gfx::Rect(0, 0, 300, 252).ToString(), |
| 886 swapped_primary.work_area().ToString()); | 874 swapped_primary.work_area().ToString()); |
| 887 EXPECT_EQ("-200,-50 200x200", swapped_secondary.bounds().ToString()); | 875 EXPECT_EQ("-200,-50 200x200", swapped_secondary.bounds().ToString()); |
| 888 EXPECT_EQ(gfx::Rect(-200, -50, 200, 153 + height_offset).ToString(), | 876 EXPECT_EQ(gfx::Rect(-200, -50, 200, 152).ToString(), |
| 889 swapped_secondary.work_area().ToString()); | 877 swapped_secondary.work_area().ToString()); |
| 890 | 878 |
| 891 // Calling the same ID don't do anything. | 879 // Calling the same ID don't do anything. |
| 892 window_tree_host_manager->SetPrimaryDisplayId(secondary_display.id()); | 880 window_tree_host_manager->SetPrimaryDisplayId(secondary_display.id()); |
| 893 EXPECT_EQ(0, observer.CountAndReset()); | 881 EXPECT_EQ(0, observer.CountAndReset()); |
| 894 | 882 |
| 895 aura::WindowTracker tracker; | 883 aura::WindowTracker tracker; |
| 896 tracker.Add(primary_root); | 884 tracker.Add(primary_root); |
| 897 tracker.Add(secondary_root); | 885 tracker.Add(secondary_root); |
| 898 | 886 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 display::Screen::GetScreen()->GetPrimaryDisplay().id()); | 941 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
| 954 EXPECT_EQ(third_display_info.id(), | 942 EXPECT_EQ(third_display_info.id(), |
| 955 display_manager()->GetSecondaryDisplay().id()); | 943 display_manager()->GetSecondaryDisplay().id()); |
| 956 EXPECT_EQ(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( | 944 EXPECT_EQ(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( |
| 957 primary_display.id())); | 945 primary_display.id())); |
| 958 EXPECT_NE(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( | 946 EXPECT_NE(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( |
| 959 third_display_info.id())); | 947 third_display_info.id())); |
| 960 EXPECT_TRUE(primary_root->Contains(shelf_window)); | 948 EXPECT_TRUE(primary_root->Contains(shelf_window)); |
| 961 } | 949 } |
| 962 | 950 |
| 963 TEST_P(WindowTreeHostManagerTest, SetPrimaryWithThreeDisplays) { | 951 TEST_F(WindowTreeHostManagerTest, SetPrimaryWithThreeDisplays) { |
| 964 UpdateDisplay("500x400,400x300,300x200"); | 952 UpdateDisplay("500x400,400x300,300x200"); |
| 965 int64_t primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); | 953 int64_t primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| 966 display::DisplayIdList non_primary_ids = | 954 display::DisplayIdList non_primary_ids = |
| 967 display_manager()->GetCurrentDisplayIdList(); | 955 display_manager()->GetCurrentDisplayIdList(); |
| 968 auto itr = | 956 auto itr = |
| 969 std::remove(non_primary_ids.begin(), non_primary_ids.end(), primary_id); | 957 std::remove(non_primary_ids.begin(), non_primary_ids.end(), primary_id); |
| 970 ASSERT_TRUE(itr != non_primary_ids.end()); | 958 ASSERT_TRUE(itr != non_primary_ids.end()); |
| 971 non_primary_ids.erase(itr, non_primary_ids.end()); | 959 non_primary_ids.erase(itr, non_primary_ids.end()); |
| 972 ASSERT_EQ(2u, non_primary_ids.size()); | 960 ASSERT_EQ(2u, non_primary_ids.size()); |
| 973 | 961 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1073 current_layout.placement_list[0].parent_display_id); | 1061 current_layout.placement_list[0].parent_display_id); |
| 1074 EXPECT_EQ(display::DisplayPlacement::TOP, | 1062 EXPECT_EQ(display::DisplayPlacement::TOP, |
| 1075 current_layout.placement_list[0].position); | 1063 current_layout.placement_list[0].position); |
| 1076 EXPECT_EQ(non_primary_ids[0], current_layout.placement_list[1].display_id); | 1064 EXPECT_EQ(non_primary_ids[0], current_layout.placement_list[1].display_id); |
| 1077 EXPECT_EQ(primary_id, current_layout.placement_list[1].parent_display_id); | 1065 EXPECT_EQ(primary_id, current_layout.placement_list[1].parent_display_id); |
| 1078 EXPECT_EQ(display::DisplayPlacement::RIGHT, | 1066 EXPECT_EQ(display::DisplayPlacement::RIGHT, |
| 1079 current_layout.placement_list[1].position); | 1067 current_layout.placement_list[1].position); |
| 1080 } | 1068 } |
| 1081 } | 1069 } |
| 1082 | 1070 |
| 1083 TEST_P(WindowTreeHostManagerTest, SetPrimaryWithFourDisplays) { | 1071 TEST_F(WindowTreeHostManagerTest, SetPrimaryWithFourDisplays) { |
| 1084 UpdateDisplay("600x500,500x400,400x300,300x200"); | 1072 UpdateDisplay("600x500,500x400,400x300,300x200"); |
| 1085 int64_t primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); | 1073 int64_t primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| 1086 display::DisplayIdList non_primary_ids = | 1074 display::DisplayIdList non_primary_ids = |
| 1087 display_manager()->GetCurrentDisplayIdList(); | 1075 display_manager()->GetCurrentDisplayIdList(); |
| 1088 auto itr = | 1076 auto itr = |
| 1089 std::remove(non_primary_ids.begin(), non_primary_ids.end(), primary_id); | 1077 std::remove(non_primary_ids.begin(), non_primary_ids.end(), primary_id); |
| 1090 ASSERT_TRUE(itr != non_primary_ids.end()); | 1078 ASSERT_TRUE(itr != non_primary_ids.end()); |
| 1091 non_primary_ids.erase(itr, non_primary_ids.end()); | 1079 non_primary_ids.erase(itr, non_primary_ids.end()); |
| 1092 ASSERT_EQ(3u, non_primary_ids.size()); | 1080 ASSERT_EQ(3u, non_primary_ids.size()); |
| 1093 | 1081 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1182 EXPECT_EQ(display::DisplayPlacement::RIGHT, | 1170 EXPECT_EQ(display::DisplayPlacement::RIGHT, |
| 1183 current_layout.placement_list[1].position); | 1171 current_layout.placement_list[1].position); |
| 1184 EXPECT_EQ(non_primary_ids[2], current_layout.placement_list[2].display_id); | 1172 EXPECT_EQ(non_primary_ids[2], current_layout.placement_list[2].display_id); |
| 1185 EXPECT_EQ(non_primary_ids[0], | 1173 EXPECT_EQ(non_primary_ids[0], |
| 1186 current_layout.placement_list[2].parent_display_id); | 1174 current_layout.placement_list[2].parent_display_id); |
| 1187 EXPECT_EQ(display::DisplayPlacement::RIGHT, | 1175 EXPECT_EQ(display::DisplayPlacement::RIGHT, |
| 1188 current_layout.placement_list[2].position); | 1176 current_layout.placement_list[2].position); |
| 1189 } | 1177 } |
| 1190 } | 1178 } |
| 1191 | 1179 |
| 1192 TEST_P(WindowTreeHostManagerTest, OverscanInsets) { | 1180 TEST_F(WindowTreeHostManagerTest, OverscanInsets) { |
| 1193 WindowTreeHostManager* window_tree_host_manager = | 1181 WindowTreeHostManager* window_tree_host_manager = |
| 1194 Shell::GetInstance()->window_tree_host_manager(); | 1182 Shell::GetInstance()->window_tree_host_manager(); |
| 1195 TestEventHandler event_handler; | 1183 TestEventHandler event_handler; |
| 1196 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 1184 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
| 1197 | 1185 |
| 1198 UpdateDisplay("120x200,300x400*2"); | 1186 UpdateDisplay("120x200,300x400*2"); |
| 1199 display::Display display1 = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1187 display::Display display1 = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 1200 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1188 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 1201 | 1189 |
| 1202 window_tree_host_manager->SetOverscanInsets(display1.id(), | 1190 window_tree_host_manager->SetOverscanInsets(display1.id(), |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1229 | 1217 |
| 1230 SwapPrimaryDisplay(); | 1218 SwapPrimaryDisplay(); |
| 1231 point.SetPoint(0, 0); | 1219 point.SetPoint(0, 0); |
| 1232 Shell::GetAllRootWindows()[1]->GetHost()->GetRootTransform().TransformPoint( | 1220 Shell::GetAllRootWindows()[1]->GetHost()->GetRootTransform().TransformPoint( |
| 1233 &point); | 1221 &point); |
| 1234 EXPECT_EQ("15,10", point.ToString()); | 1222 EXPECT_EQ("15,10", point.ToString()); |
| 1235 | 1223 |
| 1236 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 1224 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
| 1237 } | 1225 } |
| 1238 | 1226 |
| 1239 TEST_P(WindowTreeHostManagerTest, Rotate) { | 1227 TEST_F(WindowTreeHostManagerTest, Rotate) { |
| 1240 TestEventHandler event_handler; | 1228 TestEventHandler event_handler; |
| 1241 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 1229 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
| 1242 | 1230 |
| 1243 UpdateDisplay("120x200,300x400*2"); | 1231 UpdateDisplay("120x200,300x400*2"); |
| 1244 display::Display display1 = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1232 display::Display display1 = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 1245 int64_t display2_id = display_manager()->GetSecondaryDisplay().id(); | 1233 int64_t display2_id = display_manager()->GetSecondaryDisplay().id(); |
| 1246 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1234 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 1247 ui::test::EventGenerator generator1(root_windows[0]); | 1235 ui::test::EventGenerator generator1(root_windows[0]); |
| 1248 | 1236 |
| 1249 TestObserver observer; | 1237 TestObserver observer; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1308 EXPECT_EQ(display::Display::ROTATE_270, | 1296 EXPECT_EQ(display::Display::ROTATE_270, |
| 1309 GetActiveDisplayRotation(display2_id)); | 1297 GetActiveDisplayRotation(display2_id)); |
| 1310 EXPECT_EQ(1, observer.GetRotationChangedCountAndReset()); | 1298 EXPECT_EQ(1, observer.GetRotationChangedCountAndReset()); |
| 1311 | 1299 |
| 1312 generator1.MoveMouseToInHost(50, 40); | 1300 generator1.MoveMouseToInHost(50, 40); |
| 1313 EXPECT_EQ("69,159", event_handler.GetLocationAndReset()); | 1301 EXPECT_EQ("69,159", event_handler.GetLocationAndReset()); |
| 1314 | 1302 |
| 1315 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 1303 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
| 1316 } | 1304 } |
| 1317 | 1305 |
| 1318 TEST_P(WindowTreeHostManagerTest, ScaleRootWindow) { | 1306 TEST_F(WindowTreeHostManagerTest, ScaleRootWindow) { |
| 1319 TestEventHandler event_handler; | 1307 TestEventHandler event_handler; |
| 1320 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 1308 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
| 1321 | 1309 |
| 1322 UpdateDisplay("600x400*2@1.5,500x300"); | 1310 UpdateDisplay("600x400*2@1.5,500x300"); |
| 1323 | 1311 |
| 1324 display::Display display1 = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1312 display::Display display1 = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 1325 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 1313 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 1326 display1.id()); | 1314 display1.id()); |
| 1327 | 1315 |
| 1328 display::Display display2 = display_manager()->GetSecondaryDisplay(); | 1316 display::Display display2 = display_manager()->GetSecondaryDisplay(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1343 display2 = display_manager()->GetSecondaryDisplay(); | 1331 display2 = display_manager()->GetSecondaryDisplay(); |
| 1344 EXPECT_EQ("0,0 375x250", display1.bounds().ToString()); | 1332 EXPECT_EQ("0,0 375x250", display1.bounds().ToString()); |
| 1345 EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString()); | 1333 EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString()); |
| 1346 EXPECT_EQ("375,0 500x300", display2.bounds().ToString()); | 1334 EXPECT_EQ("375,0 500x300", display2.bounds().ToString()); |
| 1347 EXPECT_EQ(1.25f, GetStoredUIScale(display1.id())); | 1335 EXPECT_EQ(1.25f, GetStoredUIScale(display1.id())); |
| 1348 EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); | 1336 EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); |
| 1349 | 1337 |
| 1350 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 1338 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
| 1351 } | 1339 } |
| 1352 | 1340 |
| 1353 TEST_P(WindowTreeHostManagerTest, TouchScale) { | 1341 TEST_F(WindowTreeHostManagerTest, TouchScale) { |
| 1354 TestEventHandler event_handler; | 1342 TestEventHandler event_handler; |
| 1355 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 1343 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
| 1356 | 1344 |
| 1357 UpdateDisplay("200x200*2"); | 1345 UpdateDisplay("200x200*2"); |
| 1358 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1346 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 1359 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1347 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 1360 aura::Window* root_window = root_windows[0]; | 1348 aura::Window* root_window = root_windows[0]; |
| 1361 ui::test::EventGenerator generator(root_window); | 1349 ui::test::EventGenerator generator(root_window); |
| 1362 | 1350 |
| 1363 generator.PressMoveAndReleaseTouchTo(50, 50); | 1351 generator.PressMoveAndReleaseTouchTo(50, 50); |
| 1364 // Default test touches have radius_x/y = 1.0, with device scale | 1352 // Default test touches have radius_x/y = 1.0, with device scale |
| 1365 // factor = 2, the scaled radius_x/y should be 0.5. | 1353 // factor = 2, the scaled radius_x/y should be 0.5. |
| 1366 EXPECT_EQ(0.5, event_handler.touch_radius_x()); | 1354 EXPECT_EQ(0.5, event_handler.touch_radius_x()); |
| 1367 EXPECT_EQ(0.5, event_handler.touch_radius_y()); | 1355 EXPECT_EQ(0.5, event_handler.touch_radius_y()); |
| 1368 | 1356 |
| 1369 generator.ScrollSequence(gfx::Point(0, 0), | 1357 generator.ScrollSequence(gfx::Point(0, 0), |
| 1370 base::TimeDelta::FromMilliseconds(100), 10.0, 1.0, 5, | 1358 base::TimeDelta::FromMilliseconds(100), 10.0, 1.0, 5, |
| 1371 1); | 1359 1); |
| 1372 | 1360 |
| 1373 // ordinal_offset is invariant to the device scale factor. | 1361 // ordinal_offset is invariant to the device scale factor. |
| 1374 EXPECT_EQ(event_handler.scroll_x_offset(), | 1362 EXPECT_EQ(event_handler.scroll_x_offset(), |
| 1375 event_handler.scroll_x_offset_ordinal()); | 1363 event_handler.scroll_x_offset_ordinal()); |
| 1376 EXPECT_EQ(event_handler.scroll_y_offset(), | 1364 EXPECT_EQ(event_handler.scroll_y_offset(), |
| 1377 event_handler.scroll_y_offset_ordinal()); | 1365 event_handler.scroll_y_offset_ordinal()); |
| 1378 | 1366 |
| 1379 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 1367 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
| 1380 } | 1368 } |
| 1381 | 1369 |
| 1382 TEST_P(WindowTreeHostManagerTest, ConvertHostToRootCoords) { | 1370 TEST_F(WindowTreeHostManagerTest, ConvertHostToRootCoords) { |
| 1383 TestEventHandler event_handler; | 1371 TestEventHandler event_handler; |
| 1384 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 1372 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
| 1385 | 1373 |
| 1386 UpdateDisplay("600x400*2/r@1.5"); | 1374 UpdateDisplay("600x400*2/r@1.5"); |
| 1387 | 1375 |
| 1388 display::Display display1 = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1376 display::Display display1 = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 1389 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1377 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 1390 EXPECT_EQ("0,0 300x450", display1.bounds().ToString()); | 1378 EXPECT_EQ("0,0 300x450", display1.bounds().ToString()); |
| 1391 EXPECT_EQ("0,0 300x450", root_windows[0]->bounds().ToString()); | 1379 EXPECT_EQ("0,0 300x450", root_windows[0]->bounds().ToString()); |
| 1392 EXPECT_EQ(1.5f, GetStoredUIScale(display1.id())); | 1380 EXPECT_EQ(1.5f, GetStoredUIScale(display1.id())); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1431 generator.MoveMouseToInHost(599, 399); | 1419 generator.MoveMouseToInHost(599, 399); |
| 1432 EXPECT_EQ("0,449", event_handler.GetLocationAndReset()); | 1420 EXPECT_EQ("0,449", event_handler.GetLocationAndReset()); |
| 1433 generator.MoveMouseToInHost(0, 399); | 1421 generator.MoveMouseToInHost(0, 399); |
| 1434 EXPECT_EQ("0,0", event_handler.GetLocationAndReset()); | 1422 EXPECT_EQ("0,0", event_handler.GetLocationAndReset()); |
| 1435 | 1423 |
| 1436 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 1424 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
| 1437 } | 1425 } |
| 1438 | 1426 |
| 1439 // Make sure that the compositor based mirroring can switch | 1427 // Make sure that the compositor based mirroring can switch |
| 1440 // from/to dock mode. | 1428 // from/to dock mode. |
| 1441 TEST_P(WindowTreeHostManagerTest, DockToSingle) { | 1429 TEST_F(WindowTreeHostManagerTest, DockToSingle) { |
| 1442 const int64_t internal_id = 1; | 1430 const int64_t internal_id = 1; |
| 1443 | 1431 |
| 1444 const display::ManagedDisplayInfo internal_display_info = | 1432 const display::ManagedDisplayInfo internal_display_info = |
| 1445 CreateDisplayInfo(internal_id, 0, display::Display::ROTATE_0); | 1433 CreateDisplayInfo(internal_id, 0, display::Display::ROTATE_0); |
| 1446 const display::ManagedDisplayInfo external_display_info = | 1434 const display::ManagedDisplayInfo external_display_info = |
| 1447 CreateDisplayInfo(2, 1, display::Display::ROTATE_90); | 1435 CreateDisplayInfo(2, 1, display::Display::ROTATE_90); |
| 1448 | 1436 |
| 1449 std::vector<display::ManagedDisplayInfo> display_info_list; | 1437 std::vector<display::ManagedDisplayInfo> display_info_list; |
| 1450 // Extended | 1438 // Extended |
| 1451 display_info_list.push_back(internal_display_info); | 1439 display_info_list.push_back(internal_display_info); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1473 display_info_list.push_back(internal_display_info); | 1461 display_info_list.push_back(internal_display_info); |
| 1474 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1462 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1475 EXPECT_TRUE(Shell::GetPrimaryRootWindow() | 1463 EXPECT_TRUE(Shell::GetPrimaryRootWindow() |
| 1476 ->GetHost() | 1464 ->GetHost() |
| 1477 ->GetRootTransform() | 1465 ->GetRootTransform() |
| 1478 .IsIdentityOrIntegerTranslation()); | 1466 .IsIdentityOrIntegerTranslation()); |
| 1479 } | 1467 } |
| 1480 | 1468 |
| 1481 // Tests if switching two displays at the same time while the primary display | 1469 // Tests if switching two displays at the same time while the primary display |
| 1482 // is swapped should not cause a crash. (crbug.com/426292) | 1470 // is swapped should not cause a crash. (crbug.com/426292) |
| 1483 TEST_P(WindowTreeHostManagerTest, ReplaceSwappedPrimary) { | 1471 TEST_F(WindowTreeHostManagerTest, ReplaceSwappedPrimary) { |
| 1484 const display::ManagedDisplayInfo first_display_info = | 1472 const display::ManagedDisplayInfo first_display_info = |
| 1485 CreateDisplayInfo(10, 0, display::Display::ROTATE_0); | 1473 CreateDisplayInfo(10, 0, display::Display::ROTATE_0); |
| 1486 const display::ManagedDisplayInfo second_display_info = | 1474 const display::ManagedDisplayInfo second_display_info = |
| 1487 CreateDisplayInfo(11, 1, display::Display::ROTATE_0); | 1475 CreateDisplayInfo(11, 1, display::Display::ROTATE_0); |
| 1488 | 1476 |
| 1489 std::vector<display::ManagedDisplayInfo> display_info_list; | 1477 std::vector<display::ManagedDisplayInfo> display_info_list; |
| 1490 // Extended | 1478 // Extended |
| 1491 display_info_list.push_back(first_display_info); | 1479 display_info_list.push_back(first_display_info); |
| 1492 display_info_list.push_back(second_display_info); | 1480 display_info_list.push_back(second_display_info); |
| 1493 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1481 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1533 }; | 1521 }; |
| 1534 | 1522 |
| 1535 } // names | 1523 } // names |
| 1536 | 1524 |
| 1537 // Make sure that GetDisplayBoundsWithShelf returns the correct bounds | 1525 // Make sure that GetDisplayBoundsWithShelf returns the correct bounds |
| 1538 // when the primary display gets replaced in one of the following scenarios: | 1526 // when the primary display gets replaced in one of the following scenarios: |
| 1539 // 1) Two displays connected: a) b) | 1527 // 1) Two displays connected: a) b) |
| 1540 // 2) both are disconnected and new one with the same size as b) is connected | 1528 // 2) both are disconnected and new one with the same size as b) is connected |
| 1541 // in one configuration event. | 1529 // in one configuration event. |
| 1542 // See crbug.com/547280. | 1530 // See crbug.com/547280. |
| 1543 TEST_P(WindowTreeHostManagerTest, ReplacePrimary) { | 1531 TEST_F(WindowTreeHostManagerTest, ReplacePrimary) { |
| 1544 display::ManagedDisplayInfo first_display_info = | 1532 display::ManagedDisplayInfo first_display_info = |
| 1545 CreateDisplayInfo(10, 0, display::Display::ROTATE_0); | 1533 CreateDisplayInfo(10, 0, display::Display::ROTATE_0); |
| 1546 first_display_info.SetBounds(gfx::Rect(0, 0, 400, 400)); | 1534 first_display_info.SetBounds(gfx::Rect(0, 0, 400, 400)); |
| 1547 const display::ManagedDisplayInfo second_display_info = | 1535 const display::ManagedDisplayInfo second_display_info = |
| 1548 CreateDisplayInfo(11, 500, display::Display::ROTATE_0); | 1536 CreateDisplayInfo(11, 500, display::Display::ROTATE_0); |
| 1549 | 1537 |
| 1550 std::vector<display::ManagedDisplayInfo> display_info_list; | 1538 std::vector<display::ManagedDisplayInfo> display_info_list; |
| 1551 // Extended | 1539 // Extended |
| 1552 display_info_list.push_back(first_display_info); | 1540 display_info_list.push_back(first_display_info); |
| 1553 display_info_list.push_back(second_display_info); | 1541 display_info_list.push_back(second_display_info); |
| 1554 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1542 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1555 aura::Window* primary_root = Shell::GetAllRootWindows()[0]; | 1543 aura::Window* primary_root = Shell::GetAllRootWindows()[0]; |
| 1556 | 1544 |
| 1557 int64_t new_display_id = 20; | 1545 int64_t new_display_id = 20; |
| 1558 RootWindowTestObserver test_observer; | 1546 RootWindowTestObserver test_observer; |
| 1559 primary_root->AddObserver(&test_observer); | 1547 primary_root->AddObserver(&test_observer); |
| 1560 | 1548 |
| 1561 display_info_list.clear(); | 1549 display_info_list.clear(); |
| 1562 const display::ManagedDisplayInfo new_first_display_info = | 1550 const display::ManagedDisplayInfo new_first_display_info = |
| 1563 CreateDisplayInfo(new_display_id, 0, display::Display::ROTATE_0); | 1551 CreateDisplayInfo(new_display_id, 0, display::Display::ROTATE_0); |
| 1564 | 1552 |
| 1565 display_info_list.push_back(new_first_display_info); | 1553 display_info_list.push_back(new_first_display_info); |
| 1566 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1554 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1567 EXPECT_EQ("0,0 500x500", test_observer.shelf_display_bounds().ToString()); | 1555 EXPECT_EQ("0,0 500x500", test_observer.shelf_display_bounds().ToString()); |
| 1568 primary_root->RemoveObserver(&test_observer); | 1556 primary_root->RemoveObserver(&test_observer); |
| 1569 } | 1557 } |
| 1570 | 1558 |
| 1571 TEST_P(WindowTreeHostManagerTest, UpdateMouseLocationAfterDisplayChange) { | 1559 TEST_F(WindowTreeHostManagerTest, UpdateMouseLocationAfterDisplayChange) { |
| 1572 UpdateDisplay("200x200,300x300"); | 1560 UpdateDisplay("200x200,300x300"); |
| 1573 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1561 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 1574 | 1562 |
| 1575 aura::Env* env = aura::Env::GetInstance(); | 1563 aura::Env* env = aura::Env::GetInstance(); |
| 1576 | 1564 |
| 1577 ui::test::EventGenerator generator(root_windows[0]); | 1565 ui::test::EventGenerator generator(root_windows[0]); |
| 1578 | 1566 |
| 1579 // Set the initial position. | 1567 // Set the initial position. |
| 1580 generator.MoveMouseToInHost(350, 150); | 1568 generator.MoveMouseToInHost(350, 150); |
| 1581 EXPECT_EQ("350,150", env->last_mouse_location().ToString()); | 1569 EXPECT_EQ("350,150", env->last_mouse_location().ToString()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1601 | 1589 |
| 1602 // Move the mouse pointer to the bottom of 1st display. | 1590 // Move the mouse pointer to the bottom of 1st display. |
| 1603 generator.MoveMouseToInHost(150, 290); | 1591 generator.MoveMouseToInHost(150, 290); |
| 1604 EXPECT_EQ("150,290", env->last_mouse_location().ToString()); | 1592 EXPECT_EQ("150,290", env->last_mouse_location().ToString()); |
| 1605 | 1593 |
| 1606 // The mouse pointer is now on 2nd display. | 1594 // The mouse pointer is now on 2nd display. |
| 1607 UpdateDisplay("300x280,200x200"); | 1595 UpdateDisplay("300x280,200x200"); |
| 1608 EXPECT_EQ("450,10", env->last_mouse_location().ToString()); | 1596 EXPECT_EQ("450,10", env->last_mouse_location().ToString()); |
| 1609 } | 1597 } |
| 1610 | 1598 |
| 1611 TEST_P(WindowTreeHostManagerTest, | 1599 TEST_F(WindowTreeHostManagerTest, |
| 1612 UpdateMouseLocationAfterDisplayChange_2ndOnLeft) { | 1600 UpdateMouseLocationAfterDisplayChange_2ndOnLeft) { |
| 1613 // Set the 2nd display on the left. | 1601 // Set the 2nd display on the left. |
| 1614 display::DisplayLayoutStore* layout_store = display_manager()->layout_store(); | 1602 display::DisplayLayoutStore* layout_store = display_manager()->layout_store(); |
| 1615 display::DisplayPlacement new_default(display::DisplayPlacement::LEFT, 0); | 1603 display::DisplayPlacement new_default(display::DisplayPlacement::LEFT, 0); |
| 1616 layout_store->SetDefaultDisplayPlacement(new_default); | 1604 layout_store->SetDefaultDisplayPlacement(new_default); |
| 1617 | 1605 |
| 1618 UpdateDisplay("200x200,300x300"); | 1606 UpdateDisplay("200x200,300x300"); |
| 1619 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1607 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 1620 | 1608 |
| 1621 EXPECT_EQ("-300,0 300x300", | 1609 EXPECT_EQ("-300,0 300x300", |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1637 EXPECT_EQ("-100,50", env->last_mouse_location().ToString()); | 1625 EXPECT_EQ("-100,50", env->last_mouse_location().ToString()); |
| 1638 | 1626 |
| 1639 // 2nd display was disconnected. Mouse pointer should move to | 1627 // 2nd display was disconnected. Mouse pointer should move to |
| 1640 // 1st display. | 1628 // 1st display. |
| 1641 UpdateDisplay("300x300"); | 1629 UpdateDisplay("300x300"); |
| 1642 EXPECT_EQ("150,150", env->last_mouse_location().ToString()); | 1630 EXPECT_EQ("150,150", env->last_mouse_location().ToString()); |
| 1643 } | 1631 } |
| 1644 | 1632 |
| 1645 // Test that the cursor swaps displays and that its scale factor and rotation | 1633 // Test that the cursor swaps displays and that its scale factor and rotation |
| 1646 // are updated when the primary display is swapped. | 1634 // are updated when the primary display is swapped. |
| 1647 TEST_P(WindowTreeHostManagerTest, | 1635 TEST_F(WindowTreeHostManagerTest, |
| 1648 UpdateMouseLocationAfterDisplayChange_SwapPrimary) { | 1636 UpdateMouseLocationAfterDisplayChange_SwapPrimary) { |
| 1649 UpdateDisplay("200x200,200x200*2/r"); | 1637 UpdateDisplay("200x200,200x200*2/r"); |
| 1650 | 1638 |
| 1651 aura::Env* env = aura::Env::GetInstance(); | 1639 aura::Env* env = aura::Env::GetInstance(); |
| 1652 Shell* shell = Shell::GetInstance(); | 1640 Shell* shell = Shell::GetInstance(); |
| 1653 WindowTreeHostManager* window_tree_host_manager = | 1641 WindowTreeHostManager* window_tree_host_manager = |
| 1654 shell->window_tree_host_manager(); | 1642 shell->window_tree_host_manager(); |
| 1655 test::CursorManagerTestApi test_api(shell->cursor_manager()); | 1643 test::CursorManagerTestApi test_api(shell->cursor_manager()); |
| 1656 | 1644 |
| 1657 window_tree_host_manager->GetPrimaryRootWindow()->MoveCursorTo( | 1645 window_tree_host_manager->GetPrimaryRootWindow()->MoveCursorTo( |
| 1658 gfx::Point(20, 50)); | 1646 gfx::Point(20, 50)); |
| 1659 | 1647 |
| 1660 EXPECT_EQ("20,50", env->last_mouse_location().ToString()); | 1648 EXPECT_EQ("20,50", env->last_mouse_location().ToString()); |
| 1661 EXPECT_EQ(1.0f, test_api.GetCurrentCursor().device_scale_factor()); | 1649 EXPECT_EQ(1.0f, test_api.GetCurrentCursor().device_scale_factor()); |
| 1662 EXPECT_EQ(display::Display::ROTATE_0, test_api.GetCurrentCursorRotation()); | 1650 EXPECT_EQ(display::Display::ROTATE_0, test_api.GetCurrentCursorRotation()); |
| 1663 | 1651 |
| 1664 SwapPrimaryDisplay(); | 1652 SwapPrimaryDisplay(); |
| 1665 | 1653 |
| 1666 EXPECT_EQ("20,50", env->last_mouse_location().ToString()); | 1654 EXPECT_EQ("20,50", env->last_mouse_location().ToString()); |
| 1667 EXPECT_EQ(2.0f, test_api.GetCurrentCursor().device_scale_factor()); | 1655 EXPECT_EQ(2.0f, test_api.GetCurrentCursor().device_scale_factor()); |
| 1668 EXPECT_EQ(display::Display::ROTATE_90, test_api.GetCurrentCursorRotation()); | 1656 EXPECT_EQ(display::Display::ROTATE_90, test_api.GetCurrentCursorRotation()); |
| 1669 } | 1657 } |
| 1670 | 1658 |
| 1671 // Test that the cursor moves to the other display and that its scale factor | 1659 // Test that the cursor moves to the other display and that its scale factor |
| 1672 // and rotation are updated when the primary display is disconnected. | 1660 // and rotation are updated when the primary display is disconnected. |
| 1673 TEST_P(WindowTreeHostManagerTest, | 1661 TEST_F(WindowTreeHostManagerTest, |
| 1674 UpdateMouseLocationAfterDisplayChange_PrimaryDisconnected) { | 1662 UpdateMouseLocationAfterDisplayChange_PrimaryDisconnected) { |
| 1675 aura::Env* env = aura::Env::GetInstance(); | 1663 aura::Env* env = aura::Env::GetInstance(); |
| 1676 Shell* shell = Shell::GetInstance(); | 1664 Shell* shell = Shell::GetInstance(); |
| 1677 WindowTreeHostManager* window_tree_host_manager = | 1665 WindowTreeHostManager* window_tree_host_manager = |
| 1678 shell->window_tree_host_manager(); | 1666 shell->window_tree_host_manager(); |
| 1679 test::CursorManagerTestApi test_api(shell->cursor_manager()); | 1667 test::CursorManagerTestApi test_api(shell->cursor_manager()); |
| 1680 | 1668 |
| 1681 UpdateDisplay("300x300*2/r,200x200"); | 1669 UpdateDisplay("300x300*2/r,200x200"); |
| 1682 // Swap the primary display to make it possible to remove the primary display | 1670 // Swap the primary display to make it possible to remove the primary display |
| 1683 // via UpdateDisplay(). | 1671 // via UpdateDisplay(). |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1696 window_tree_host_manager->GetPrimaryDisplayId()); | 1684 window_tree_host_manager->GetPrimaryDisplayId()); |
| 1697 | 1685 |
| 1698 // Cursor should be centered on the remaining display. | 1686 // Cursor should be centered on the remaining display. |
| 1699 EXPECT_EQ("75,75", env->last_mouse_location().ToString()); | 1687 EXPECT_EQ("75,75", env->last_mouse_location().ToString()); |
| 1700 EXPECT_EQ(2.0f, test_api.GetCurrentCursor().device_scale_factor()); | 1688 EXPECT_EQ(2.0f, test_api.GetCurrentCursor().device_scale_factor()); |
| 1701 EXPECT_EQ(display::Display::ROTATE_90, test_api.GetCurrentCursorRotation()); | 1689 EXPECT_EQ(display::Display::ROTATE_90, test_api.GetCurrentCursorRotation()); |
| 1702 } | 1690 } |
| 1703 | 1691 |
| 1704 // GetRootWindowForDisplayId() for removed display::Display during | 1692 // GetRootWindowForDisplayId() for removed display::Display during |
| 1705 // OnDisplayRemoved() should not cause crash. See http://crbug.com/415222 | 1693 // OnDisplayRemoved() should not cause crash. See http://crbug.com/415222 |
| 1706 TEST_P(WindowTreeHostManagerTest, | 1694 TEST_F(WindowTreeHostManagerTest, |
| 1707 GetRootWindowForDisplayIdDuringDisplayDisconnection) { | 1695 GetRootWindowForDisplayIdDuringDisplayDisconnection) { |
| 1708 UpdateDisplay("300x300,200x200"); | 1696 UpdateDisplay("300x300,200x200"); |
| 1709 aura::Window* root2 = Shell::GetInstance() | 1697 aura::Window* root2 = Shell::GetInstance() |
| 1710 ->window_tree_host_manager() | 1698 ->window_tree_host_manager() |
| 1711 ->GetRootWindowForDisplayId( | 1699 ->GetRootWindowForDisplayId( |
| 1712 display_manager()->GetSecondaryDisplay().id()); | 1700 display_manager()->GetSecondaryDisplay().id()); |
| 1713 views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds( | 1701 views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds( |
| 1714 nullptr, root2, gfx::Rect(350, 0, 100, 100)); | 1702 nullptr, root2, gfx::Rect(350, 0, 100, 100)); |
| 1715 views::View* view = new views::View(); | 1703 views::View* view = new views::View(); |
| 1716 widget->GetContentsView()->AddChildView(view); | 1704 widget->GetContentsView()->AddChildView(view); |
| 1717 view->SetBounds(0, 0, 100, 100); | 1705 view->SetBounds(0, 0, 100, 100); |
| 1718 widget->Show(); | 1706 widget->Show(); |
| 1719 | 1707 |
| 1720 TestMouseWatcherListener listener; | 1708 TestMouseWatcherListener listener; |
| 1721 views::MouseWatcher watcher( | 1709 views::MouseWatcher watcher( |
| 1722 new views::MouseWatcherViewHost(view, gfx::Insets()), &listener); | 1710 new views::MouseWatcherViewHost(view, gfx::Insets()), &listener); |
| 1723 watcher.Start(); | 1711 watcher.Start(); |
| 1724 | 1712 |
| 1725 ui::test::EventGenerator event_generator( | 1713 ui::test::EventGenerator event_generator( |
| 1726 widget->GetNativeWindow()->GetRootWindow()); | 1714 widget->GetNativeWindow()->GetRootWindow()); |
| 1727 event_generator.MoveMouseToCenterOf(widget->GetNativeWindow()); | 1715 event_generator.MoveMouseToCenterOf(widget->GetNativeWindow()); |
| 1728 | 1716 |
| 1729 UpdateDisplay("300x300"); | 1717 UpdateDisplay("300x300"); |
| 1730 watcher.Stop(); | 1718 watcher.Stop(); |
| 1731 | 1719 |
| 1732 widget->CloseNow(); | 1720 widget->CloseNow(); |
| 1733 } | 1721 } |
| 1734 | 1722 |
| 1735 } // namespace ash | 1723 } // namespace ash |
| OLD | NEW |