Index: ash/shelf/shelf_layout_manager_unittest.cc |
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc |
index cd63f301e6dd6023a316c3c057426167efc844cc..e7a32059ae8ecdf72af1161c623b137a34f630d0 100644 |
--- a/ash/shelf/shelf_layout_manager_unittest.cc |
+++ b/ash/shelf/shelf_layout_manager_unittest.cc |
@@ -25,6 +25,7 @@ |
#include "ash/root_window_controller.h" |
#include "ash/shell.h" |
#include "ash/test/ash_test_base.h" |
+#include "ash/test/test_app_list_view_presenter_impl.h" |
#include "ash/test/test_system_tray_item.h" |
#include "ash/wm/window_state_aura.h" |
#include "ash/wm/window_util.h" |
@@ -947,62 +948,63 @@ TEST_F(ShelfLayoutManagerTest, VisibleWhenStatusOrShelfFocused) { |
EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); |
} |
-// Makes sure shelf will be visible when app list opens as shelf is in |
-// SHELF_VISIBLE state,and toggling app list won't change shelf |
-// visibility state. |
+// Ensure a SHELF_VISIBLE shelf stays visible when the app list is shown. |
TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfVisibleState) { |
- WmShell* shell = WmShell::Get(); |
WmShelf* shelf = GetPrimaryShelf(); |
- ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
- layout_manager->LayoutShelf(); |
shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
- // Create a normal unmaximized window, shelf should be visible. |
+ // The tested behavior relies on the app list presenter implementation. |
+ test::TestAppListViewPresenterImpl app_list_presenter_impl; |
+ |
+ // Create a normal unmaximized window; the shelf should be visible. |
aura::Window* window = CreateTestWindow(); |
window->SetBounds(gfx::Rect(0, 0, 100, 100)); |
window->Show(); |
- EXPECT_FALSE(shell->GetAppListTargetVisibility()); |
+ EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
- // Show app list and the shelf stays visible. |
- shell->ShowAppList(); |
- EXPECT_TRUE(shell->GetAppListTargetVisibility()); |
+ // Show the app list and the shelf stays visible. |
+ app_list_presenter_impl.Show(display_manager()->first_display_id()); |
+ EXPECT_TRUE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
- // Hide app list and the shelf stays visible. |
- shell->DismissAppList(); |
- EXPECT_FALSE(shell->GetAppListTargetVisibility()); |
+ // Hide the app list and the shelf stays visible. |
+ app_list_presenter_impl.Dismiss(); |
+ EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
} |
-// Makes sure shelf will be shown with SHELF_AUTO_HIDE_SHOWN state |
-// when app list opens as shelf is in SHELF_AUTO_HIDE state, and |
-// toggling app list won't change shelf visibility state. |
+// Ensure a SHELF_AUTO_HIDE shelf is shown temporarily (SHELF_AUTO_HIDE_SHOWN) |
+// when the app list is shown, but the visibility state doesn't change. |
TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfAutoHideState) { |
- WmShell* shell = WmShell::Get(); |
WmShelf* shelf = GetPrimaryShelf(); |
- ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
- layout_manager->LayoutShelf(); |
shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
- EXPECT_FALSE(shell->GetAppListTargetVisibility()); |
+ // The tested behavior relies on the app list presenter implementation. |
+ test::TestAppListViewPresenterImpl app_list_presenter_impl; |
+ |
+ // Create a normal unmaximized window; the shelf should be hidden. |
+ aura::Window* window = CreateTestWindow(); |
+ window->SetBounds(gfx::Rect(0, 0, 100, 100)); |
+ window->Show(); |
+ EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
- EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); |
+ EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
- // Show app list. |
- shell->ShowAppList(); |
+ // Show the app list and the shelf should be temporarily visible. |
+ app_list_presenter_impl.Show(display_manager()->first_display_id()); |
// The shelf's auto hide state won't be changed until the timer fires, so |
// force it to update now. |
- layout_manager->UpdateVisibilityState(); |
- EXPECT_TRUE(shell->GetAppListTargetVisibility()); |
+ GetShelfLayoutManager()->UpdateVisibilityState(); |
+ EXPECT_TRUE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); |
- // Hide app list. |
- shell->DismissAppList(); |
- EXPECT_FALSE(shell->GetAppListTargetVisibility()); |
+ // Hide the app list and the shelf should be hidden again. |
+ app_list_presenter_impl.Dismiss(); |
+ EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
- EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); |
+ EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
} |
// Makes sure that when we have dual displays, with one or both shelves are set |
@@ -1043,65 +1045,63 @@ TEST_F(ShelfLayoutManagerTest, DualDisplayOpenAppListWithShelfAutoHideState) { |
EXPECT_EQ(shelf_2->GetWindow()->GetRootWindow(), |
WmWindowAura::Get(window_2)->GetRootWindow()); |
- // Activate one window in one display and manually trigger the update of shelf |
- // visibility. |
+ // Activate one window in one display. |
wm::ActivateWindow(window_1); |
- Shell::GetInstance()->UpdateShelfVisibility(); |
- EXPECT_FALSE(WmShell::Get()->GetAppListTargetVisibility()); |
+ // The tested behavior relies on the app list presenter implementation. |
+ test::TestAppListViewPresenterImpl app_list_presenter_impl; |
+ |
+ Shell::GetInstance()->UpdateShelfVisibility(); |
+ EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); |
EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); |
EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); |
- // Show app list. |
- WmShell::Get()->ShowAppList(); |
+ // Show the app list; only the shelf on the same display should be shown. |
+ app_list_presenter_impl.Show(display_manager()->first_display_id()); |
Shell::GetInstance()->UpdateShelfVisibility(); |
- |
- // Only the shelf in the active display should be shown, the other is hidden. |
- EXPECT_TRUE(WmShell::Get()->GetAppListTargetVisibility()); |
+ EXPECT_TRUE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); |
EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf_1->GetAutoHideState()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); |
EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); |
- // Hide app list, both shelves should be hidden. |
- WmShell::Get()->DismissAppList(); |
- EXPECT_FALSE(WmShell::Get()->GetAppListTargetVisibility()); |
+ // Hide the app list, both shelves should be hidden. |
+ app_list_presenter_impl.Dismiss(); |
+ Shell::GetInstance()->UpdateShelfVisibility(); |
+ EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); |
EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); |
EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); |
EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); |
} |
-// Makes sure the shelf will be hidden when we have a fullscreen window, and it |
-// will unhide when we open the app list. |
+// Ensure a SHELF_HIDDEN shelf (for a fullscreen window) is shown temporarily |
+// when the app list is shown, and hidden again when the app list is dismissed. |
TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfHiddenState) { |
- WmShell* shell = WmShell::Get(); |
WmShelf* shelf = GetPrimaryShelf(); |
- ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
- // For shelf to be visible, app list is not open in initial state. |
- layout_manager->LayoutShelf(); |
- // Create a window and make it full screen. |
+ // The tested behavior relies on the app list presenter implementation. |
+ test::TestAppListViewPresenterImpl app_list_presenter_impl; |
+ |
+ // Create a window and make it full screen; the shelf should be hidden. |
aura::Window* window = CreateTestWindow(); |
window->SetBounds(gfx::Rect(0, 0, 100, 100)); |
window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); |
window->Show(); |
wm::ActivateWindow(window); |
- |
- // App list and shelf is not shown. |
- EXPECT_FALSE(shell->GetAppListTargetVisibility()); |
+ EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState()); |
- // Show app list. |
- shell->ShowAppList(); |
- EXPECT_TRUE(shell->GetAppListTargetVisibility()); |
+ // Show the app list and the shelf should be temporarily visible. |
+ app_list_presenter_impl.Show(display_manager()->first_display_id()); |
+ EXPECT_TRUE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
- // Hide app list. |
- shell->DismissAppList(); |
- EXPECT_FALSE(shell->GetAppListTargetVisibility()); |
+ // Hide the app list and the shelf should be hidden again. |
+ app_list_presenter_impl.Dismiss(); |
+ EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState()); |
} |