| 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 |