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_controller.h" | 5 #include "ash/display/display_controller.h" |
6 | 6 |
7 #include "ash/display/display_info.h" | 7 #include "ash/display/display_info.h" |
8 #include "ash/display/display_manager.h" | 8 #include "ash/display/display_manager.h" |
9 #include "ash/launcher/launcher.h" | 9 #include "ash/launcher/launcher.h" |
10 #include "ash/screen_ash.h" | 10 #include "ash/screen_ash.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 | 84 |
85 void SetDefaultDisplayLayout(DisplayLayout::Position position) { | 85 void SetDefaultDisplayLayout(DisplayLayout::Position position) { |
86 Shell::GetInstance()->display_controller()-> | 86 Shell::GetInstance()->display_controller()-> |
87 SetDefaultDisplayLayout(DisplayLayout(position, 0)); | 87 SetDefaultDisplayLayout(DisplayLayout(position, 0)); |
88 } | 88 } |
89 | 89 |
90 class DisplayControllerShutdownTest : public test::AshTestBase { | 90 class DisplayControllerShutdownTest : public test::AshTestBase { |
91 public: | 91 public: |
92 virtual void TearDown() OVERRIDE { | 92 virtual void TearDown() OVERRIDE { |
93 test::AshTestBase::TearDown(); | 93 test::AshTestBase::TearDown(); |
| 94 if (!SupportsMultipleDisplays()) |
| 95 return; |
| 96 |
94 // Make sure that primary display is accessible after shutdown. | 97 // Make sure that primary display is accessible after shutdown. |
95 gfx::Display primary = Shell::GetScreen()->GetPrimaryDisplay(); | 98 gfx::Display primary = Shell::GetScreen()->GetPrimaryDisplay(); |
96 EXPECT_EQ("0,0 444x333", primary.bounds().ToString()); | 99 EXPECT_EQ("0,0 444x333", primary.bounds().ToString()); |
97 EXPECT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 100 EXPECT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
98 } | 101 } |
99 }; | 102 }; |
100 | 103 |
101 class TestEventHandler : public ui::EventHandler { | 104 class TestEventHandler : public ui::EventHandler { |
102 public: | 105 public: |
103 TestEventHandler() : target_root_(NULL), | 106 TestEventHandler() : target_root_(NULL), |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 182 |
180 float GetStoredUIScale(int64 id) { | 183 float GetStoredUIScale(int64 id) { |
181 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).ui_scale(); | 184 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).ui_scale(); |
182 } | 185 } |
183 | 186 |
184 } // namespace | 187 } // namespace |
185 | 188 |
186 typedef test::AshTestBase DisplayControllerTest; | 189 typedef test::AshTestBase DisplayControllerTest; |
187 | 190 |
188 TEST_F(DisplayControllerShutdownTest, Shutdown) { | 191 TEST_F(DisplayControllerShutdownTest, Shutdown) { |
| 192 if (!SupportsMultipleDisplays()) |
| 193 return; |
| 194 |
189 UpdateDisplay("444x333, 200x200"); | 195 UpdateDisplay("444x333, 200x200"); |
190 } | 196 } |
191 | 197 |
192 TEST_F(DisplayControllerTest, SecondaryDisplayLayout) { | 198 TEST_F(DisplayControllerTest, SecondaryDisplayLayout) { |
| 199 if (!SupportsMultipleDisplays()) |
| 200 return; |
| 201 |
193 TestObserver observer; | 202 TestObserver observer; |
194 UpdateDisplay("500x500,400x400"); | 203 UpdateDisplay("500x500,400x400"); |
195 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 204 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
196 gfx::Display* secondary_display = | 205 gfx::Display* secondary_display = |
197 Shell::GetInstance()->display_manager()->GetDisplayAt(1); | 206 Shell::GetInstance()->display_manager()->GetDisplayAt(1); |
198 gfx::Insets insets(5, 5, 5, 5); | 207 gfx::Insets insets(5, 5, 5, 5); |
199 secondary_display->UpdateWorkAreaFromInsets(insets); | 208 secondary_display->UpdateWorkAreaFromInsets(insets); |
200 | 209 |
201 // Default layout is RIGHT. | 210 // Default layout is RIGHT. |
202 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 211 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 262 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
254 EXPECT_EQ("400,500 400x400", GetSecondaryDisplay().bounds().ToString()); | 263 EXPECT_EQ("400,500 400x400", GetSecondaryDisplay().bounds().ToString()); |
255 | 264 |
256 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); | 265 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); |
257 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 266 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
258 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 267 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
259 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()); | 268 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()); |
260 } | 269 } |
261 | 270 |
262 TEST_F(DisplayControllerTest, BoundsUpdated) { | 271 TEST_F(DisplayControllerTest, BoundsUpdated) { |
| 272 if (!SupportsMultipleDisplays()) |
| 273 return; |
| 274 |
263 TestObserver observer; | 275 TestObserver observer; |
264 SetDefaultDisplayLayout(DisplayLayout::BOTTOM); | 276 SetDefaultDisplayLayout(DisplayLayout::BOTTOM); |
265 UpdateDisplay("200x200,300x300"); // layout, resize and add. | 277 UpdateDisplay("200x200,300x300"); // layout, resize and add. |
266 EXPECT_EQ(1, observer.CountAndReset()); | 278 EXPECT_EQ(1, observer.CountAndReset()); |
267 | 279 |
268 internal::DisplayManager* display_manager = | 280 internal::DisplayManager* display_manager = |
269 Shell::GetInstance()->display_manager(); | 281 Shell::GetInstance()->display_manager(); |
270 gfx::Display* secondary_display = display_manager->GetDisplayAt(1); | 282 gfx::Display* secondary_display = display_manager->GetDisplayAt(1); |
271 gfx::Insets insets(5, 5, 5, 5); | 283 gfx::Insets insets(5, 5, 5, 5); |
272 secondary_display->UpdateWorkAreaFromInsets(insets); | 284 secondary_display->UpdateWorkAreaFromInsets(insets); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 EXPECT_EQ(1, observer.CountAndReset()); | 326 EXPECT_EQ(1, observer.CountAndReset()); |
315 display_manager->SetDisplayUIScale(secondary_id, 1.125f); | 327 display_manager->SetDisplayUIScale(secondary_id, 1.125f); |
316 EXPECT_EQ(0, observer.CountAndReset()); | 328 EXPECT_EQ(0, observer.CountAndReset()); |
317 display_manager->SetDisplayUIScale(primary_id, 1.125f); | 329 display_manager->SetDisplayUIScale(primary_id, 1.125f); |
318 EXPECT_EQ(0, observer.CountAndReset()); | 330 EXPECT_EQ(0, observer.CountAndReset()); |
319 display_manager->SetDisplayUIScale(primary_id, 1.125f); | 331 display_manager->SetDisplayUIScale(primary_id, 1.125f); |
320 EXPECT_EQ(0, observer.CountAndReset()); | 332 EXPECT_EQ(0, observer.CountAndReset()); |
321 } | 333 } |
322 | 334 |
323 TEST_F(DisplayControllerTest, MirroredLayout) { | 335 TEST_F(DisplayControllerTest, MirroredLayout) { |
| 336 if (!SupportsMultipleDisplays()) |
| 337 return; |
| 338 |
324 DisplayController* display_controller = | 339 DisplayController* display_controller = |
325 Shell::GetInstance()->display_controller(); | 340 Shell::GetInstance()->display_controller(); |
326 UpdateDisplay("500x500,400x400"); | 341 UpdateDisplay("500x500,400x400"); |
327 EXPECT_FALSE(display_controller->GetCurrentDisplayLayout().mirrored); | 342 EXPECT_FALSE(display_controller->GetCurrentDisplayLayout().mirrored); |
328 EXPECT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 343 EXPECT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
329 EXPECT_EQ( | 344 EXPECT_EQ( |
330 2U, Shell::GetInstance()->display_manager()->num_connected_displays()); | 345 2U, Shell::GetInstance()->display_manager()->num_connected_displays()); |
331 | 346 |
332 UpdateDisplay("500x500,1+0-500x500"); | 347 UpdateDisplay("500x500,1+0-500x500"); |
333 EXPECT_TRUE(display_controller->GetCurrentDisplayLayout().mirrored); | 348 EXPECT_TRUE(display_controller->GetCurrentDisplayLayout().mirrored); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 DisplayLayout(DisplayLayout::TOP, -70).Invert().ToString()); | 380 DisplayLayout(DisplayLayout::TOP, -70).Invert().ToString()); |
366 | 381 |
367 EXPECT_EQ("top, 0", | 382 EXPECT_EQ("top, 0", |
368 DisplayLayout(DisplayLayout::BOTTOM, 0).Invert().ToString()); | 383 DisplayLayout(DisplayLayout::BOTTOM, 0).Invert().ToString()); |
369 EXPECT_EQ("top, -70", | 384 EXPECT_EQ("top, -70", |
370 DisplayLayout(DisplayLayout::BOTTOM, 70).Invert().ToString()); | 385 DisplayLayout(DisplayLayout::BOTTOM, 70).Invert().ToString()); |
371 EXPECT_EQ("top, 80", | 386 EXPECT_EQ("top, 80", |
372 DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString()); | 387 DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString()); |
373 } | 388 } |
374 | 389 |
375 // Crashes flakily on win8 aura bots: crbug.com/237642 | 390 TEST_F(DisplayControllerTest, SwapPrimary) { |
376 #if defined(OS_WIN) && defined(USE_AURA) | 391 if (!SupportsMultipleDisplays()) |
377 #define MAYBE_SwapPrimary DISABLED_SwapPrimary | 392 return; |
378 #else | 393 |
379 #define MAYBE_SwapPrimary SwapPrimary | |
380 #endif | |
381 TEST_F(DisplayControllerTest, MAYBE_SwapPrimary) { | |
382 DisplayController* display_controller = | 394 DisplayController* display_controller = |
383 Shell::GetInstance()->display_controller(); | 395 Shell::GetInstance()->display_controller(); |
384 | 396 |
385 UpdateDisplay("200x200,300x300"); | 397 UpdateDisplay("200x200,300x300"); |
386 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); | 398 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); |
387 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); | 399 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); |
388 | 400 |
389 DisplayLayout display_layout(DisplayLayout::RIGHT, 50); | 401 DisplayLayout display_layout(DisplayLayout::RIGHT, 50); |
390 display_controller->SetLayoutForCurrentDisplays(display_layout); | 402 display_controller->SetLayoutForCurrentDisplays(display_layout); |
391 | 403 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 EXPECT_EQ(primary_display.id(), | 469 EXPECT_EQ(primary_display.id(), |
458 Shell::GetScreen()->GetDisplayNearestPoint( | 470 Shell::GetScreen()->GetDisplayNearestPoint( |
459 gfx::Point(-100, -100)).id()); | 471 gfx::Point(-100, -100)).id()); |
460 EXPECT_EQ(primary_display.id(), | 472 EXPECT_EQ(primary_display.id(), |
461 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); | 473 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); |
462 EXPECT_TRUE(tracker.Contains(primary_root)); | 474 EXPECT_TRUE(tracker.Contains(primary_root)); |
463 EXPECT_FALSE(tracker.Contains(secondary_root)); | 475 EXPECT_FALSE(tracker.Contains(secondary_root)); |
464 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 476 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
465 } | 477 } |
466 | 478 |
467 // Crashes flakily on win8 aura bots: crbug.com/237642 | 479 TEST_F(DisplayControllerTest, SwapPrimaryById) { |
468 #if defined(OS_WIN) && defined(USE_AURA) | 480 if (!SupportsMultipleDisplays()) |
469 #define MAYBE_SwapPrimaryById DISABLED_SwapPrimaryById | 481 return; |
470 #else | 482 |
471 #define MAYBE_SwapPrimaryById SwapPrimaryById | |
472 #endif | |
473 TEST_F(DisplayControllerTest, MAYBE_SwapPrimaryById) { | |
474 DisplayController* display_controller = | 483 DisplayController* display_controller = |
475 Shell::GetInstance()->display_controller(); | 484 Shell::GetInstance()->display_controller(); |
476 | 485 |
477 UpdateDisplay("200x200,300x300"); | 486 UpdateDisplay("200x200,300x300"); |
478 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); | 487 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); |
479 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); | 488 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); |
480 | 489 |
481 DisplayLayout display_layout(DisplayLayout::RIGHT, 50); | 490 DisplayLayout display_layout(DisplayLayout::RIGHT, 50); |
482 display_controller->SetLayoutForCurrentDisplays(display_layout); | 491 display_controller->SetLayoutForCurrentDisplays(display_layout); |
483 | 492 |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 EXPECT_EQ(third_display_info.id(), ScreenAsh::GetSecondaryDisplay().id()); | 593 EXPECT_EQ(third_display_info.id(), ScreenAsh::GetSecondaryDisplay().id()); |
585 EXPECT_EQ( | 594 EXPECT_EQ( |
586 primary_root, | 595 primary_root, |
587 display_controller->GetRootWindowForDisplayId(primary_display.id())); | 596 display_controller->GetRootWindowForDisplayId(primary_display.id())); |
588 EXPECT_NE( | 597 EXPECT_NE( |
589 primary_root, | 598 primary_root, |
590 display_controller->GetRootWindowForDisplayId(third_display_info.id())); | 599 display_controller->GetRootWindowForDisplayId(third_display_info.id())); |
591 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 600 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
592 } | 601 } |
593 | 602 |
594 #if defined(OS_WIN) | 603 TEST_F(DisplayControllerTest, CursorDeviceScaleFactorSwapPrimary) { |
595 // Flaky failures on Win8 due to window activation messages. crbug.com/239539 | 604 if (!SupportsMultipleDisplays()) |
596 #define MAYBE_CursorDeviceScaleFactorSwapPrimary \ | 605 return; |
597 DISABLED_CursorDeviceScaleFactorSwapPrimary | 606 |
598 #else | |
599 #define MAYBE_CursorDeviceScaleFactorSwapPrimary \ | |
600 CursorDeviceScaleFactorSwapPrimary | |
601 #endif | |
602 TEST_F(DisplayControllerTest, MAYBE_CursorDeviceScaleFactorSwapPrimary) { | |
603 DisplayController* display_controller = | 607 DisplayController* display_controller = |
604 Shell::GetInstance()->display_controller(); | 608 Shell::GetInstance()->display_controller(); |
605 | 609 |
606 UpdateDisplay("200x200,200x200*2"); | 610 UpdateDisplay("200x200,200x200*2"); |
607 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); | 611 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); |
608 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); | 612 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); |
609 | 613 |
610 aura::RootWindow* primary_root = | 614 aura::RootWindow* primary_root = |
611 display_controller->GetRootWindowForDisplayId(primary_display.id()); | 615 display_controller->GetRootWindowForDisplayId(primary_display.id()); |
612 aura::RootWindow* secondary_root = | 616 aura::RootWindow* secondary_root = |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 // Cursor's device scale factor should be updated even without moving cursor. | 649 // Cursor's device scale factor should be updated even without moving cursor. |
646 EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor()); | 650 EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor()); |
647 | 651 |
648 primary_root->MoveCursorTo(gfx::Point(50, 50)); | 652 primary_root->MoveCursorTo(gfx::Point(50, 50)); |
649 EXPECT_EQ(1.0f, | 653 EXPECT_EQ(1.0f, |
650 primary_root->AsRootWindowHostDelegate()->GetDeviceScaleFactor()); | 654 primary_root->AsRootWindowHostDelegate()->GetDeviceScaleFactor()); |
651 EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor()); | 655 EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor()); |
652 } | 656 } |
653 | 657 |
654 #if defined(OS_WIN) | 658 #if defined(OS_WIN) |
655 // TODO(oshima): On Windows, we don't update the origin/size right away. | 659 // TODO(scottmg): RootWindow doesn't get resized on Windows |
| 660 // Ash. http://crbug.com/247916. |
656 #define MAYBE_UpdateDisplayWithHostOrigin DISABLED_UpdateDisplayWithHostOrigin | 661 #define MAYBE_UpdateDisplayWithHostOrigin DISABLED_UpdateDisplayWithHostOrigin |
657 #else | 662 #else |
658 #define MAYBE_UpdateDisplayWithHostOrigin UpdateDisplayWithHostOrigin | 663 #define MAYBE_UpdateDisplayWithHostOrigin UpdateDisplayWithHostOrigin |
659 #endif | 664 #endif |
660 | 665 |
661 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { | 666 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { |
662 UpdateDisplay("100x200,300x400"); | 667 UpdateDisplay("100x200,300x400"); |
663 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 668 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
664 Shell::RootWindowList root_windows = | 669 Shell::RootWindowList root_windows = |
665 Shell::GetInstance()->GetAllRootWindows(); | 670 Shell::GetInstance()->GetAllRootWindows(); |
(...skipping 19 matching lines...) Expand all Loading... |
685 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 690 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
686 | 691 |
687 UpdateDisplay("100+200-100x200,300+500-200x300"); | 692 UpdateDisplay("100+200-100x200,300+500-200x300"); |
688 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 693 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
689 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); | 694 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); |
690 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 695 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
691 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); | 696 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); |
692 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); | 697 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); |
693 } | 698 } |
694 | 699 |
695 #if defined(OS_WIN) | 700 TEST_F(DisplayControllerTest, OverscanInsets) { |
696 // TODO(oshima): Windows does not supoprts insets. | 701 if (!SupportsMultipleDisplays()) |
697 #define MAYBE_OverscanInsets DISABLED_OverscanInsets | 702 return; |
698 #else | |
699 #define MAYBE_OverscanInsets OverscanInsets | |
700 #endif | |
701 | 703 |
702 TEST_F(DisplayControllerTest, MAYBE_OverscanInsets) { | |
703 DisplayController* display_controller = | 704 DisplayController* display_controller = |
704 Shell::GetInstance()->display_controller(); | 705 Shell::GetInstance()->display_controller(); |
705 TestEventHandler event_handler; | 706 TestEventHandler event_handler; |
706 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 707 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
707 | 708 |
708 UpdateDisplay("120x200,300x400*2"); | 709 UpdateDisplay("120x200,300x400*2"); |
709 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); | 710 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
710 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 711 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
711 | 712 |
712 display_controller->SetOverscanInsets(display1.id(), | 713 display_controller->SetOverscanInsets(display1.id(), |
(...skipping 11 matching lines...) Expand all Loading... |
724 EXPECT_EQ("0,0 120x200", root_windows[0]->bounds().ToString()); | 725 EXPECT_EQ("0,0 120x200", root_windows[0]->bounds().ToString()); |
725 EXPECT_EQ("120,0 150x200", | 726 EXPECT_EQ("120,0 150x200", |
726 ScreenAsh::GetSecondaryDisplay().bounds().ToString()); | 727 ScreenAsh::GetSecondaryDisplay().bounds().ToString()); |
727 | 728 |
728 generator.MoveMouseToInHost(30, 20); | 729 generator.MoveMouseToInHost(30, 20); |
729 EXPECT_EQ("30,20", event_handler.GetLocationAndReset()); | 730 EXPECT_EQ("30,20", event_handler.GetLocationAndReset()); |
730 | 731 |
731 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 732 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
732 } | 733 } |
733 | 734 |
734 #if defined(OS_WIN) | 735 TEST_F(DisplayControllerTest, Rotate) { |
735 // On Win8 bots, the host window can't be resized and | 736 if (!SupportsMultipleDisplays()) |
736 // SetTransform updates the window using the orignal host window | 737 return; |
737 // size. | |
738 #define MAYBE_Rotate DISABLED_Rotate | |
739 #define MAYBE_ScaleRootWindow DISABLED_ScaleRootWindow | |
740 #define MAYBE_TouchScale DISABLED_TouchScale | |
741 #define MAYBE_ConvertHostToRootCoords DISABLED_ConvertHostToRootCoords | |
742 #else | |
743 #define MAYBE_Rotate Rotate | |
744 #define MAYBE_ScaleRootWindow ScaleRootWindow | |
745 #define MAYBE_TouchScale TouchScale | |
746 #define MAYBE_ConvertHostToRootCoords ConvertHostToRootCoords | |
747 #endif | |
748 | 738 |
749 TEST_F(DisplayControllerTest, MAYBE_Rotate) { | |
750 DisplayController* display_controller = | 739 DisplayController* display_controller = |
751 Shell::GetInstance()->display_controller(); | 740 Shell::GetInstance()->display_controller(); |
752 internal::DisplayManager* display_manager = | 741 internal::DisplayManager* display_manager = |
753 Shell::GetInstance()->display_manager(); | 742 Shell::GetInstance()->display_manager(); |
754 TestEventHandler event_handler; | 743 TestEventHandler event_handler; |
755 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 744 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
756 | 745 |
757 UpdateDisplay("120x200,300x400*2"); | 746 UpdateDisplay("120x200,300x400*2"); |
758 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); | 747 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
759 int64 display2_id = ScreenAsh::GetSecondaryDisplay().id(); | 748 int64 display2_id = ScreenAsh::GetSecondaryDisplay().id(); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 ScreenAsh::GetSecondaryDisplay().bounds().ToString()); | 796 ScreenAsh::GetSecondaryDisplay().bounds().ToString()); |
808 EXPECT_EQ(gfx::Display::ROTATE_180, GetStoredRotation(display1.id())); | 797 EXPECT_EQ(gfx::Display::ROTATE_180, GetStoredRotation(display1.id())); |
809 EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); | 798 EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); |
810 | 799 |
811 generator1.MoveMouseToInHost(50, 40); | 800 generator1.MoveMouseToInHost(50, 40); |
812 EXPECT_EQ("69,159", event_handler.GetLocationAndReset()); | 801 EXPECT_EQ("69,159", event_handler.GetLocationAndReset()); |
813 | 802 |
814 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 803 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
815 } | 804 } |
816 | 805 |
817 TEST_F(DisplayControllerTest, MAYBE_ScaleRootWindow) { | 806 TEST_F(DisplayControllerTest, ScaleRootWindow) { |
| 807 if (!SupportsMultipleDisplays()) |
| 808 return; |
| 809 |
818 TestEventHandler event_handler; | 810 TestEventHandler event_handler; |
819 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 811 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
820 | 812 |
821 UpdateDisplay("600x400*2@1.5,500x300"); | 813 UpdateDisplay("600x400*2@1.5,500x300"); |
822 | 814 |
823 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); | 815 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
824 gfx::Display::SetInternalDisplayId(display1.id()); | 816 gfx::Display::SetInternalDisplayId(display1.id()); |
825 | 817 |
826 gfx::Display display2 = ScreenAsh::GetSecondaryDisplay(); | 818 gfx::Display display2 = ScreenAsh::GetSecondaryDisplay(); |
827 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 819 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
(...skipping 14 matching lines...) Expand all Loading... |
842 display2 = ScreenAsh::GetSecondaryDisplay(); | 834 display2 = ScreenAsh::GetSecondaryDisplay(); |
843 EXPECT_EQ("0,0 375x250", display1.bounds().ToString()); | 835 EXPECT_EQ("0,0 375x250", display1.bounds().ToString()); |
844 EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString()); | 836 EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString()); |
845 EXPECT_EQ("375,0 500x300", display2.bounds().ToString()); | 837 EXPECT_EQ("375,0 500x300", display2.bounds().ToString()); |
846 EXPECT_EQ(1.25f, GetStoredUIScale(display1.id())); | 838 EXPECT_EQ(1.25f, GetStoredUIScale(display1.id())); |
847 EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); | 839 EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); |
848 | 840 |
849 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 841 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
850 } | 842 } |
851 | 843 |
852 TEST_F(DisplayControllerTest, MAYBE_TouchScale) { | 844 TEST_F(DisplayControllerTest, TouchScale) { |
| 845 if (!SupportsMultipleDisplays()) |
| 846 return; |
| 847 |
853 TestEventHandler event_handler; | 848 TestEventHandler event_handler; |
854 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 849 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
855 | 850 |
856 UpdateDisplay("200x200*2"); | 851 UpdateDisplay("200x200*2"); |
857 gfx::Display display = Shell::GetScreen()->GetPrimaryDisplay(); | 852 gfx::Display display = Shell::GetScreen()->GetPrimaryDisplay(); |
858 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 853 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
859 aura::RootWindow* root_window = root_windows[0]; | 854 aura::RootWindow* root_window = root_windows[0]; |
860 aura::test::EventGenerator generator(root_window); | 855 aura::test::EventGenerator generator(root_window); |
861 | 856 |
862 generator.PressMoveAndReleaseTouchTo(50, 50); | 857 generator.PressMoveAndReleaseTouchTo(50, 50); |
863 // Default test touches have radius_x/y = 1.0, with device scale | 858 // Default test touches have radius_x/y = 1.0, with device scale |
864 // factor = 2, the scaled radius_x/y should be 0.5. | 859 // factor = 2, the scaled radius_x/y should be 0.5. |
865 EXPECT_EQ(0.5, event_handler.touch_radius_x()); | 860 EXPECT_EQ(0.5, event_handler.touch_radius_x()); |
866 EXPECT_EQ(0.5, event_handler.touch_radius_y()); | 861 EXPECT_EQ(0.5, event_handler.touch_radius_y()); |
867 | 862 |
868 generator.ScrollSequence(gfx::Point(0,0), | 863 generator.ScrollSequence(gfx::Point(0,0), |
869 base::TimeDelta::FromMilliseconds(100), | 864 base::TimeDelta::FromMilliseconds(100), |
870 10.0, 1.0, 5, 1); | 865 10.0, 1.0, 5, 1); |
871 | 866 |
872 // With device scale factor = 2, ordinal_offset * 2 = offset. | 867 // With device scale factor = 2, ordinal_offset * 2 = offset. |
873 EXPECT_EQ(event_handler.scroll_x_offset(), | 868 EXPECT_EQ(event_handler.scroll_x_offset(), |
874 event_handler.scroll_x_offset_ordinal() * 2); | 869 event_handler.scroll_x_offset_ordinal() * 2); |
875 EXPECT_EQ(event_handler.scroll_y_offset(), | 870 EXPECT_EQ(event_handler.scroll_y_offset(), |
876 event_handler.scroll_y_offset_ordinal() * 2); | 871 event_handler.scroll_y_offset_ordinal() * 2); |
877 | 872 |
878 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 873 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
879 } | 874 } |
880 | 875 |
881 TEST_F(DisplayControllerTest, MAYBE_ConvertHostToRootCoords) { | 876 TEST_F(DisplayControllerTest, ConvertHostToRootCoords) { |
| 877 if (!SupportsMultipleDisplays()) |
| 878 return; |
| 879 |
882 TestEventHandler event_handler; | 880 TestEventHandler event_handler; |
883 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 881 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
884 | 882 |
885 UpdateDisplay("600x400*2/r@1.5"); | 883 UpdateDisplay("600x400*2/r@1.5"); |
886 | 884 |
887 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); | 885 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
888 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 886 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
889 EXPECT_EQ("0,0 300x450", display1.bounds().ToString()); | 887 EXPECT_EQ("0,0 300x450", display1.bounds().ToString()); |
890 EXPECT_EQ("0,0 300x450", root_windows[0]->bounds().ToString()); | 888 EXPECT_EQ("0,0 300x450", root_windows[0]->bounds().ToString()); |
891 EXPECT_EQ(1.5f, GetStoredUIScale(display1.id())); | 889 EXPECT_EQ(1.5f, GetStoredUIScale(display1.id())); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
930 generator.MoveMouseToInHost(599, 399); | 928 generator.MoveMouseToInHost(599, 399); |
931 EXPECT_EQ("0,449", event_handler.GetLocationAndReset()); | 929 EXPECT_EQ("0,449", event_handler.GetLocationAndReset()); |
932 generator.MoveMouseToInHost(0, 399); | 930 generator.MoveMouseToInHost(0, 399); |
933 EXPECT_EQ("0,0", event_handler.GetLocationAndReset()); | 931 EXPECT_EQ("0,0", event_handler.GetLocationAndReset()); |
934 | 932 |
935 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 933 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
936 } | 934 } |
937 | 935 |
938 } // namespace test | 936 } // namespace test |
939 } // namespace ash | 937 } // namespace ash |
OLD | NEW |