Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(876)

Side by Side Diff: ash/display/display_manager_unittest.cc

Issue 16539005: Skip mulitple-dispay tests on win8 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comment Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/display/display_manager.cc ('k') | ash/display/mouse_cursor_event_filter_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/display/display_manager.h" 5 #include "ash/display/display_manager.h"
6 6
7 #include "ash/display/display_controller.h" 7 #include "ash/display/display_controller.h"
8 #include "ash/screen_ash.h" 8 #include "ash/screen_ash.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/test/ash_test_base.h" 10 #include "ash/test/ash_test_base.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 private: 112 private:
113 vector<gfx::Display> changed_; 113 vector<gfx::Display> changed_;
114 vector<gfx::Display> added_; 114 vector<gfx::Display> added_;
115 size_t removed_count_; 115 size_t removed_count_;
116 bool root_window_destroyed_; 116 bool root_window_destroyed_;
117 117
118 DISALLOW_COPY_AND_ASSIGN(DisplayManagerTest); 118 DISALLOW_COPY_AND_ASSIGN(DisplayManagerTest);
119 }; 119 };
120 120
121 TEST_F(DisplayManagerTest, NativeDisplayTest) { 121 TEST_F(DisplayManagerTest, NativeDisplayTest) {
122 if (!SupportsMultipleDisplays())
123 return;
124
122 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 125 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
123 126
124 // Update primary and add seconary. 127 // Update primary and add seconary.
125 UpdateDisplay("100+0-500x500,0+501-400x400"); 128 UpdateDisplay("100+0-500x500,0+501-400x400");
126 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 129 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
127 EXPECT_EQ("0,0 500x500", 130 EXPECT_EQ("0,0 500x500",
128 display_manager()->GetDisplayAt(0)->bounds().ToString()); 131 display_manager()->GetDisplayAt(0)->bounds().ToString());
129 132
130 EXPECT_EQ("1 1 0", GetCountSummary()); 133 EXPECT_EQ("1 1 0", GetCountSummary());
131 EXPECT_EQ(display_manager()->GetDisplayAt(0)->id(), changed()[0].id()); 134 EXPECT_EQ(display_manager()->GetDisplayAt(0)->id(), changed()[0].id());
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 // Secondary display is on right. 206 // Secondary display is on right.
204 EXPECT_EQ("1000,0 600x400", 207 EXPECT_EQ("1000,0 600x400",
205 display_manager()->GetDisplayAt(1)->bounds().ToString()); 208 display_manager()->GetDisplayAt(1)->bounds().ToString());
206 EXPECT_EQ("1000,1000 600x400", 209 EXPECT_EQ("1000,1000 600x400",
207 GetDisplayInfoAt(1).bounds_in_pixel().ToString()); 210 GetDisplayInfoAt(1).bounds_in_pixel().ToString());
208 reset(); 211 reset();
209 } 212 }
210 213
211 // Test in emulation mode (use_fullscreen_host_window=false) 214 // Test in emulation mode (use_fullscreen_host_window=false)
212 TEST_F(DisplayManagerTest, EmulatorTest) { 215 TEST_F(DisplayManagerTest, EmulatorTest) {
216 if (!SupportsMultipleDisplays())
217 return;
218
213 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 219 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
214 220
215 display_manager()->AddRemoveDisplay(); 221 display_manager()->AddRemoveDisplay();
216 // Update primary and add seconary. 222 // Update primary and add seconary.
217 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 223 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
218 EXPECT_EQ("0 1 0", GetCountSummary()); 224 EXPECT_EQ("0 1 0", GetCountSummary());
219 reset(); 225 reset();
220 226
221 display_manager()->AddRemoveDisplay(); 227 display_manager()->AddRemoveDisplay();
222 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 228 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
223 EXPECT_EQ("0 0 1", GetCountSummary()); 229 EXPECT_EQ("0 0 1", GetCountSummary());
224 reset(); 230 reset();
225 231
226 display_manager()->AddRemoveDisplay(); 232 display_manager()->AddRemoveDisplay();
227 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 233 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
228 EXPECT_EQ("0 1 0", GetCountSummary()); 234 EXPECT_EQ("0 1 0", GetCountSummary());
229 reset(); 235 reset();
230 } 236 }
231 237
232 TEST_F(DisplayManagerTest, OverscanInsetsTest) { 238 TEST_F(DisplayManagerTest, OverscanInsetsTest) {
239 if (!SupportsMultipleDisplays())
240 return;
241
233 UpdateDisplay("0+0-500x500,0+501-400x400"); 242 UpdateDisplay("0+0-500x500,0+501-400x400");
234 reset(); 243 reset();
235 ASSERT_EQ(2u, display_manager()->GetNumDisplays()); 244 ASSERT_EQ(2u, display_manager()->GetNumDisplays());
236 const DisplayInfo& display_info1 = GetDisplayInfoAt(0); 245 const DisplayInfo& display_info1 = GetDisplayInfoAt(0);
237 const DisplayInfo& display_info2 = GetDisplayInfoAt(1); 246 const DisplayInfo& display_info2 = GetDisplayInfoAt(1);
238 display_manager()->SetOverscanInsets( 247 display_manager()->SetOverscanInsets(
239 display_info2.id(), gfx::Insets(13, 12, 11, 10)); 248 display_info2.id(), gfx::Insets(13, 12, 11, 10));
240 249
241 std::vector<gfx::Display> changed_displays = changed(); 250 std::vector<gfx::Display> changed_displays = changed();
242 EXPECT_EQ(1u, changed_displays.size()); 251 EXPECT_EQ(1u, changed_displays.size());
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 GetDisplayInfo(ScreenAsh::GetSecondaryDisplay()). 334 GetDisplayInfo(ScreenAsh::GetSecondaryDisplay()).
326 bounds_in_pixel().ToString()); 335 bounds_in_pixel().ToString());
327 EXPECT_EQ("0,501 400x400", 336 EXPECT_EQ("0,501 400x400",
328 GetDisplayInfo(Shell::GetScreen()->GetPrimaryDisplay()). 337 GetDisplayInfo(Shell::GetScreen()->GetPrimaryDisplay()).
329 bounds_in_pixel().ToString()); 338 bounds_in_pixel().ToString());
330 EXPECT_EQ("0,0 188x190", 339 EXPECT_EQ("0,0 188x190",
331 Shell::GetScreen()->GetPrimaryDisplay().bounds().ToString()); 340 Shell::GetScreen()->GetPrimaryDisplay().bounds().ToString());
332 } 341 }
333 342
334 TEST_F(DisplayManagerTest, ZeroOverscanInsets) { 343 TEST_F(DisplayManagerTest, ZeroOverscanInsets) {
344 if (!SupportsMultipleDisplays())
345 return;
346
335 // Make sure the display change events is emitted for overscan inset changes. 347 // Make sure the display change events is emitted for overscan inset changes.
336 UpdateDisplay("0+0-500x500,0+501-400x400"); 348 UpdateDisplay("0+0-500x500,0+501-400x400");
337 ASSERT_EQ(2u, display_manager()->GetNumDisplays()); 349 ASSERT_EQ(2u, display_manager()->GetNumDisplays());
338 int64 display2_id = display_manager()->GetDisplayAt(1)->id(); 350 int64 display2_id = display_manager()->GetDisplayAt(1)->id();
339 351
340 reset(); 352 reset();
341 display_manager()->SetOverscanInsets(display2_id, gfx::Insets(0, 0, 0, 0)); 353 display_manager()->SetOverscanInsets(display2_id, gfx::Insets(0, 0, 0, 0));
342 EXPECT_EQ(0u, changed().size()); 354 EXPECT_EQ(0u, changed().size());
343 355
344 reset(); 356 reset();
(...skipping 19 matching lines...) Expand all
364 EXPECT_EQ("500x300", 376 EXPECT_EQ("500x300",
365 Shell::GetPrimaryRootWindow()->bounds().size().ToString()); 377 Shell::GetPrimaryRootWindow()->bounds().size().ToString());
366 } 378 }
367 379
368 DisplayInfo CreateDisplayInfo(int64 id, const gfx::Rect& bounds) { 380 DisplayInfo CreateDisplayInfo(int64 id, const gfx::Rect& bounds) {
369 DisplayInfo info(id, StringPrintf("x-%d", static_cast<int>(id)), false); 381 DisplayInfo info(id, StringPrintf("x-%d", static_cast<int>(id)), false);
370 info.SetBounds(bounds); 382 info.SetBounds(bounds);
371 return info; 383 return info;
372 } 384 }
373 385
374 #if defined(OS_WIN) 386 TEST_F(DisplayManagerTest, TestNativeDisplaysChanged) {
375 // Crashes flakily on Win8 Aura: http://crbug.com/246109.
376 #define MAYBE_TestNativeDisplaysChanged DISABLED_TestNativeDisplaysChanged
377 #else
378 #define MAYBE_TestNativeDisplaysChanged TestNativeDisplaysChanged
379 #endif
380 TEST_F(DisplayManagerTest, MAYBE_TestNativeDisplaysChanged) {
381 const int internal_display_id = 387 const int internal_display_id =
382 test::DisplayManagerTestApi(display_manager()). 388 test::DisplayManagerTestApi(display_manager()).
383 SetFirstDisplayAsInternalDisplay(); 389 SetFirstDisplayAsInternalDisplay();
384 const int external_id = 10; 390 const int external_id = 10;
385 const int mirror_id = 11; 391 const int mirror_id = 11;
386 const int64 invalid_id = gfx::Display::kInvalidDisplayID; 392 const int64 invalid_id = gfx::Display::kInvalidDisplayID;
387 const DisplayInfo internal_display_info = 393 const DisplayInfo internal_display_info =
388 CreateDisplayInfo(internal_display_id, gfx::Rect(0, 0, 500, 500)); 394 CreateDisplayInfo(internal_display_id, gfx::Rect(0, 0, 500, 500));
389 const DisplayInfo external_display_info = 395 const DisplayInfo external_display_info =
390 CreateDisplayInfo(external_id, gfx::Rect(1, 1, 100, 100)); 396 CreateDisplayInfo(external_id, gfx::Rect(1, 1, 100, 100));
391 const DisplayInfo mirrored_display_info = 397 const DisplayInfo mirrored_display_info =
392 CreateDisplayInfo(mirror_id, gfx::Rect(0, 0, 500, 500)); 398 CreateDisplayInfo(mirror_id, gfx::Rect(0, 0, 500, 500));
393 399
394 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 400 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
395 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 401 EXPECT_EQ(1U, display_manager()->num_connected_displays());
396 std::string default_bounds = 402 std::string default_bounds =
397 display_manager()->GetDisplayAt(0)->bounds().ToString(); 403 display_manager()->GetDisplayAt(0)->bounds().ToString();
398 404
399 std::vector<DisplayInfo> display_info_list; 405 std::vector<DisplayInfo> display_info_list;
400 // Primary disconnected. 406 // Primary disconnected.
401 display_manager()->OnNativeDisplaysChanged(display_info_list); 407 display_manager()->OnNativeDisplaysChanged(display_info_list);
402 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 408 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
403 EXPECT_EQ(default_bounds, 409 EXPECT_EQ(default_bounds,
404 display_manager()->GetDisplayAt(0)->bounds().ToString()); 410 display_manager()->GetDisplayAt(0)->bounds().ToString());
405 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 411 EXPECT_EQ(1U, display_manager()->num_connected_displays());
406 EXPECT_FALSE(display_manager()->mirrored_display().is_valid()); 412 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
407 413
414 if (!SupportsMultipleDisplays())
415 return;
416
408 // External connected while primary was disconnected. 417 // External connected while primary was disconnected.
409 display_info_list.push_back(external_display_info); 418 display_info_list.push_back(external_display_info);
410 display_manager()->OnNativeDisplaysChanged(display_info_list); 419 display_manager()->OnNativeDisplaysChanged(display_info_list);
411 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 420 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
412 421
413 EXPECT_EQ(invalid_id, FindDisplayForId(internal_display_id).id()); 422 EXPECT_EQ(invalid_id, FindDisplayForId(internal_display_id).id());
414 EXPECT_EQ("1,1 100x100", 423 EXPECT_EQ("1,1 100x100",
415 FindDisplayInfoForId(external_id).bounds_in_pixel().ToString()); 424 FindDisplayInfoForId(external_id).bounds_in_pixel().ToString());
416 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 425 EXPECT_EQ(1U, display_manager()->num_connected_displays());
417 EXPECT_FALSE(display_manager()->mirrored_display().is_valid()); 426 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 display_manager()->OnNativeDisplaysChanged(display_info_list); 538 display_manager()->OnNativeDisplaysChanged(display_info_list);
530 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 539 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
531 EXPECT_EQ( 540 EXPECT_EQ(
532 "0,0 500x500", 541 "0,0 500x500",
533 FindDisplayInfoForId(internal_display_id).bounds_in_pixel().ToString()); 542 FindDisplayInfoForId(internal_display_id).bounds_in_pixel().ToString());
534 EXPECT_EQ(1U, display_manager()->num_connected_displays()); 543 EXPECT_EQ(1U, display_manager()->num_connected_displays());
535 EXPECT_FALSE(display_manager()->mirrored_display().is_valid()); 544 EXPECT_FALSE(display_manager()->mirrored_display().is_valid());
536 } 545 }
537 546
538 #if defined(OS_WIN) 547 #if defined(OS_WIN)
539 // This test currently fails on Win8/Metro as it picks up the actual 548 // TODO(scottmg): RootWindow doesn't get resized on Windows
540 // display size. http://crbug.com/154081 549 // Ash. http://crbug.com/247916.
541 #define MAYBE_TestNativeDisplaysChangedNoInternal \ 550 #define MAYBE_TestNativeDisplaysChangedNoInternal \
542 DISABLED_TestNativeDisplaysChangedNoInternal 551 DISABLED_TestNativeDisplaysChangedNoInternal
543 #else 552 #else
544 #define MAYBE_TestNativeDisplaysChangedNoInternal \ 553 #define MAYBE_TestNativeDisplaysChangedNoInternal \
545 TestNativeDisplaysChangedNoInternal 554 TestNativeDisplaysChangedNoInternal
546 #endif 555 #endif
547 556
548 TEST_F(DisplayManagerTest, MAYBE_TestNativeDisplaysChangedNoInternal) { 557 TEST_F(DisplayManagerTest, MAYBE_TestNativeDisplaysChangedNoInternal) {
549 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 558 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
550 559
551 // Don't change the display info if all displays are disconnected. 560 // Don't change the display info if all displays are disconnected.
552 std::vector<DisplayInfo> display_info_list; 561 std::vector<DisplayInfo> display_info_list;
553 display_manager()->OnNativeDisplaysChanged(display_info_list); 562 display_manager()->OnNativeDisplaysChanged(display_info_list);
554 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 563 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
555 564
556 // Connect another display which will become primary. 565 // Connect another display which will become primary.
557 const DisplayInfo external_display_info = 566 const DisplayInfo external_display_info =
558 CreateDisplayInfo(10, gfx::Rect(1, 1, 100, 100)); 567 CreateDisplayInfo(10, gfx::Rect(1, 1, 100, 100));
559 display_info_list.push_back(external_display_info); 568 display_info_list.push_back(external_display_info);
560 display_manager()->OnNativeDisplaysChanged(display_info_list); 569 display_manager()->OnNativeDisplaysChanged(display_info_list);
561 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 570 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
562 EXPECT_EQ("1,1 100x100", 571 EXPECT_EQ("1,1 100x100",
563 FindDisplayInfoForId(10).bounds_in_pixel().ToString()); 572 FindDisplayInfoForId(10).bounds_in_pixel().ToString());
564 EXPECT_EQ("100x100", 573 EXPECT_EQ("100x100",
565 ash::Shell::GetPrimaryRootWindow()->GetHostSize().ToString()); 574 ash::Shell::GetPrimaryRootWindow()->GetHostSize().ToString());
566 } 575 }
567 576
568 TEST_F(DisplayManagerTest, EnsurePointerInDisplays) { 577 TEST_F(DisplayManagerTest, EnsurePointerInDisplays) {
578 if (!SupportsMultipleDisplays())
579 return;
580
569 UpdateDisplay("200x200,300x300"); 581 UpdateDisplay("200x200,300x300");
570 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); 582 Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
571 583
572 aura::Env* env = aura::Env::GetInstance(); 584 aura::Env* env = aura::Env::GetInstance();
573 585
574 aura::test::EventGenerator generator(root_windows[0]); 586 aura::test::EventGenerator generator(root_windows[0]);
575 587
576 // Set the initial position. 588 // Set the initial position.
577 generator.MoveMouseToInHost(350, 150); 589 generator.MoveMouseToInHost(350, 150);
578 EXPECT_EQ("350,150", env->last_mouse_location().ToString()); 590 EXPECT_EQ("350,150", env->last_mouse_location().ToString());
(...skipping 19 matching lines...) Expand all
598 610
599 // Move the mouse pointer to the bottom of 1st display. 611 // Move the mouse pointer to the bottom of 1st display.
600 generator.MoveMouseToInHost(150, 290); 612 generator.MoveMouseToInHost(150, 290);
601 EXPECT_EQ("150,290", env->last_mouse_location().ToString()); 613 EXPECT_EQ("150,290", env->last_mouse_location().ToString());
602 614
603 // The mouse pointer is outside and closest display is 1st one. 615 // The mouse pointer is outside and closest display is 1st one.
604 UpdateDisplay("300x280,200x200"); 616 UpdateDisplay("300x280,200x200");
605 EXPECT_EQ("150,140", env->last_mouse_location().ToString()); 617 EXPECT_EQ("150,140", env->last_mouse_location().ToString());
606 } 618 }
607 619
608 #if defined(OS_WIN) 620 TEST_F(DisplayManagerTest, EnsurePointerInDisplays_2ndOnLeft) {
609 // Flaky failures on Win8 due to window activation messages. crbug.com/239539 621 if (!SupportsMultipleDisplays())
610 #define MAYBE_EnsurePointerInDisplays_2ndOnLeft \ 622 return;
611 DISABLED_EnsurePointerInDisplays_2ndOnLeft 623
612 #else
613 #define MAYBE_EnsurePointerInDisplays_2ndOnLeft \
614 EnsurePointerInDisplays_2ndOnLeft
615 #endif
616 TEST_F(DisplayManagerTest, MAYBE_EnsurePointerInDisplays_2ndOnLeft) {
617 // Set the 2nd display on the left. 624 // Set the 2nd display on the left.
618 DisplayController* display_controller = 625 DisplayController* display_controller =
619 Shell::GetInstance()->display_controller(); 626 Shell::GetInstance()->display_controller();
620 DisplayLayout layout = display_controller->default_display_layout(); 627 DisplayLayout layout = display_controller->default_display_layout();
621 layout.position = DisplayLayout::LEFT; 628 layout.position = DisplayLayout::LEFT;
622 display_controller->SetDefaultDisplayLayout(layout); 629 display_controller->SetDefaultDisplayLayout(layout);
623 630
624 UpdateDisplay("200x200,300x300"); 631 UpdateDisplay("200x200,300x300");
625 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); 632 Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
626 633
(...skipping 15 matching lines...) Expand all
642 UpdateDisplay("300x300,200x100"); 649 UpdateDisplay("300x300,200x100");
643 EXPECT_EQ("-100,50", env->last_mouse_location().ToString()); 650 EXPECT_EQ("-100,50", env->last_mouse_location().ToString());
644 651
645 // 2nd display was disconnected. Mouse pointer should move to 652 // 2nd display was disconnected. Mouse pointer should move to
646 // 1st display. 653 // 1st display.
647 UpdateDisplay("300x300"); 654 UpdateDisplay("300x300");
648 EXPECT_EQ("150,150", env->last_mouse_location().ToString()); 655 EXPECT_EQ("150,150", env->last_mouse_location().ToString());
649 } 656 }
650 657
651 TEST_F(DisplayManagerTest, NativeDisplaysChangedAfterPrimaryChange) { 658 TEST_F(DisplayManagerTest, NativeDisplaysChangedAfterPrimaryChange) {
659 if (!SupportsMultipleDisplays())
660 return;
661
652 const int64 internal_display_id = 662 const int64 internal_display_id =
653 test::DisplayManagerTestApi(display_manager()). 663 test::DisplayManagerTestApi(display_manager()).
654 SetFirstDisplayAsInternalDisplay(); 664 SetFirstDisplayAsInternalDisplay();
655 const DisplayInfo native_display_info = 665 const DisplayInfo native_display_info =
656 CreateDisplayInfo(internal_display_id, gfx::Rect(0, 0, 500, 500)); 666 CreateDisplayInfo(internal_display_id, gfx::Rect(0, 0, 500, 500));
657 const DisplayInfo secondary_display_info = 667 const DisplayInfo secondary_display_info =
658 CreateDisplayInfo(10, gfx::Rect(1, 1, 100, 100)); 668 CreateDisplayInfo(10, gfx::Rect(1, 1, 100, 100));
659 669
660 std::vector<DisplayInfo> display_info_list; 670 std::vector<DisplayInfo> display_info_list;
661 display_info_list.push_back(native_display_info); 671 display_info_list.push_back(native_display_info);
(...skipping 12 matching lines...) Expand all
674 684
675 // OnNativeDisplaysChanged may change the display bounds. Here makes sure 685 // OnNativeDisplaysChanged may change the display bounds. Here makes sure
676 // nothing changed if the exactly same displays are specified. 686 // nothing changed if the exactly same displays are specified.
677 display_manager()->OnNativeDisplaysChanged(display_info_list); 687 display_manager()->OnNativeDisplaysChanged(display_info_list);
678 EXPECT_EQ("-500,0 500x500", 688 EXPECT_EQ("-500,0 500x500",
679 FindDisplayForId(internal_display_id).bounds().ToString()); 689 FindDisplayForId(internal_display_id).bounds().ToString());
680 EXPECT_EQ("0,0 100x100", FindDisplayForId(10).bounds().ToString()); 690 EXPECT_EQ("0,0 100x100", FindDisplayForId(10).bounds().ToString());
681 } 691 }
682 692
683 TEST_F(DisplayManagerTest, AutomaticOverscanInsets) { 693 TEST_F(DisplayManagerTest, AutomaticOverscanInsets) {
694 if (!SupportsMultipleDisplays())
695 return;
696
684 UpdateDisplay("200x200,400x400"); 697 UpdateDisplay("200x200,400x400");
685 698
686 std::vector<DisplayInfo> display_info_list; 699 std::vector<DisplayInfo> display_info_list;
687 display_info_list.push_back(GetDisplayInfoAt(0)); 700 display_info_list.push_back(GetDisplayInfoAt(0));
688 display_info_list.push_back(GetDisplayInfoAt(1)); 701 display_info_list.push_back(GetDisplayInfoAt(1));
689 display_info_list[1].set_has_overscan_for_test(true); 702 display_info_list[1].set_has_overscan_for_test(true);
690 int64 id = display_info_list[1].id(); 703 int64 id = display_info_list[1].id();
691 // SetDefaultOverscanInsets(&display_info_list[1]); 704 // SetDefaultOverscanInsets(&display_info_list[1]);
692 display_manager()->OnNativeDisplaysChanged(display_info_list); 705 display_manager()->OnNativeDisplaysChanged(display_info_list);
693 // It has overscan insets, although SetOverscanInsets() isn't called. 706 // It has overscan insets, although SetOverscanInsets() isn't called.
(...skipping 13 matching lines...) Expand all
707 EXPECT_EQ("400x400", 720 EXPECT_EQ("400x400",
708 GetDisplayInfoAt(1).size_in_pixel().ToString()); 721 GetDisplayInfoAt(1).size_in_pixel().ToString());
709 722
710 // Clearing the custom overscan should set the bounds to 723 // Clearing the custom overscan should set the bounds to
711 // original. 724 // original.
712 display_manager()->ClearCustomOverscanInsets(id); 725 display_manager()->ClearCustomOverscanInsets(id);
713 EXPECT_EQ("380x380", 726 EXPECT_EQ("380x380",
714 GetDisplayInfoAt(1).size_in_pixel().ToString()); 727 GetDisplayInfoAt(1).size_in_pixel().ToString());
715 } 728 }
716 729
717 #if defined(OS_WIN) 730 TEST_F(DisplayManagerTest, Rotate) {
718 // Flaky on Win8 Aura: http://crbug.com/244466 731 if (!SupportsMultipleDisplays())
719 #define MAYBE_Rotate DISABLED_Rotate 732 return;
720 #else 733
721 #define MAYBE_Rotate Rotate
722 #endif
723 TEST_F(DisplayManagerTest, MAYBE_Rotate) {
724 UpdateDisplay("100x200/r,300x400/l"); 734 UpdateDisplay("100x200/r,300x400/l");
725 EXPECT_EQ("1,1 100x200", 735 EXPECT_EQ("1,1 100x200",
726 GetDisplayInfoAt(0).bounds_in_pixel().ToString()); 736 GetDisplayInfoAt(0).bounds_in_pixel().ToString());
727 EXPECT_EQ("200x100", 737 EXPECT_EQ("200x100",
728 GetDisplayInfoAt(0).size_in_pixel().ToString()); 738 GetDisplayInfoAt(0).size_in_pixel().ToString());
729 739
730 EXPECT_EQ("1,201 300x400", 740 EXPECT_EQ("1,201 300x400",
731 GetDisplayInfoAt(1).bounds_in_pixel().ToString()); 741 GetDisplayInfoAt(1).bounds_in_pixel().ToString());
732 EXPECT_EQ("400x300", 742 EXPECT_EQ("400x300",
733 GetDisplayInfoAt(1).size_in_pixel().ToString()); 743 GetDisplayInfoAt(1).size_in_pixel().ToString());
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 display_manager()->SetDisplayUIScale(display_id, 0.625f); 828 display_manager()->SetDisplayUIScale(display_id, 0.625f);
819 EXPECT_EQ(0.625f, GetDisplayInfoAt(0).ui_scale()); 829 EXPECT_EQ(0.625f, GetDisplayInfoAt(0).ui_scale());
820 display_manager()->SetDisplayUIScale(display_id, 0.6f); 830 display_manager()->SetDisplayUIScale(display_id, 0.6f);
821 EXPECT_EQ(0.625f, GetDisplayInfoAt(0).ui_scale()); 831 EXPECT_EQ(0.625f, GetDisplayInfoAt(0).ui_scale());
822 display_manager()->SetDisplayUIScale(display_id, 0.5f); 832 display_manager()->SetDisplayUIScale(display_id, 0.5f);
823 EXPECT_EQ(0.5f, GetDisplayInfoAt(0).ui_scale()); 833 EXPECT_EQ(0.5f, GetDisplayInfoAt(0).ui_scale());
824 } 834 }
825 835
826 836
827 #if defined(OS_WIN) 837 #if defined(OS_WIN)
828 // TODO(oshima): On Windows, we don't update the origin/size right away. 838 // TODO(scottmg): RootWindow doesn't get resized on Windows
839 // Ash. http://crbug.com/247916.
829 #define MAYBE_UpdateMouseCursorAfterRotateZoom DISABLED_UpdateMouseCursorAfterRo tateZoom 840 #define MAYBE_UpdateMouseCursorAfterRotateZoom DISABLED_UpdateMouseCursorAfterRo tateZoom
830 #else 841 #else
831 #define MAYBE_UpdateMouseCursorAfterRotateZoom UpdateMouseCursorAfterRotateZoom 842 #define MAYBE_UpdateMouseCursorAfterRotateZoom UpdateMouseCursorAfterRotateZoom
832 #endif 843 #endif
833 844
834 TEST_F(DisplayManagerTest, MAYBE_UpdateMouseCursorAfterRotateZoom) { 845 TEST_F(DisplayManagerTest, MAYBE_UpdateMouseCursorAfterRotateZoom) {
835 // Make sure just rotating will not change native location. 846 // Make sure just rotating will not change native location.
836 UpdateDisplay("300x200,200x150"); 847 UpdateDisplay("300x200,200x150");
837 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); 848 Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
838 aura::Env* env = aura::Env::GetInstance(); 849 aura::Env* env = aura::Env::GetInstance();
(...skipping 23 matching lines...) Expand all
862 EXPECT_EQ("150,225", env->last_mouse_location().ToString()); 873 EXPECT_EQ("150,225", env->last_mouse_location().ToString());
863 874
864 // Test on 2nd display. 875 // Test on 2nd display.
865 UpdateDisplay("600x400,400x300*2"); 876 UpdateDisplay("600x400,400x300*2");
866 generator2.MoveMouseToInHost(200, 100); 877 generator2.MoveMouseToInHost(200, 100);
867 EXPECT_EQ("700,50", env->last_mouse_location().ToString()); 878 EXPECT_EQ("700,50", env->last_mouse_location().ToString());
868 UpdateDisplay("600x400,400x300*2@1.5"); 879 UpdateDisplay("600x400,400x300*2@1.5");
869 EXPECT_EQ("750,75", env->last_mouse_location().ToString()); 880 EXPECT_EQ("750,75", env->last_mouse_location().ToString());
870 } 881 }
871 882
872 #if defined(OS_WIN)
873 // This does not work on metro.
874 #define MAYBE_SoftwareMirroring DISABLED_SoftwareMirroring
875 #else
876 #define MAYBE_SoftwareMirroring SoftwareMirroring
877 #endif
878
879 class TestDisplayObserver : public gfx::DisplayObserver { 883 class TestDisplayObserver : public gfx::DisplayObserver {
880 public: 884 public:
881 TestDisplayObserver() : changed_(false) {} 885 TestDisplayObserver() : changed_(false) {}
882 virtual ~TestDisplayObserver() {} 886 virtual ~TestDisplayObserver() {}
883 887
884 // gfx::DisplayObserver overrides: 888 // gfx::DisplayObserver overrides:
885 virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE { 889 virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE {
886 } 890 }
887 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE { 891 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE {
888 // Mirror window should already be delete before restoring 892 // Mirror window should already be delete before restoring
(...skipping 14 matching lines...) Expand all
903 return changed; 907 return changed;
904 } 908 }
905 909
906 private: 910 private:
907 test::MirrorWindowTestApi test_api; 911 test::MirrorWindowTestApi test_api;
908 bool changed_; 912 bool changed_;
909 913
910 DISALLOW_COPY_AND_ASSIGN(TestDisplayObserver); 914 DISALLOW_COPY_AND_ASSIGN(TestDisplayObserver);
911 }; 915 };
912 916
913 TEST_F(DisplayManagerTest, MAYBE_SoftwareMirroring) { 917 TEST_F(DisplayManagerTest, SoftwareMirroring) {
918 if (!SupportsMultipleDisplays())
919 return;
920
914 UpdateDisplay("300x400,400x500"); 921 UpdateDisplay("300x400,400x500");
915 922
916 test::MirrorWindowTestApi test_api; 923 test::MirrorWindowTestApi test_api;
917 EXPECT_EQ(NULL, test_api.GetRootWindow()); 924 EXPECT_EQ(NULL, test_api.GetRootWindow());
918 925
919 TestDisplayObserver display_observer; 926 TestDisplayObserver display_observer;
920 Shell::GetScreen()->AddObserver(&display_observer); 927 Shell::GetScreen()->AddObserver(&display_observer);
921 928
922 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 929 DisplayManager* display_manager = Shell::GetInstance()->display_manager();
923 display_manager->SetSoftwareMirroring(true); 930 display_manager->SetSoftwareMirroring(true);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 UpdateDisplay("400x600/o,600x800/o"); 972 UpdateDisplay("400x600/o,600x800/o");
966 EXPECT_FALSE(display_observer.changed_and_reset()); 973 EXPECT_FALSE(display_observer.changed_and_reset());
967 EXPECT_EQ("400x600", test_api.GetRootWindow()->bounds().size().ToString()); 974 EXPECT_EQ("400x600", test_api.GetRootWindow()->bounds().size().ToString());
968 EXPECT_EQ("600x800", GetMirroredDisplay().size().ToString()); 975 EXPECT_EQ("600x800", GetMirroredDisplay().size().ToString());
969 976
970 Shell::GetScreen()->RemoveObserver(&display_observer); 977 Shell::GetScreen()->RemoveObserver(&display_observer);
971 } 978 }
972 979
973 } // namespace internal 980 } // namespace internal
974 } // namespace ash 981 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/display_manager.cc ('k') | ash/display/mouse_cursor_event_filter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698