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/shelf/shelf_layout_manager.h" | 5 #include "ash/shelf/shelf_layout_manager.h" |
6 | 6 |
7 #include "ash/accelerators/accelerator_controller.h" | 7 #include "ash/accelerators/accelerator_controller.h" |
8 #include "ash/accelerators/accelerator_table.h" | 8 #include "ash/accelerators/accelerator_table.h" |
9 #include "ash/ash_switches.h" | 9 #include "ash/ash_switches.h" |
10 #include "ash/common/shell_window_ids.h" | 10 #include "ash/common/shell_window_ids.h" |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 if (type == ui::ET_GESTURE_SCROLL_END) | 159 if (type == ui::ET_GESTURE_SCROLL_END) |
160 return; | 160 return; |
161 | 161 |
162 if (type == ui::ET_GESTURE_SCROLL_UPDATE) | 162 if (type == ui::ET_GESTURE_SCROLL_UPDATE) |
163 scroll_.Add(delta); | 163 scroll_.Add(delta); |
164 | 164 |
165 gfx::Rect shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); | 165 gfx::Rect shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); |
166 if (GetShelfLayoutManager()->IsHorizontalAlignment()) { | 166 if (GetShelfLayoutManager()->IsHorizontalAlignment()) { |
167 EXPECT_EQ(not_visible_bounds_.bottom(), shelf_bounds.bottom()); | 167 EXPECT_EQ(not_visible_bounds_.bottom(), shelf_bounds.bottom()); |
168 EXPECT_EQ(visible_bounds_.bottom(), shelf_bounds.bottom()); | 168 EXPECT_EQ(visible_bounds_.bottom(), shelf_bounds.bottom()); |
169 } else if (wm::SHELF_ALIGNMENT_RIGHT == | 169 } else if (SHELF_ALIGNMENT_RIGHT == |
170 GetShelfLayoutManager()->GetAlignment()) { | 170 GetShelfLayoutManager()->GetAlignment()) { |
171 EXPECT_EQ(not_visible_bounds_.right(), shelf_bounds.right()); | 171 EXPECT_EQ(not_visible_bounds_.right(), shelf_bounds.right()); |
172 EXPECT_EQ(visible_bounds_.right(), shelf_bounds.right()); | 172 EXPECT_EQ(visible_bounds_.right(), shelf_bounds.right()); |
173 } else if (wm::SHELF_ALIGNMENT_LEFT == | 173 } else if (SHELF_ALIGNMENT_LEFT == |
174 GetShelfLayoutManager()->GetAlignment()) { | 174 GetShelfLayoutManager()->GetAlignment()) { |
175 EXPECT_EQ(not_visible_bounds_.x(), shelf_bounds.x()); | 175 EXPECT_EQ(not_visible_bounds_.x(), shelf_bounds.x()); |
176 EXPECT_EQ(visible_bounds_.x(), shelf_bounds.x()); | 176 EXPECT_EQ(visible_bounds_.x(), shelf_bounds.x()); |
177 } | 177 } |
178 | 178 |
179 // if the shelf is being dimmed test dimmer bounds as well. | 179 // if the shelf is being dimmed test dimmer bounds as well. |
180 if (GetShelfWidget()->GetDimsShelf()) | 180 if (GetShelfWidget()->GetDimsShelf()) |
181 EXPECT_EQ(GetShelfWidget()->GetWindowBoundsInScreen(), | 181 EXPECT_EQ(GetShelfWidget()->GetWindowBoundsInScreen(), |
182 GetShelfWidget()->GetDimmerBoundsForTest()); | 182 GetShelfWidget()->GetDimmerBoundsForTest()); |
183 | 183 |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 end, | 481 end, |
482 start, | 482 start, |
483 kTimeDelta, | 483 kTimeDelta, |
484 kNumScrollSteps, | 484 kNumScrollSteps, |
485 base::Bind(&ShelfDragCallback::ProcessScroll, | 485 base::Bind(&ShelfDragCallback::ProcessScroll, |
486 base::Unretained(&handler))); | 486 base::Unretained(&handler))); |
487 | 487 |
488 // Swipe down very little. It shouldn't change any state. | 488 // Swipe down very little. It shouldn't change any state. |
489 if (GetShelfLayoutManager()->IsHorizontalAlignment()) | 489 if (GetShelfLayoutManager()->IsHorizontalAlignment()) |
490 end.set_y(start.y() + shelf_shown.height() * 3 / 10); | 490 end.set_y(start.y() + shelf_shown.height() * 3 / 10); |
491 else if (wm::SHELF_ALIGNMENT_LEFT == GetShelfLayoutManager()->GetAlignment()) | 491 else if (SHELF_ALIGNMENT_LEFT == GetShelfLayoutManager()->GetAlignment()) |
492 end.set_x(start.x() - shelf_shown.width() * 3 / 10); | 492 end.set_x(start.x() - shelf_shown.width() * 3 / 10); |
493 else if (wm::SHELF_ALIGNMENT_RIGHT == GetShelfLayoutManager()->GetAlignment()) | 493 else if (SHELF_ALIGNMENT_RIGHT == GetShelfLayoutManager()->GetAlignment()) |
494 end.set_x(start.x() + shelf_shown.width() * 3 / 10); | 494 end.set_x(start.x() + shelf_shown.width() * 3 / 10); |
495 generator.GestureScrollSequence(start, end, kTimeDelta, 5); | 495 generator.GestureScrollSequence(start, end, kTimeDelta, 5); |
496 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 496 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
497 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); | 497 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); |
498 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); | 498 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); |
499 EXPECT_EQ(shelf_shown.ToString(), | 499 EXPECT_EQ(shelf_shown.ToString(), |
500 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); | 500 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); |
501 | 501 |
502 // Swipe down again to hide. | 502 // Swipe down again to hide. |
503 end = start + delta; | 503 end = start + delta; |
504 generator.GestureScrollSequenceWithCallback( | 504 generator.GestureScrollSequenceWithCallback( |
505 start, | 505 start, |
506 end, | 506 end, |
507 kTimeDelta, | 507 kTimeDelta, |
508 kNumScrollSteps, | 508 kNumScrollSteps, |
509 base::Bind(&ShelfDragCallback::ProcessScroll, | 509 base::Bind(&ShelfDragCallback::ProcessScroll, |
510 base::Unretained(&handler))); | 510 base::Unretained(&handler))); |
511 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 511 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
512 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 512 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
513 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior()); | 513 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior()); |
514 EXPECT_EQ(GetShelfWidget()->GetDimmerBoundsForTest(), gfx::Rect()); | 514 EXPECT_EQ(GetShelfWidget()->GetDimmerBoundsForTest(), gfx::Rect()); |
515 EXPECT_EQ(bounds_noshelf.ToString(), window->bounds().ToString()); | 515 EXPECT_EQ(bounds_noshelf.ToString(), window->bounds().ToString()); |
516 EXPECT_EQ(shelf_hidden.ToString(), | 516 EXPECT_EQ(shelf_hidden.ToString(), |
517 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); | 517 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); |
518 | 518 |
519 // Swipe up in extended hit region to show it. | 519 // Swipe up in extended hit region to show it. |
520 gfx::Point extended_start = start; | 520 gfx::Point extended_start = start; |
521 if (GetShelfLayoutManager()->IsHorizontalAlignment()) | 521 if (GetShelfLayoutManager()->IsHorizontalAlignment()) |
522 extended_start.set_y(GetShelfWidget()->GetWindowBoundsInScreen().y() -1); | 522 extended_start.set_y(GetShelfWidget()->GetWindowBoundsInScreen().y() -1); |
523 else if (wm::SHELF_ALIGNMENT_LEFT == GetShelfLayoutManager()->GetAlignment()) | 523 else if (SHELF_ALIGNMENT_LEFT == GetShelfLayoutManager()->GetAlignment()) |
524 extended_start.set_x( | 524 extended_start.set_x( |
525 GetShelfWidget()->GetWindowBoundsInScreen().right() + 1); | 525 GetShelfWidget()->GetWindowBoundsInScreen().right() + 1); |
526 else if (wm::SHELF_ALIGNMENT_RIGHT == GetShelfLayoutManager()->GetAlignment()) | 526 else if (SHELF_ALIGNMENT_RIGHT == GetShelfLayoutManager()->GetAlignment()) |
527 extended_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().x() - 1); | 527 extended_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().x() - 1); |
528 end = extended_start - delta; | 528 end = extended_start - delta; |
529 generator.GestureScrollSequenceWithCallback( | 529 generator.GestureScrollSequenceWithCallback( |
530 extended_start, | 530 extended_start, |
531 end, | 531 end, |
532 kTimeDelta, | 532 kTimeDelta, |
533 kNumScrollSteps, | 533 kNumScrollSteps, |
534 base::Bind(&ShelfDragCallback::ProcessScroll, | 534 base::Bind(&ShelfDragCallback::ProcessScroll, |
535 base::Unretained(&handler))); | 535 base::Unretained(&handler))); |
536 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 536 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 570 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
571 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior()); | 571 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior()); |
572 EXPECT_EQ(shelf_hidden.ToString(), | 572 EXPECT_EQ(shelf_hidden.ToString(), |
573 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); | 573 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); |
574 | 574 |
575 // Swipe up from below the shelf where a bezel would be, this should show the | 575 // Swipe up from below the shelf where a bezel would be, this should show the |
576 // shelf. | 576 // shelf. |
577 gfx::Point below_start = start; | 577 gfx::Point below_start = start; |
578 if (GetShelfLayoutManager()->IsHorizontalAlignment()) | 578 if (GetShelfLayoutManager()->IsHorizontalAlignment()) |
579 below_start.set_y(GetShelfWidget()->GetWindowBoundsInScreen().bottom() + 1); | 579 below_start.set_y(GetShelfWidget()->GetWindowBoundsInScreen().bottom() + 1); |
580 else if (wm::SHELF_ALIGNMENT_LEFT == GetShelfLayoutManager()->GetAlignment()) | 580 else if (SHELF_ALIGNMENT_LEFT == GetShelfLayoutManager()->GetAlignment()) |
581 below_start.set_x( | 581 below_start.set_x( |
582 GetShelfWidget()->GetWindowBoundsInScreen().x() - 1); | 582 GetShelfWidget()->GetWindowBoundsInScreen().x() - 1); |
583 else if (wm::SHELF_ALIGNMENT_RIGHT == GetShelfLayoutManager()->GetAlignment()) | 583 else if (SHELF_ALIGNMENT_RIGHT == GetShelfLayoutManager()->GetAlignment()) |
584 below_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().right() + 1); | 584 below_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().right() + 1); |
585 end = below_start - delta; | 585 end = below_start - delta; |
586 generator.GestureScrollSequence( | 586 generator.GestureScrollSequence( |
587 below_start, end, kTimeDelta, kNumScrollSteps); | 587 below_start, end, kTimeDelta, kNumScrollSteps); |
588 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 588 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
589 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); | 589 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); |
590 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); | 590 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); |
591 EXPECT_EQ(GetShelfWidget()->GetDimmerBoundsForTest(), | 591 EXPECT_EQ(GetShelfWidget()->GetDimmerBoundsForTest(), |
592 GetShelfWidget()->GetWindowBoundsInScreen()); | 592 GetShelfWidget()->GetWindowBoundsInScreen()); |
593 EXPECT_EQ(shelf_shown.ToString(), | 593 EXPECT_EQ(shelf_shown.ToString(), |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
906 // boundary between the primary and the secondary display. | 906 // boundary between the primary and the secondary display. |
907 TEST_F(ShelfLayoutManagerTest, AutoHideShelfOnScreenBoundary) { | 907 TEST_F(ShelfLayoutManagerTest, AutoHideShelfOnScreenBoundary) { |
908 if (!SupportsMultipleDisplays()) | 908 if (!SupportsMultipleDisplays()) |
909 return; | 909 return; |
910 | 910 |
911 UpdateDisplay("800x600,800x600"); | 911 UpdateDisplay("800x600,800x600"); |
912 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( | 912 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( |
913 test::CreateDisplayLayout(display::DisplayPlacement::RIGHT, 0)); | 913 test::CreateDisplayLayout(display::DisplayPlacement::RIGHT, 0)); |
914 // Put the primary monitor's shelf on the display boundary. | 914 // Put the primary monitor's shelf on the display boundary. |
915 Shelf* shelf = GetShelf(); | 915 Shelf* shelf = GetShelf(); |
916 shelf->SetAlignment(wm::SHELF_ALIGNMENT_RIGHT); | 916 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
917 | 917 |
918 // Create a window because the shelf is always shown when no windows are | 918 // Create a window because the shelf is always shown when no windows are |
919 // visible. | 919 // visible. |
920 CreateTestWidget(); | 920 CreateTestWidget(); |
921 | 921 |
922 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 922 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
923 ASSERT_EQ(root_windows[0], | 923 ASSERT_EQ(root_windows[0], |
924 GetShelfWidget()->GetNativeWindow()->GetRootWindow()); | 924 GetShelfWidget()->GetNativeWindow()->GetRootWindow()); |
925 | 925 |
926 shelf->SetAutoHideBehavior(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 926 shelf->SetAutoHideBehavior(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1661 } | 1661 } |
1662 | 1662 |
1663 | 1663 |
1664 #if defined(OS_WIN) | 1664 #if defined(OS_WIN) |
1665 // RootWindow and Display can't resize on Windows Ash. http://crbug.com/165962 | 1665 // RootWindow and Display can't resize on Windows Ash. http://crbug.com/165962 |
1666 #define MAYBE_SetAlignment DISABLED_SetAlignment | 1666 #define MAYBE_SetAlignment DISABLED_SetAlignment |
1667 #else | 1667 #else |
1668 #define MAYBE_SetAlignment SetAlignment | 1668 #define MAYBE_SetAlignment SetAlignment |
1669 #endif | 1669 #endif |
1670 | 1670 |
1671 // Tests wm::SHELF_ALIGNMENT_(LEFT, RIGHT). | 1671 // Tests SHELF_ALIGNMENT_(LEFT, RIGHT). |
1672 TEST_F(ShelfLayoutManagerTest, MAYBE_SetAlignment) { | 1672 TEST_F(ShelfLayoutManagerTest, MAYBE_SetAlignment) { |
1673 Shelf* shelf = GetShelf(); | 1673 Shelf* shelf = GetShelf(); |
1674 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 1674 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
1675 // Force an initial layout. | 1675 // Force an initial layout. |
1676 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 1676 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
1677 layout_manager->LayoutShelf(); | 1677 layout_manager->LayoutShelf(); |
1678 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 1678 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
1679 | 1679 |
1680 shelf->SetAlignment(wm::SHELF_ALIGNMENT_LEFT); | 1680 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); |
1681 gfx::Rect shelf_bounds( | 1681 gfx::Rect shelf_bounds( |
1682 GetShelfWidget()->GetWindowBoundsInScreen()); | 1682 GetShelfWidget()->GetWindowBoundsInScreen()); |
1683 const display::Screen* screen = display::Screen::GetScreen(); | 1683 const display::Screen* screen = display::Screen::GetScreen(); |
1684 display::Display display = | 1684 display::Display display = |
1685 screen->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); | 1685 screen->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); |
1686 ASSERT_NE(-1, display.id()); | 1686 ASSERT_NE(-1, display.id()); |
1687 EXPECT_EQ(layout_manager->GetIdealBounds().width(), | 1687 EXPECT_EQ(layout_manager->GetIdealBounds().width(), |
1688 display.GetWorkAreaInsets().left()); | 1688 display.GetWorkAreaInsets().left()); |
1689 EXPECT_GE( | 1689 EXPECT_GE( |
1690 shelf_bounds.width(), | 1690 shelf_bounds.width(), |
1691 GetShelfWidget()->GetContentsView()->GetPreferredSize().width()); | 1691 GetShelfWidget()->GetContentsView()->GetPreferredSize().width()); |
1692 EXPECT_EQ(wm::SHELF_ALIGNMENT_LEFT, GetSystemTray()->shelf_alignment()); | 1692 EXPECT_EQ(SHELF_ALIGNMENT_LEFT, GetSystemTray()->shelf_alignment()); |
1693 StatusAreaWidget* status_area_widget = GetShelfWidget()->status_area_widget(); | 1693 StatusAreaWidget* status_area_widget = GetShelfWidget()->status_area_widget(); |
1694 gfx::Rect status_bounds(status_area_widget->GetWindowBoundsInScreen()); | 1694 gfx::Rect status_bounds(status_area_widget->GetWindowBoundsInScreen()); |
1695 EXPECT_GE(status_bounds.width(), | 1695 EXPECT_GE(status_bounds.width(), |
1696 status_area_widget->GetContentsView()->GetPreferredSize().width()); | 1696 status_area_widget->GetContentsView()->GetPreferredSize().width()); |
1697 EXPECT_EQ(layout_manager->GetIdealBounds().width(), | 1697 EXPECT_EQ(layout_manager->GetIdealBounds().width(), |
1698 display.GetWorkAreaInsets().left()); | 1698 display.GetWorkAreaInsets().left()); |
1699 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); | 1699 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); |
1700 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); | 1700 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); |
1701 EXPECT_EQ(0, display.GetWorkAreaInsets().right()); | 1701 EXPECT_EQ(0, display.GetWorkAreaInsets().right()); |
1702 EXPECT_EQ(display.bounds().x(), shelf_bounds.x()); | 1702 EXPECT_EQ(display.bounds().x(), shelf_bounds.x()); |
1703 EXPECT_EQ(display.bounds().y(), shelf_bounds.y()); | 1703 EXPECT_EQ(display.bounds().y(), shelf_bounds.y()); |
1704 EXPECT_EQ(display.bounds().height(), shelf_bounds.height()); | 1704 EXPECT_EQ(display.bounds().height(), shelf_bounds.height()); |
1705 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1705 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1706 display = screen->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); | 1706 display = screen->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); |
1707 EXPECT_EQ(ShelfLayoutManager::kAutoHideSize, | 1707 EXPECT_EQ(ShelfLayoutManager::kAutoHideSize, |
1708 display.GetWorkAreaInsets().left()); | 1708 display.GetWorkAreaInsets().left()); |
1709 EXPECT_EQ(ShelfLayoutManager::kAutoHideSize, display.work_area().x()); | 1709 EXPECT_EQ(ShelfLayoutManager::kAutoHideSize, display.work_area().x()); |
1710 | 1710 |
1711 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 1711 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
1712 shelf->SetAlignment(wm::SHELF_ALIGNMENT_RIGHT); | 1712 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
1713 display = screen->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); | 1713 display = screen->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); |
1714 shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); | 1714 shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); |
1715 display = screen->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); | 1715 display = screen->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); |
1716 ASSERT_NE(-1, display.id()); | 1716 ASSERT_NE(-1, display.id()); |
1717 EXPECT_EQ(layout_manager->GetIdealBounds().width(), | 1717 EXPECT_EQ(layout_manager->GetIdealBounds().width(), |
1718 display.GetWorkAreaInsets().right()); | 1718 display.GetWorkAreaInsets().right()); |
1719 EXPECT_GE(shelf_bounds.width(), | 1719 EXPECT_GE(shelf_bounds.width(), |
1720 GetShelfWidget()->GetContentsView()->GetPreferredSize().width()); | 1720 GetShelfWidget()->GetContentsView()->GetPreferredSize().width()); |
1721 EXPECT_EQ(wm::SHELF_ALIGNMENT_RIGHT, GetSystemTray()->shelf_alignment()); | 1721 EXPECT_EQ(SHELF_ALIGNMENT_RIGHT, GetSystemTray()->shelf_alignment()); |
1722 status_bounds = gfx::Rect(status_area_widget->GetWindowBoundsInScreen()); | 1722 status_bounds = gfx::Rect(status_area_widget->GetWindowBoundsInScreen()); |
1723 EXPECT_GE(status_bounds.width(), | 1723 EXPECT_GE(status_bounds.width(), |
1724 status_area_widget->GetContentsView()->GetPreferredSize().width()); | 1724 status_area_widget->GetContentsView()->GetPreferredSize().width()); |
1725 EXPECT_EQ(layout_manager->GetIdealBounds().width(), | 1725 EXPECT_EQ(layout_manager->GetIdealBounds().width(), |
1726 display.GetWorkAreaInsets().right()); | 1726 display.GetWorkAreaInsets().right()); |
1727 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); | 1727 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); |
1728 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); | 1728 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); |
1729 EXPECT_EQ(0, display.GetWorkAreaInsets().left()); | 1729 EXPECT_EQ(0, display.GetWorkAreaInsets().left()); |
1730 EXPECT_EQ(display.work_area().right(), shelf_bounds.x()); | 1730 EXPECT_EQ(display.work_area().right(), shelf_bounds.x()); |
1731 EXPECT_EQ(display.bounds().y(), shelf_bounds.y()); | 1731 EXPECT_EQ(display.bounds().y(), shelf_bounds.y()); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1860 #endif | 1860 #endif |
1861 | 1861 |
1862 TEST_F(ShelfLayoutManagerTest, MAYBE_GestureDrag) { | 1862 TEST_F(ShelfLayoutManagerTest, MAYBE_GestureDrag) { |
1863 // Slop is an implementation detail of gesture recognition, and complicates | 1863 // Slop is an implementation detail of gesture recognition, and complicates |
1864 // these tests. Ignore it. | 1864 // these tests. Ignore it. |
1865 ui::GestureConfiguration::GetInstance() | 1865 ui::GestureConfiguration::GetInstance() |
1866 ->set_max_touch_move_in_pixels_for_click(0); | 1866 ->set_max_touch_move_in_pixels_for_click(0); |
1867 Shelf* shelf = GetShelf(); | 1867 Shelf* shelf = GetShelf(); |
1868 { | 1868 { |
1869 SCOPED_TRACE("BOTTOM"); | 1869 SCOPED_TRACE("BOTTOM"); |
1870 shelf->SetAlignment(wm::SHELF_ALIGNMENT_BOTTOM); | 1870 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM); |
1871 RunGestureDragTests(gfx::Vector2d(0, 120)); | 1871 RunGestureDragTests(gfx::Vector2d(0, 120)); |
1872 } | 1872 } |
1873 | 1873 |
1874 { | 1874 { |
1875 SCOPED_TRACE("LEFT"); | 1875 SCOPED_TRACE("LEFT"); |
1876 shelf->SetAlignment(wm::SHELF_ALIGNMENT_LEFT); | 1876 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); |
1877 RunGestureDragTests(gfx::Vector2d(-120, 0)); | 1877 RunGestureDragTests(gfx::Vector2d(-120, 0)); |
1878 } | 1878 } |
1879 | 1879 |
1880 { | 1880 { |
1881 SCOPED_TRACE("RIGHT"); | 1881 SCOPED_TRACE("RIGHT"); |
1882 shelf->SetAlignment(wm::SHELF_ALIGNMENT_RIGHT); | 1882 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
1883 RunGestureDragTests(gfx::Vector2d(120, 0)); | 1883 RunGestureDragTests(gfx::Vector2d(120, 0)); |
1884 } | 1884 } |
1885 } | 1885 } |
1886 | 1886 |
1887 TEST_F(ShelfLayoutManagerTest, WindowVisibilityDisablesAutoHide) { | 1887 TEST_F(ShelfLayoutManagerTest, WindowVisibilityDisablesAutoHide) { |
1888 if (!SupportsMultipleDisplays()) | 1888 if (!SupportsMultipleDisplays()) |
1889 return; | 1889 return; |
1890 | 1890 |
1891 UpdateDisplay("800x600,800x600"); | 1891 UpdateDisplay("800x600,800x600"); |
1892 Shelf* shelf = GetShelf(); | 1892 Shelf* shelf = GetShelf(); |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2152 EXPECT_TRUE(layout_manager->IsVisible()); | 2152 EXPECT_TRUE(layout_manager->IsVisible()); |
2153 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown()); | 2153 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown()); |
2154 } else { | 2154 } else { |
2155 EXPECT_FALSE(layout_manager->IsVisible()); | 2155 EXPECT_FALSE(layout_manager->IsVisible()); |
2156 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); | 2156 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); |
2157 } | 2157 } |
2158 } | 2158 } |
2159 } | 2159 } |
2160 | 2160 |
2161 TEST_F(ShelfLayoutManagerTest, ShelfBackgroundColor) { | 2161 TEST_F(ShelfLayoutManagerTest, ShelfBackgroundColor) { |
2162 EXPECT_EQ(wm::SHELF_BACKGROUND_DEFAULT, | 2162 EXPECT_EQ(SHELF_BACKGROUND_DEFAULT, GetShelfWidget()->GetBackgroundType()); |
2163 GetShelfWidget()->GetBackgroundType()); | |
2164 | 2163 |
2165 std::unique_ptr<aura::Window> w1(CreateTestWindow()); | 2164 std::unique_ptr<aura::Window> w1(CreateTestWindow()); |
2166 w1->Show(); | 2165 w1->Show(); |
2167 wm::ActivateWindow(w1.get()); | 2166 wm::ActivateWindow(w1.get()); |
2168 EXPECT_EQ(wm::SHELF_BACKGROUND_DEFAULT, | 2167 EXPECT_EQ(SHELF_BACKGROUND_DEFAULT, GetShelfWidget()->GetBackgroundType()); |
2169 GetShelfWidget()->GetBackgroundType()); | |
2170 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 2168 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
2171 EXPECT_EQ(wm::SHELF_BACKGROUND_MAXIMIZED, | 2169 EXPECT_EQ(SHELF_BACKGROUND_MAXIMIZED, GetShelfWidget()->GetBackgroundType()); |
2172 GetShelfWidget()->GetBackgroundType()); | |
2173 | 2170 |
2174 std::unique_ptr<aura::Window> w2(CreateTestWindow()); | 2171 std::unique_ptr<aura::Window> w2(CreateTestWindow()); |
2175 w2->Show(); | 2172 w2->Show(); |
2176 wm::ActivateWindow(w2.get()); | 2173 wm::ActivateWindow(w2.get()); |
2177 // Overlaps with shelf. | 2174 // Overlaps with shelf. |
2178 w2->SetBounds(GetShelfLayoutManager()->GetIdealBounds()); | 2175 w2->SetBounds(GetShelfLayoutManager()->GetIdealBounds()); |
2179 | 2176 |
2180 // Still background is 'maximized'. | 2177 // Still background is 'maximized'. |
2181 EXPECT_EQ(wm::SHELF_BACKGROUND_MAXIMIZED, | 2178 EXPECT_EQ(SHELF_BACKGROUND_MAXIMIZED, GetShelfWidget()->GetBackgroundType()); |
2182 GetShelfWidget()->GetBackgroundType()); | |
2183 | 2179 |
2184 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); | 2180 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); |
2185 EXPECT_EQ(wm::SHELF_BACKGROUND_OVERLAP, | 2181 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); |
2186 GetShelfWidget()->GetBackgroundType()); | |
2187 w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); | 2182 w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); |
2188 EXPECT_EQ(wm::SHELF_BACKGROUND_DEFAULT, | 2183 EXPECT_EQ(SHELF_BACKGROUND_DEFAULT, GetShelfWidget()->GetBackgroundType()); |
2189 GetShelfWidget()->GetBackgroundType()); | |
2190 | 2184 |
2191 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 2185 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
2192 EXPECT_EQ(wm::SHELF_BACKGROUND_MAXIMIZED, | 2186 EXPECT_EQ(SHELF_BACKGROUND_MAXIMIZED, GetShelfWidget()->GetBackgroundType()); |
2193 GetShelfWidget()->GetBackgroundType()); | |
2194 w1.reset(); | 2187 w1.reset(); |
2195 EXPECT_EQ(wm::SHELF_BACKGROUND_DEFAULT, | 2188 EXPECT_EQ(SHELF_BACKGROUND_DEFAULT, GetShelfWidget()->GetBackgroundType()); |
2196 GetShelfWidget()->GetBackgroundType()); | |
2197 } | 2189 } |
2198 | 2190 |
2199 // Verify that the shelf doesn't have the opaque background if it's auto-hide | 2191 // Verify that the shelf doesn't have the opaque background if it's auto-hide |
2200 // status. | 2192 // status. |
2201 TEST_F(ShelfLayoutManagerTest, ShelfBackgroundColorAutoHide) { | 2193 TEST_F(ShelfLayoutManagerTest, ShelfBackgroundColorAutoHide) { |
2202 EXPECT_EQ(wm::SHELF_BACKGROUND_DEFAULT, | 2194 EXPECT_EQ(SHELF_BACKGROUND_DEFAULT, GetShelfWidget()->GetBackgroundType()); |
2203 GetShelfWidget()->GetBackgroundType()); | |
2204 | 2195 |
2205 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 2196 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
2206 std::unique_ptr<aura::Window> w1(CreateTestWindow()); | 2197 std::unique_ptr<aura::Window> w1(CreateTestWindow()); |
2207 w1->Show(); | 2198 w1->Show(); |
2208 wm::ActivateWindow(w1.get()); | 2199 wm::ActivateWindow(w1.get()); |
2209 EXPECT_EQ(wm::SHELF_BACKGROUND_OVERLAP, | 2200 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); |
2210 GetShelfWidget()->GetBackgroundType()); | |
2211 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 2201 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
2212 EXPECT_EQ(wm::SHELF_BACKGROUND_OVERLAP, | 2202 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); |
2213 GetShelfWidget()->GetBackgroundType()); | |
2214 } | 2203 } |
2215 | 2204 |
2216 #if defined(OS_CHROMEOS) | 2205 #if defined(OS_CHROMEOS) |
2217 #define MAYBE_StatusAreaHitBoxCoversEdge StatusAreaHitBoxCoversEdge | 2206 #define MAYBE_StatusAreaHitBoxCoversEdge StatusAreaHitBoxCoversEdge |
2218 #else | 2207 #else |
2219 #define MAYBE_StatusAreaHitBoxCoversEdge DISABLED_StatusAreaHitBoxCoversEdge | 2208 #define MAYBE_StatusAreaHitBoxCoversEdge DISABLED_StatusAreaHitBoxCoversEdge |
2220 #endif | 2209 #endif |
2221 | 2210 |
2222 // Verify the hit bounds of the status area extend to the edge of the shelf. | 2211 // Verify the hit bounds of the status area extend to the edge of the shelf. |
2223 TEST_F(ShelfLayoutManagerTest, MAYBE_StatusAreaHitBoxCoversEdge) { | 2212 TEST_F(ShelfLayoutManagerTest, MAYBE_StatusAreaHitBoxCoversEdge) { |
2224 UpdateDisplay("400x400"); | 2213 UpdateDisplay("400x400"); |
2225 Shelf* shelf = GetShelf(); | 2214 Shelf* shelf = GetShelf(); |
2226 StatusAreaWidget* status_area_widget = Shell::GetPrimaryRootWindowController() | 2215 StatusAreaWidget* status_area_widget = Shell::GetPrimaryRootWindowController() |
2227 ->shelf_widget() | 2216 ->shelf_widget() |
2228 ->status_area_widget(); | 2217 ->status_area_widget(); |
2229 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 2218 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
2230 generator.MoveMouseTo(399,399); | 2219 generator.MoveMouseTo(399,399); |
2231 | 2220 |
2232 // Test bottom right pixel for bottom alignment. | 2221 // Test bottom right pixel for bottom alignment. |
2233 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); | 2222 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); |
2234 generator.ClickLeftButton(); | 2223 generator.ClickLeftButton(); |
2235 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown()); | 2224 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown()); |
2236 generator.ClickLeftButton(); | 2225 generator.ClickLeftButton(); |
2237 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); | 2226 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); |
2238 | 2227 |
2239 // Test bottom right pixel for right alignment. | 2228 // Test bottom right pixel for right alignment. |
2240 shelf->SetAlignment(wm::SHELF_ALIGNMENT_RIGHT); | 2229 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
2241 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); | 2230 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); |
2242 generator.ClickLeftButton(); | 2231 generator.ClickLeftButton(); |
2243 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown()); | 2232 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown()); |
2244 generator.ClickLeftButton(); | 2233 generator.ClickLeftButton(); |
2245 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); | 2234 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); |
2246 | 2235 |
2247 // Test bottom left pixel for left alignment. | 2236 // Test bottom left pixel for left alignment. |
2248 generator.MoveMouseTo(0, 399); | 2237 generator.MoveMouseTo(0, 399); |
2249 shelf->SetAlignment(wm::SHELF_ALIGNMENT_LEFT); | 2238 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); |
2250 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); | 2239 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); |
2251 generator.ClickLeftButton(); | 2240 generator.ClickLeftButton(); |
2252 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown()); | 2241 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown()); |
2253 generator.ClickLeftButton(); | 2242 generator.ClickLeftButton(); |
2254 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); | 2243 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown()); |
2255 } | 2244 } |
2256 | 2245 |
2257 // Tests that when the auto-hide behaviour is changed during an animation the | 2246 // Tests that when the auto-hide behaviour is changed during an animation the |
2258 // target bounds are updated to reflect the new state. | 2247 // target bounds are updated to reflect the new state. |
2259 TEST_F(ShelfLayoutManagerTest, | 2248 TEST_F(ShelfLayoutManagerTest, |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2308 ->shelf_widget() | 2297 ->shelf_widget() |
2309 ->status_area_widget(); | 2298 ->status_area_widget(); |
2310 EXPECT_TRUE(status_area_widget->IsVisible()); | 2299 EXPECT_TRUE(status_area_widget->IsVisible()); |
2311 // Shelf should be in the first display's area. | 2300 // Shelf should be in the first display's area. |
2312 gfx::Rect status_area_bounds(status_area_widget->GetWindowBoundsInScreen()); | 2301 gfx::Rect status_area_bounds(status_area_widget->GetWindowBoundsInScreen()); |
2313 EXPECT_TRUE(gfx::Rect(0, 0, 500, 400).Contains(status_area_bounds)); | 2302 EXPECT_TRUE(gfx::Rect(0, 0, 500, 400).Contains(status_area_bounds)); |
2314 EXPECT_EQ(gfx::Point(500, 400), status_area_bounds.bottom_right()); | 2303 EXPECT_EQ(gfx::Point(500, 400), status_area_bounds.bottom_right()); |
2315 } | 2304 } |
2316 | 2305 |
2317 } // namespace ash | 2306 } // namespace ash |
OLD | NEW |