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/aura/wm_window_aura.h" | 9 #include "ash/aura/wm_window_aura.h" |
10 #include "ash/common/ash_switches.h" | 10 #include "ash/common/ash_switches.h" |
11 #include "ash/common/display/display_info.h" | |
12 #include "ash/common/material_design/material_design_controller.h" | 11 #include "ash/common/material_design/material_design_controller.h" |
13 #include "ash/common/shelf/shelf.h" | 12 #include "ash/common/shelf/shelf.h" |
14 #include "ash/common/shelf/shelf_widget.h" | 13 #include "ash/common/shelf/shelf_widget.h" |
15 #include "ash/common/wm/window_state.h" | 14 #include "ash/common/wm/window_state.h" |
16 #include "ash/common/wm/wm_event.h" | 15 #include "ash/common/wm/wm_event.h" |
17 #include "ash/common/wm/wm_screen_util.h" | 16 #include "ash/common/wm/wm_screen_util.h" |
18 #include "ash/display/display_manager.h" | 17 #include "ash/display/display_manager.h" |
19 #include "ash/display/display_util.h" | 18 #include "ash/display/display_util.h" |
20 #include "ash/screen_util.h" | 19 #include "ash/screen_util.h" |
21 #include "ash/shell.h" | 20 #include "ash/shell.h" |
22 #include "ash/test/ash_md_test_base.h" | 21 #include "ash/test/ash_md_test_base.h" |
23 #include "ash/test/ash_test_base.h" | 22 #include "ash/test/ash_test_base.h" |
24 #include "ash/test/ash_test_helper.h" | 23 #include "ash/test/ash_test_helper.h" |
25 #include "ash/test/cursor_manager_test_api.h" | 24 #include "ash/test/cursor_manager_test_api.h" |
26 #include "ash/test/display_manager_test_api.h" | 25 #include "ash/test/display_manager_test_api.h" |
27 #include "ash/test/test_shell_delegate.h" | 26 #include "ash/test/test_shell_delegate.h" |
28 #include "ash/wm/window_state_aura.h" | 27 #include "ash/wm/window_state_aura.h" |
29 #include "base/command_line.h" | 28 #include "base/command_line.h" |
30 #include "ui/aura/client/focus_change_observer.h" | 29 #include "ui/aura/client/focus_change_observer.h" |
31 #include "ui/aura/client/focus_client.h" | 30 #include "ui/aura/client/focus_client.h" |
32 #include "ui/aura/env.h" | 31 #include "ui/aura/env.h" |
33 #include "ui/aura/window_observer.h" | 32 #include "ui/aura/window_observer.h" |
34 #include "ui/aura/window_tracker.h" | 33 #include "ui/aura/window_tracker.h" |
35 #include "ui/aura/window_tree_host.h" | 34 #include "ui/aura/window_tree_host.h" |
36 #include "ui/display/display.h" | 35 #include "ui/display/display.h" |
37 #include "ui/display/display_observer.h" | 36 #include "ui/display/display_observer.h" |
38 #include "ui/display/manager/display_layout.h" | 37 #include "ui/display/manager/display_layout.h" |
39 #include "ui/display/manager/display_layout_store.h" | 38 #include "ui/display/manager/display_layout_store.h" |
| 39 #include "ui/display/manager/managed_display_info.h" |
40 #include "ui/display/screen.h" | 40 #include "ui/display/screen.h" |
41 #include "ui/events/event_handler.h" | 41 #include "ui/events/event_handler.h" |
42 #include "ui/events/test/event_generator.h" | 42 #include "ui/events/test/event_generator.h" |
43 #include "ui/views/mouse_watcher.h" | 43 #include "ui/views/mouse_watcher.h" |
44 #include "ui/views/mouse_watcher_view_host.h" | 44 #include "ui/views/mouse_watcher_view_host.h" |
45 #include "ui/views/view.h" | 45 #include "ui/views/view.h" |
46 #include "ui/views/widget/widget.h" | 46 #include "ui/views/widget/widget.h" |
47 #include "ui/wm/public/activation_change_observer.h" | 47 #include "ui/wm/public/activation_change_observer.h" |
48 #include "ui/wm/public/activation_client.h" | 48 #include "ui/wm/public/activation_client.h" |
49 | 49 |
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
547 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 547 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
548 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()); | 548 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()); |
549 | 549 |
550 UpdateDisplay("500x500"); | 550 UpdateDisplay("500x500"); |
551 EXPECT_LE(1, observer.GetFocusChangedCountAndReset()); | 551 EXPECT_LE(1, observer.GetFocusChangedCountAndReset()); |
552 EXPECT_LE(1, observer.GetActivationChangedCountAndReset()); | 552 EXPECT_LE(1, observer.GetActivationChangedCountAndReset()); |
553 } | 553 } |
554 | 554 |
555 namespace { | 555 namespace { |
556 | 556 |
557 DisplayInfo CreateDisplayInfo(int64_t id, | 557 display::ManagedDisplayInfo |
558 int y, | 558 CreateDisplayInfo(int64_t id, int y, display::Display::Rotation rotation) { |
559 display::Display::Rotation rotation) { | 559 display::ManagedDisplayInfo info(id, "", false); |
560 DisplayInfo info(id, "", false); | |
561 info.SetBounds(gfx::Rect(0, y, 500, 500)); | 560 info.SetBounds(gfx::Rect(0, y, 500, 500)); |
562 info.SetRotation(rotation, display::Display::ROTATION_SOURCE_ACTIVE); | 561 info.SetRotation(rotation, display::Display::ROTATION_SOURCE_ACTIVE); |
563 return info; | 562 return info; |
564 } | 563 } |
565 | 564 |
566 DisplayInfo CreateMirroredDisplayInfo(int64_t id, float device_scale_factor) { | 565 display::ManagedDisplayInfo CreateMirroredDisplayInfo( |
567 DisplayInfo info = CreateDisplayInfo(id, 0, display::Display::ROTATE_0); | 566 int64_t id, |
| 567 float device_scale_factor) { |
| 568 display::ManagedDisplayInfo info = |
| 569 CreateDisplayInfo(id, 0, display::Display::ROTATE_0); |
568 info.set_device_scale_factor(device_scale_factor); | 570 info.set_device_scale_factor(device_scale_factor); |
569 return info; | 571 return info; |
570 } | 572 } |
571 | 573 |
572 } // namespace | 574 } // namespace |
573 | 575 |
574 TEST_P(WindowTreeHostManagerTest, MirrorToDockedWithFullscreen) { | 576 TEST_P(WindowTreeHostManagerTest, MirrorToDockedWithFullscreen) { |
575 if (!SupportsMultipleDisplays()) | 577 if (!SupportsMultipleDisplays()) |
576 return; | 578 return; |
577 | 579 |
578 // Creates windows to catch activation change event. | 580 // Creates windows to catch activation change event. |
579 std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); | 581 std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); |
580 w1->Focus(); | 582 w1->Focus(); |
581 | 583 |
582 // Docked mode. | 584 // Docked mode. |
583 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 585 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
584 | 586 |
585 const DisplayInfo internal_display_info = CreateMirroredDisplayInfo(1, 2.0f); | 587 const display::ManagedDisplayInfo internal_display_info = |
586 const DisplayInfo external_display_info = CreateMirroredDisplayInfo(2, 1.0f); | 588 CreateMirroredDisplayInfo(1, 2.0f); |
| 589 const display::ManagedDisplayInfo external_display_info = |
| 590 CreateMirroredDisplayInfo(2, 1.0f); |
587 | 591 |
588 std::vector<DisplayInfo> display_info_list; | 592 std::vector<display::ManagedDisplayInfo> display_info_list; |
589 // Mirror. | 593 // Mirror. |
590 display_info_list.push_back(internal_display_info); | 594 display_info_list.push_back(internal_display_info); |
591 display_info_list.push_back(external_display_info); | 595 display_info_list.push_back(external_display_info); |
592 display_manager->OnNativeDisplaysChanged(display_info_list); | 596 display_manager->OnNativeDisplaysChanged(display_info_list); |
593 const int64_t internal_display_id = | 597 const int64_t internal_display_id = |
594 test::DisplayManagerTestApi().SetFirstDisplayAsInternalDisplay(); | 598 test::DisplayManagerTestApi().SetFirstDisplayAsInternalDisplay(); |
595 EXPECT_EQ(1, internal_display_id); | 599 EXPECT_EQ(1, internal_display_id); |
596 EXPECT_EQ(2U, display_manager->num_connected_displays()); | 600 EXPECT_EQ(2U, display_manager->num_connected_displays()); |
597 EXPECT_EQ(1U, display_manager->GetNumDisplays()); | 601 EXPECT_EQ(1U, display_manager->GetNumDisplays()); |
598 | 602 |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
887 .id()); | 891 .id()); |
888 EXPECT_EQ( | 892 EXPECT_EQ( |
889 primary_display.id(), | 893 primary_display.id(), |
890 display::Screen::GetScreen()->GetDisplayNearestWindow(nullptr).id()); | 894 display::Screen::GetScreen()->GetDisplayNearestWindow(nullptr).id()); |
891 EXPECT_TRUE(tracker.Contains(primary_root)); | 895 EXPECT_TRUE(tracker.Contains(primary_root)); |
892 EXPECT_FALSE(tracker.Contains(secondary_root)); | 896 EXPECT_FALSE(tracker.Contains(secondary_root)); |
893 EXPECT_TRUE(primary_root->Contains(shelf_window)); | 897 EXPECT_TRUE(primary_root->Contains(shelf_window)); |
894 | 898 |
895 // Adding 2nd display with the same ID. The 2nd display should become primary | 899 // Adding 2nd display with the same ID. The 2nd display should become primary |
896 // since secondary id is still stored as desirable_primary_id. | 900 // since secondary id is still stored as desirable_primary_id. |
897 std::vector<DisplayInfo> display_info_list; | 901 std::vector<display::ManagedDisplayInfo> display_info_list; |
898 display_info_list.push_back( | 902 display_info_list.push_back( |
899 display_manager->GetDisplayInfo(primary_display.id())); | 903 display_manager->GetDisplayInfo(primary_display.id())); |
900 display_info_list.push_back( | 904 display_info_list.push_back( |
901 display_manager->GetDisplayInfo(secondary_display.id())); | 905 display_manager->GetDisplayInfo(secondary_display.id())); |
902 | 906 |
903 display_manager->OnNativeDisplaysChanged(display_info_list); | 907 display_manager->OnNativeDisplaysChanged(display_info_list); |
904 | 908 |
905 EXPECT_EQ(2, display::Screen::GetScreen()->GetNumDisplays()); | 909 EXPECT_EQ(2, display::Screen::GetScreen()->GetNumDisplays()); |
906 EXPECT_EQ(secondary_display.id(), | 910 EXPECT_EQ(secondary_display.id(), |
907 display::Screen::GetScreen()->GetPrimaryDisplay().id()); | 911 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
908 EXPECT_EQ(primary_display.id(), ScreenUtil::GetSecondaryDisplay().id()); | 912 EXPECT_EQ(primary_display.id(), ScreenUtil::GetSecondaryDisplay().id()); |
909 EXPECT_EQ(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( | 913 EXPECT_EQ(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( |
910 secondary_display.id())); | 914 secondary_display.id())); |
911 EXPECT_NE(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( | 915 EXPECT_NE(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( |
912 primary_display.id())); | 916 primary_display.id())); |
913 EXPECT_TRUE(primary_root->Contains(shelf_window)); | 917 EXPECT_TRUE(primary_root->Contains(shelf_window)); |
914 | 918 |
915 // Deleting 2nd display and adding 2nd display with a different ID. The 2nd | 919 // Deleting 2nd display and adding 2nd display with a different ID. The 2nd |
916 // display shouldn't become primary. | 920 // display shouldn't become primary. |
917 UpdateDisplay("200x200"); | 921 UpdateDisplay("200x200"); |
918 DisplayInfo third_display_info(secondary_display.id() + 1, std::string(), | 922 display::ManagedDisplayInfo third_display_info(secondary_display.id() + 1, |
919 false); | 923 std::string(), false); |
920 third_display_info.SetBounds(secondary_display.bounds()); | 924 third_display_info.SetBounds(secondary_display.bounds()); |
921 ASSERT_NE(primary_display.id(), third_display_info.id()); | 925 ASSERT_NE(primary_display.id(), third_display_info.id()); |
922 | 926 |
923 const DisplayInfo& primary_display_info = | 927 const display::ManagedDisplayInfo& primary_display_info = |
924 display_manager->GetDisplayInfo(primary_display.id()); | 928 display_manager->GetDisplayInfo(primary_display.id()); |
925 std::vector<DisplayInfo> display_info_list2; | 929 std::vector<display::ManagedDisplayInfo> display_info_list2; |
926 display_info_list2.push_back(primary_display_info); | 930 display_info_list2.push_back(primary_display_info); |
927 display_info_list2.push_back(third_display_info); | 931 display_info_list2.push_back(third_display_info); |
928 display_manager->OnNativeDisplaysChanged(display_info_list2); | 932 display_manager->OnNativeDisplaysChanged(display_info_list2); |
929 EXPECT_EQ(2, display::Screen::GetScreen()->GetNumDisplays()); | 933 EXPECT_EQ(2, display::Screen::GetScreen()->GetNumDisplays()); |
930 EXPECT_EQ(primary_display.id(), | 934 EXPECT_EQ(primary_display.id(), |
931 display::Screen::GetScreen()->GetPrimaryDisplay().id()); | 935 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
932 EXPECT_EQ(third_display_info.id(), ScreenUtil::GetSecondaryDisplay().id()); | 936 EXPECT_EQ(third_display_info.id(), ScreenUtil::GetSecondaryDisplay().id()); |
933 EXPECT_EQ(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( | 937 EXPECT_EQ(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( |
934 primary_display.id())); | 938 primary_display.id())); |
935 EXPECT_NE(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( | 939 EXPECT_NE(primary_root, window_tree_host_manager->GetRootWindowForDisplayId( |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1212 // Make sure that the compositor based mirroring can switch | 1216 // Make sure that the compositor based mirroring can switch |
1213 // from/to dock mode. | 1217 // from/to dock mode. |
1214 TEST_P(WindowTreeHostManagerTest, DockToSingle) { | 1218 TEST_P(WindowTreeHostManagerTest, DockToSingle) { |
1215 if (!SupportsMultipleDisplays()) | 1219 if (!SupportsMultipleDisplays()) |
1216 return; | 1220 return; |
1217 | 1221 |
1218 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 1222 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
1219 | 1223 |
1220 const int64_t internal_id = 1; | 1224 const int64_t internal_id = 1; |
1221 | 1225 |
1222 const DisplayInfo internal_display_info = | 1226 const display::ManagedDisplayInfo internal_display_info = |
1223 CreateDisplayInfo(internal_id, 0, display::Display::ROTATE_0); | 1227 CreateDisplayInfo(internal_id, 0, display::Display::ROTATE_0); |
1224 const DisplayInfo external_display_info = | 1228 const display::ManagedDisplayInfo external_display_info = |
1225 CreateDisplayInfo(2, 1, display::Display::ROTATE_90); | 1229 CreateDisplayInfo(2, 1, display::Display::ROTATE_90); |
1226 | 1230 |
1227 std::vector<DisplayInfo> display_info_list; | 1231 std::vector<display::ManagedDisplayInfo> display_info_list; |
1228 // Extended | 1232 // Extended |
1229 display_info_list.push_back(internal_display_info); | 1233 display_info_list.push_back(internal_display_info); |
1230 display_info_list.push_back(external_display_info); | 1234 display_info_list.push_back(external_display_info); |
1231 display_manager->OnNativeDisplaysChanged(display_info_list); | 1235 display_manager->OnNativeDisplaysChanged(display_info_list); |
1232 const int64_t internal_display_id = | 1236 const int64_t internal_display_id = |
1233 test::DisplayManagerTestApi().SetFirstDisplayAsInternalDisplay(); | 1237 test::DisplayManagerTestApi().SetFirstDisplayAsInternalDisplay(); |
1234 EXPECT_EQ(internal_id, internal_display_id); | 1238 EXPECT_EQ(internal_id, internal_display_id); |
1235 EXPECT_EQ(2U, display_manager->GetNumDisplays()); | 1239 EXPECT_EQ(2U, display_manager->GetNumDisplays()); |
1236 | 1240 |
1237 // Dock mode. | 1241 // Dock mode. |
(...skipping 17 matching lines...) Expand all Loading... |
1255 .IsIdentityOrIntegerTranslation()); | 1259 .IsIdentityOrIntegerTranslation()); |
1256 } | 1260 } |
1257 | 1261 |
1258 // Tests if switching two displays at the same time while the primary display | 1262 // Tests if switching two displays at the same time while the primary display |
1259 // is swapped should not cause a crash. (crbug.com/426292) | 1263 // is swapped should not cause a crash. (crbug.com/426292) |
1260 TEST_P(WindowTreeHostManagerTest, ReplaceSwappedPrimary) { | 1264 TEST_P(WindowTreeHostManagerTest, ReplaceSwappedPrimary) { |
1261 if (!SupportsMultipleDisplays()) | 1265 if (!SupportsMultipleDisplays()) |
1262 return; | 1266 return; |
1263 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 1267 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
1264 | 1268 |
1265 const DisplayInfo first_display_info = | 1269 const display::ManagedDisplayInfo first_display_info = |
1266 CreateDisplayInfo(10, 0, display::Display::ROTATE_0); | 1270 CreateDisplayInfo(10, 0, display::Display::ROTATE_0); |
1267 const DisplayInfo second_display_info = | 1271 const display::ManagedDisplayInfo second_display_info = |
1268 CreateDisplayInfo(11, 1, display::Display::ROTATE_0); | 1272 CreateDisplayInfo(11, 1, display::Display::ROTATE_0); |
1269 | 1273 |
1270 std::vector<DisplayInfo> display_info_list; | 1274 std::vector<display::ManagedDisplayInfo> display_info_list; |
1271 // Extended | 1275 // Extended |
1272 display_info_list.push_back(first_display_info); | 1276 display_info_list.push_back(first_display_info); |
1273 display_info_list.push_back(second_display_info); | 1277 display_info_list.push_back(second_display_info); |
1274 display_manager->OnNativeDisplaysChanged(display_info_list); | 1278 display_manager->OnNativeDisplaysChanged(display_info_list); |
1275 | 1279 |
1276 test::SwapPrimaryDisplay(); | 1280 test::SwapPrimaryDisplay(); |
1277 | 1281 |
1278 EXPECT_EQ(11, display::Screen::GetScreen()->GetPrimaryDisplay().id()); | 1282 EXPECT_EQ(11, display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
1279 | 1283 |
1280 display_info_list.clear(); | 1284 display_info_list.clear(); |
1281 const DisplayInfo new_first_display_info = | 1285 const display::ManagedDisplayInfo new_first_display_info = |
1282 CreateDisplayInfo(20, 0, display::Display::ROTATE_0); | 1286 CreateDisplayInfo(20, 0, display::Display::ROTATE_0); |
1283 const DisplayInfo new_second_display_info = | 1287 const display::ManagedDisplayInfo new_second_display_info = |
1284 CreateDisplayInfo(21, 1, display::Display::ROTATE_0); | 1288 CreateDisplayInfo(21, 1, display::Display::ROTATE_0); |
1285 display_info_list.push_back(new_first_display_info); | 1289 display_info_list.push_back(new_first_display_info); |
1286 display_info_list.push_back(new_second_display_info); | 1290 display_info_list.push_back(new_second_display_info); |
1287 display_manager->OnNativeDisplaysChanged(display_info_list); | 1291 display_manager->OnNativeDisplaysChanged(display_info_list); |
1288 | 1292 |
1289 EXPECT_EQ(20, display::Screen::GetScreen()->GetPrimaryDisplay().id()); | 1293 EXPECT_EQ(20, display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
1290 } | 1294 } |
1291 | 1295 |
1292 namespace { | 1296 namespace { |
1293 | 1297 |
(...skipping 25 matching lines...) Expand all Loading... |
1319 // when the primary display gets replaced in one of the following scenarios: | 1323 // when the primary display gets replaced in one of the following scenarios: |
1320 // 1) Two displays connected: a) b) | 1324 // 1) Two displays connected: a) b) |
1321 // 2) both are disconnected and new one with the same size as b) is connected | 1325 // 2) both are disconnected and new one with the same size as b) is connected |
1322 // in one configuration event. | 1326 // in one configuration event. |
1323 // See crbug.com/547280. | 1327 // See crbug.com/547280. |
1324 TEST_P(WindowTreeHostManagerTest, ReplacePrimary) { | 1328 TEST_P(WindowTreeHostManagerTest, ReplacePrimary) { |
1325 if (!SupportsMultipleDisplays()) | 1329 if (!SupportsMultipleDisplays()) |
1326 return; | 1330 return; |
1327 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 1331 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
1328 | 1332 |
1329 DisplayInfo first_display_info = | 1333 display::ManagedDisplayInfo first_display_info = |
1330 CreateDisplayInfo(10, 0, display::Display::ROTATE_0); | 1334 CreateDisplayInfo(10, 0, display::Display::ROTATE_0); |
1331 first_display_info.SetBounds(gfx::Rect(0, 0, 400, 400)); | 1335 first_display_info.SetBounds(gfx::Rect(0, 0, 400, 400)); |
1332 const DisplayInfo second_display_info = | 1336 const display::ManagedDisplayInfo second_display_info = |
1333 CreateDisplayInfo(11, 500, display::Display::ROTATE_0); | 1337 CreateDisplayInfo(11, 500, display::Display::ROTATE_0); |
1334 | 1338 |
1335 std::vector<DisplayInfo> display_info_list; | 1339 std::vector<display::ManagedDisplayInfo> display_info_list; |
1336 // Extended | 1340 // Extended |
1337 display_info_list.push_back(first_display_info); | 1341 display_info_list.push_back(first_display_info); |
1338 display_info_list.push_back(second_display_info); | 1342 display_info_list.push_back(second_display_info); |
1339 display_manager->OnNativeDisplaysChanged(display_info_list); | 1343 display_manager->OnNativeDisplaysChanged(display_info_list); |
1340 aura::Window* primary_root = Shell::GetAllRootWindows()[0]; | 1344 aura::Window* primary_root = Shell::GetAllRootWindows()[0]; |
1341 | 1345 |
1342 int64_t new_display_id = 20; | 1346 int64_t new_display_id = 20; |
1343 RootWindowTestObserver test_observer; | 1347 RootWindowTestObserver test_observer; |
1344 primary_root->AddObserver(&test_observer); | 1348 primary_root->AddObserver(&test_observer); |
1345 | 1349 |
1346 display_info_list.clear(); | 1350 display_info_list.clear(); |
1347 const DisplayInfo new_first_display_info = | 1351 const display::ManagedDisplayInfo new_first_display_info = |
1348 CreateDisplayInfo(new_display_id, 0, display::Display::ROTATE_0); | 1352 CreateDisplayInfo(new_display_id, 0, display::Display::ROTATE_0); |
1349 | 1353 |
1350 display_info_list.push_back(new_first_display_info); | 1354 display_info_list.push_back(new_first_display_info); |
1351 display_manager->OnNativeDisplaysChanged(display_info_list); | 1355 display_manager->OnNativeDisplaysChanged(display_info_list); |
1352 EXPECT_EQ("0,0 500x500", test_observer.shelf_display_bounds().ToString()); | 1356 EXPECT_EQ("0,0 500x500", test_observer.shelf_display_bounds().ToString()); |
1353 primary_root->RemoveObserver(&test_observer); | 1357 primary_root->RemoveObserver(&test_observer); |
1354 } | 1358 } |
1355 | 1359 |
1356 TEST_P(WindowTreeHostManagerTest, UpdateMouseLocationAfterDisplayChange) { | 1360 TEST_P(WindowTreeHostManagerTest, UpdateMouseLocationAfterDisplayChange) { |
1357 if (!SupportsMultipleDisplays()) | 1361 if (!SupportsMultipleDisplays()) |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 widget->GetNativeWindow()->GetRootWindow()); | 1531 widget->GetNativeWindow()->GetRootWindow()); |
1528 event_generator.MoveMouseToCenterOf(widget->GetNativeWindow()); | 1532 event_generator.MoveMouseToCenterOf(widget->GetNativeWindow()); |
1529 | 1533 |
1530 UpdateDisplay("300x300"); | 1534 UpdateDisplay("300x300"); |
1531 watcher.Stop(); | 1535 watcher.Stop(); |
1532 | 1536 |
1533 widget->CloseNow(); | 1537 widget->CloseNow(); |
1534 } | 1538 } |
1535 | 1539 |
1536 } // namespace ash | 1540 } // namespace ash |
OLD | NEW |