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_manager.h" | 7 #include "ash/display/display_manager.h" |
8 #include "ash/launcher/launcher.h" | 8 #include "ash/launcher/launcher.h" |
9 #include "ash/screen_ash.h" | 9 #include "ash/screen_ash.h" |
10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 gfx::Display primary = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); | 91 gfx::Display primary = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); |
92 EXPECT_EQ("0,0 444x333", primary.bounds().ToString()); | 92 EXPECT_EQ("0,0 444x333", primary.bounds().ToString()); |
93 EXPECT_EQ(2, gfx::Screen::GetNativeScreen()->GetNumDisplays()); | 93 EXPECT_EQ(2, gfx::Screen::GetNativeScreen()->GetNumDisplays()); |
94 } | 94 } |
95 }; | 95 }; |
96 | 96 |
97 } // namespace | 97 } // namespace |
98 | 98 |
99 typedef test::AshTestBase DisplayControllerTest; | 99 typedef test::AshTestBase DisplayControllerTest; |
100 | 100 |
101 #if defined(OS_WIN) | 101 TEST_F(DisplayControllerShutdownTest, Shutdown) { |
102 // TODO(oshima): Windows creates a window with smaller client area. | |
103 // Fix this and enable tests. | |
104 #define MAYBE_SecondaryDisplayLayout DISABLED_SecondaryDisplayLayout | |
105 #define MAYBE_BoundsUpdated DISABLED_BoundsUpdated | |
106 #define MAYBE_UpdateDisplayWithHostOrigin DISABLED_UpdateDisplayWithHostOrigin | |
107 #define MAYBE_CursorDeviceScaleFactorSwapPrimary \ | |
108 DISABLED_CursorDeviceScaleFactorSwapPrimary | |
109 #define MAYBE_Shutdown DISABLED_Shutdown | |
110 #else | |
111 #define MAYBE_SecondaryDisplayLayout SecondaryDisplayLayout | |
112 #define MAYBE_BoundsUpdated BoundsUpdated | |
113 #define MAYBE_CursorDeviceScaleFactorSwapPrimary \ | |
114 CursorDeviceScaleFactorSwapPrimary | |
115 #define MAYBE_UpdateDisplayWithHostOrigin UpdateDisplayWithHostOrigin | |
116 #define MAYBE_Shutdown Shutdown | |
117 #endif | |
118 | |
119 TEST_F(DisplayControllerShutdownTest, MAYBE_Shutdown) { | |
120 UpdateDisplay("444x333, 200x200"); | 102 UpdateDisplay("444x333, 200x200"); |
121 } | 103 } |
122 | 104 |
123 // Flaky - crbug.com/161857 | 105 TEST_F(DisplayControllerTest, SecondaryDisplayLayout) { |
124 TEST_F(DisplayControllerTest, MAYBE_SecondaryDisplayLayout) { | |
125 TestObserver observer; | 106 TestObserver observer; |
126 UpdateDisplay("500x500,400x400"); | 107 UpdateDisplay("500x500,400x400"); |
127 EXPECT_EQ(2, observer.CountAndReset()) | 108 EXPECT_EQ(2, observer.CountAndReset()) |
128 << observer.ToString(); // resize and add | 109 << observer.ToString(); // resize and add |
129 gfx::Display* secondary_display = | 110 gfx::Display* secondary_display = |
130 Shell::GetInstance()->display_manager()->GetDisplayAt(1); | 111 Shell::GetInstance()->display_manager()->GetDisplayAt(1); |
131 gfx::Insets insets(5, 5, 5, 5); | 112 gfx::Insets insets(5, 5, 5, 5); |
132 secondary_display->UpdateWorkAreaFromInsets(insets); | 113 secondary_display->UpdateWorkAreaFromInsets(insets); |
133 | 114 |
134 // Default layout is RIGHT. | 115 // Default layout is RIGHT. |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); | 200 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); |
220 EXPECT_EQ(1, observer.CountAndReset()) | 201 EXPECT_EQ(1, observer.CountAndReset()) |
221 << observer.ToString(); | 202 << observer.ToString(); |
222 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) | 203 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) |
223 << observer.ToString(); | 204 << observer.ToString(); |
224 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()) | 205 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()) |
225 << observer.ToString(); | 206 << observer.ToString(); |
226 | 207 |
227 } | 208 } |
228 | 209 |
229 TEST_F(DisplayControllerTest, MAYBE_BoundsUpdated) { | 210 TEST_F(DisplayControllerTest, BoundsUpdated) { |
230 TestObserver observer; | 211 TestObserver observer; |
231 SetSecondaryDisplayLayout(DisplayLayout::BOTTOM); | 212 SetSecondaryDisplayLayout(DisplayLayout::BOTTOM); |
232 UpdateDisplay("200x200,300x300"); // layout, resize and add. | 213 UpdateDisplay("200x200,300x300"); // layout, resize and add. |
233 EXPECT_EQ(3, observer.CountAndReset()); | 214 EXPECT_EQ(3, observer.CountAndReset()); |
234 | 215 |
235 gfx::Display* secondary_display = | 216 gfx::Display* secondary_display = |
236 Shell::GetInstance()->display_manager()->GetDisplayAt(1); | 217 Shell::GetInstance()->display_manager()->GetDisplayAt(1); |
237 gfx::Insets insets(5, 5, 5, 5); | 218 gfx::Insets insets(5, 5, 5, 5); |
238 secondary_display->UpdateWorkAreaFromInsets(insets); | 219 secondary_display->UpdateWorkAreaFromInsets(insets); |
239 | 220 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 aura::Window* launcher_window = | 298 aura::Window* launcher_window = |
318 Launcher::ForPrimaryDisplay()->widget()->GetNativeView(); | 299 Launcher::ForPrimaryDisplay()->widget()->GetNativeView(); |
319 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 300 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
320 EXPECT_FALSE(secondary_root->Contains(launcher_window)); | 301 EXPECT_FALSE(secondary_root->Contains(launcher_window)); |
321 EXPECT_EQ(primary_display.id(), | 302 EXPECT_EQ(primary_display.id(), |
322 Shell::GetScreen()->GetDisplayNearestPoint( | 303 Shell::GetScreen()->GetDisplayNearestPoint( |
323 gfx::Point(-100, -100)).id()); | 304 gfx::Point(-100, -100)).id()); |
324 EXPECT_EQ(primary_display.id(), | 305 EXPECT_EQ(primary_display.id(), |
325 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); | 306 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); |
326 | 307 |
327 #if !defined(OS_WIN) | |
328 EXPECT_EQ("0,0 200x200", primary_display.bounds().ToString()); | 308 EXPECT_EQ("0,0 200x200", primary_display.bounds().ToString()); |
329 EXPECT_EQ("0,0 200x152", primary_display.work_area().ToString()); | 309 EXPECT_EQ("0,0 200x152", primary_display.work_area().ToString()); |
330 EXPECT_EQ("200,0 300x300", secondary_display.bounds().ToString()); | 310 EXPECT_EQ("200,0 300x300", secondary_display.bounds().ToString()); |
331 EXPECT_EQ("200,0 300x300", secondary_display.work_area().ToString()); | 311 EXPECT_EQ("200,0 300x300", secondary_display.work_area().ToString()); |
332 #endif | |
333 | 312 |
334 // Switch primary and secondary | 313 // Switch primary and secondary |
335 display_controller->SetPrimaryDisplay(secondary_display); | 314 display_controller->SetPrimaryDisplay(secondary_display); |
336 EXPECT_EQ(secondary_display.id(), | 315 EXPECT_EQ(secondary_display.id(), |
337 Shell::GetScreen()->GetPrimaryDisplay().id()); | 316 Shell::GetScreen()->GetPrimaryDisplay().id()); |
338 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); | 317 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); |
339 EXPECT_EQ(secondary_display.id(), | 318 EXPECT_EQ(secondary_display.id(), |
340 Shell::GetScreen()->GetDisplayNearestPoint( | 319 Shell::GetScreen()->GetDisplayNearestPoint( |
341 gfx::Point(-100, -100)).id()); | 320 gfx::Point(-100, -100)).id()); |
342 EXPECT_EQ(secondary_display.id(), | 321 EXPECT_EQ(secondary_display.id(), |
343 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); | 322 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); |
344 | 323 |
345 EXPECT_EQ( | 324 EXPECT_EQ( |
346 primary_root, | 325 primary_root, |
347 display_controller->GetRootWindowForDisplayId(secondary_display.id())); | 326 display_controller->GetRootWindowForDisplayId(secondary_display.id())); |
348 EXPECT_EQ( | 327 EXPECT_EQ( |
349 secondary_root, | 328 secondary_root, |
350 display_controller->GetRootWindowForDisplayId(primary_display.id())); | 329 display_controller->GetRootWindowForDisplayId(primary_display.id())); |
351 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 330 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
352 EXPECT_FALSE(secondary_root->Contains(launcher_window)); | 331 EXPECT_FALSE(secondary_root->Contains(launcher_window)); |
353 | 332 |
354 #if !defined(OS_WIN) | |
355 // Test if the bounds are correctly swapped. | 333 // Test if the bounds are correctly swapped. |
356 gfx::Display swapped_primary = Shell::GetScreen()->GetPrimaryDisplay(); | 334 gfx::Display swapped_primary = Shell::GetScreen()->GetPrimaryDisplay(); |
357 gfx::Display swapped_secondary = ScreenAsh::GetSecondaryDisplay(); | 335 gfx::Display swapped_secondary = ScreenAsh::GetSecondaryDisplay(); |
358 EXPECT_EQ("0,0 300x300", swapped_primary.bounds().ToString()); | 336 EXPECT_EQ("0,0 300x300", swapped_primary.bounds().ToString()); |
359 EXPECT_EQ("0,0 300x252", swapped_primary.work_area().ToString()); | 337 EXPECT_EQ("0,0 300x252", swapped_primary.work_area().ToString()); |
360 EXPECT_EQ("-200,-50 200x200", swapped_secondary.bounds().ToString()); | 338 EXPECT_EQ("-200,-50 200x200", swapped_secondary.bounds().ToString()); |
361 EXPECT_EQ("-200,-50 200x200", swapped_secondary.work_area().ToString()); | 339 EXPECT_EQ("-200,-50 200x200", swapped_secondary.work_area().ToString()); |
362 #endif | |
363 | 340 |
364 const DisplayLayout& inverted_layout = | 341 const DisplayLayout& inverted_layout = |
365 display_controller->GetLayoutForDisplay(primary_display); | 342 display_controller->GetLayoutForDisplay(primary_display); |
366 | 343 |
367 EXPECT_EQ("left, -50", inverted_layout.ToString()); | 344 EXPECT_EQ("left, -50", inverted_layout.ToString()); |
368 | 345 |
369 aura::WindowTracker tracker; | 346 aura::WindowTracker tracker; |
370 tracker.Add(primary_root); | 347 tracker.Add(primary_root); |
371 tracker.Add(secondary_root); | 348 tracker.Add(secondary_root); |
372 | 349 |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 EXPECT_EQ(third_display.id(), ScreenAsh::GetSecondaryDisplay().id()); | 472 EXPECT_EQ(third_display.id(), ScreenAsh::GetSecondaryDisplay().id()); |
496 EXPECT_EQ( | 473 EXPECT_EQ( |
497 primary_root, | 474 primary_root, |
498 display_controller->GetRootWindowForDisplayId(primary_display.id())); | 475 display_controller->GetRootWindowForDisplayId(primary_display.id())); |
499 EXPECT_NE( | 476 EXPECT_NE( |
500 primary_root, | 477 primary_root, |
501 display_controller->GetRootWindowForDisplayId(third_display.id())); | 478 display_controller->GetRootWindowForDisplayId(third_display.id())); |
502 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 479 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
503 } | 480 } |
504 | 481 |
505 TEST_F(DisplayControllerTest, MAYBE_CursorDeviceScaleFactorSwapPrimary) { | 482 TEST_F(DisplayControllerTest, CursorDeviceScaleFactorSwapPrimary) { |
506 DisplayController* display_controller = | 483 DisplayController* display_controller = |
507 Shell::GetInstance()->display_controller(); | 484 Shell::GetInstance()->display_controller(); |
508 | 485 |
509 UpdateDisplay("200x200,200x200*2"); | 486 UpdateDisplay("200x200,200x200*2"); |
510 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); | 487 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); |
511 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); | 488 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); |
512 | 489 |
513 aura::RootWindow* primary_root = | 490 aura::RootWindow* primary_root = |
514 display_controller->GetRootWindowForDisplayId(primary_display.id()); | 491 display_controller->GetRootWindowForDisplayId(primary_display.id()); |
515 aura::RootWindow* secondary_root = | 492 aura::RootWindow* secondary_root = |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
547 | 524 |
548 // Cursor's device scale factor should be updated even without moving cursor. | 525 // Cursor's device scale factor should be updated even without moving cursor. |
549 EXPECT_EQ(1.0f, test_api.GetDeviceScaleFactor()); | 526 EXPECT_EQ(1.0f, test_api.GetDeviceScaleFactor()); |
550 | 527 |
551 primary_root->MoveCursorTo(gfx::Point(50, 50)); | 528 primary_root->MoveCursorTo(gfx::Point(50, 50)); |
552 EXPECT_EQ(1.0f, | 529 EXPECT_EQ(1.0f, |
553 primary_root->AsRootWindowHostDelegate()->GetDeviceScaleFactor()); | 530 primary_root->AsRootWindowHostDelegate()->GetDeviceScaleFactor()); |
554 EXPECT_EQ(1.0f, test_api.GetDeviceScaleFactor()); | 531 EXPECT_EQ(1.0f, test_api.GetDeviceScaleFactor()); |
555 } | 532 } |
556 | 533 |
| 534 #if defined(OS_WIN) |
| 535 // TODO(oshima): On Windows, we don't update the origin/size right away. |
| 536 #define MAYBE_UpdateDisplayWithHostOrigin DISABLED_UpdateDisplayWithHostOrigin |
| 537 #else |
| 538 #define MAYBE_UpdateDisplayWithHostOrigin UpdateDisplayWithHostOrigin |
| 539 #endif |
| 540 |
557 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { | 541 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { |
558 UpdateDisplay("100x200,300x400"); | 542 UpdateDisplay("100x200,300x400"); |
559 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 543 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
560 Shell::RootWindowList root_windows = | 544 Shell::RootWindowList root_windows = |
561 Shell::GetInstance()->GetAllRootWindows(); | 545 Shell::GetInstance()->GetAllRootWindows(); |
562 ASSERT_EQ(2U, root_windows.size()); | 546 ASSERT_EQ(2U, root_windows.size()); |
563 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); | 547 EXPECT_EQ("1,1", root_windows[0]->GetHostOrigin().ToString()); |
564 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 548 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
565 // UpdateDisplay set the origin if it's not set. | 549 // UpdateDisplay set the origin if it's not set. |
566 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString()); | 550 EXPECT_NE("1,1", root_windows[1]->GetHostOrigin().ToString()); |
567 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 551 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
568 | 552 |
569 UpdateDisplay("100x200,200+300-300x400"); | 553 UpdateDisplay("100x200,200+300-300x400"); |
570 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 554 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
571 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); | 555 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); |
572 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 556 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
573 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString()); | 557 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString()); |
574 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 558 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
575 | 559 |
576 UpdateDisplay("400+500-200x300,300x400"); | 560 UpdateDisplay("400+500-200x300,300x400"); |
577 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 561 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
578 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString()); | 562 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString()); |
579 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString()); | 563 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString()); |
580 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString()); | 564 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString()); |
581 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 565 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
582 | 566 |
583 UpdateDisplay("100+200-100x200,300+500-200x300"); | 567 UpdateDisplay("100+200-100x200,300+500-200x300"); |
584 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 568 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
585 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); | 569 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); |
586 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 570 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
587 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); | 571 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); |
588 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); | 572 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); |
589 } | 573 } |
590 | 574 |
591 } // namespace test | 575 } // namespace test |
592 } // namespace ash | 576 } // namespace ash |
OLD | NEW |