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