| 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/display/display_controller.h" | 10 #include "ash/display/display_controller.h" |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 | 355 |
| 356 // Create a simple widget attached to the current context (will | 356 // Create a simple widget attached to the current context (will |
| 357 // delete on TearDown). | 357 // delete on TearDown). |
| 358 views::Widget* CreateTestWidget() { | 358 views::Widget* CreateTestWidget() { |
| 359 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); | 359 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
| 360 params.bounds = gfx::Rect(0, 0, 200, 200); | 360 params.bounds = gfx::Rect(0, 0, 200, 200); |
| 361 params.context = CurrentContext(); | 361 params.context = CurrentContext(); |
| 362 return CreateTestWidgetWithParams(params); | 362 return CreateTestWidgetWithParams(params); |
| 363 } | 363 } |
| 364 | 364 |
| 365 // Overridden from AshTestBase: | |
| 366 void SetUp() override { | |
| 367 base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
| 368 ash::switches::kAshEnableTrayDragging); | |
| 369 test::AshTestBase::SetUp(); | |
| 370 } | |
| 371 | |
| 372 void RunGestureDragTests(gfx::Vector2d); | 365 void RunGestureDragTests(gfx::Vector2d); |
| 373 | 366 |
| 374 // Turn on the lock screen. | 367 // Turn on the lock screen. |
| 375 void LockScreen() { | 368 void LockScreen() { |
| 376 Shell::GetInstance()->session_state_delegate()->LockScreen(); | 369 Shell::GetInstance()->session_state_delegate()->LockScreen(); |
| 377 // The test session state delegate does not fire the lock state change. | 370 // The test session state delegate does not fire the lock state change. |
| 378 Shell::GetInstance()->OnLockStateChanged(true); | 371 Shell::GetInstance()->OnLockStateChanged(true); |
| 379 } | 372 } |
| 380 | 373 |
| 381 // Turn off the lock screen. | 374 // Turn off the lock screen. |
| (...skipping 1592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1974 generator.GestureScrollSequence(start, end, | 1967 generator.GestureScrollSequence(start, end, |
| 1975 base::TimeDelta::FromMilliseconds(10), 1); | 1968 base::TimeDelta::FromMilliseconds(10), 1); |
| 1976 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); | 1969 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); |
| 1977 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); | 1970 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); |
| 1978 ShelfAnimationWaiter waiter2(auto_hidden_bounds); | 1971 ShelfAnimationWaiter waiter2(auto_hidden_bounds); |
| 1979 waiter2.WaitTillDoneAnimating(); | 1972 waiter2.WaitTillDoneAnimating(); |
| 1980 EXPECT_TRUE(waiter2.WasValidAnimation()); | 1973 EXPECT_TRUE(waiter2.WasValidAnimation()); |
| 1981 } | 1974 } |
| 1982 } | 1975 } |
| 1983 | 1976 |
| 1984 TEST_F(ShelfLayoutManagerTest, GestureRevealsTrayBubble) { | |
| 1985 if (!SupportsHostWindowResize()) | |
| 1986 return; | |
| 1987 | |
| 1988 ShelfLayoutManager* shelf = GetShelfLayoutManager(); | |
| 1989 shelf->LayoutShelf(); | |
| 1990 | |
| 1991 // Create a visible window so auto-hide behavior is enforced. | |
| 1992 CreateTestWidget(); | |
| 1993 | |
| 1994 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | |
| 1995 SystemTray* tray = GetSystemTray(); | |
| 1996 | |
| 1997 // First, make sure the shelf is visible. | |
| 1998 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | |
| 1999 EXPECT_FALSE(tray->HasSystemBubble()); | |
| 2000 | |
| 2001 // Now, drag up on the tray to show the bubble. | |
| 2002 gfx::Point start = GetShelfWidget()->status_area_widget()-> | |
| 2003 GetWindowBoundsInScreen().CenterPoint(); | |
| 2004 gfx::Point end(start.x(), start.y() - 100); | |
| 2005 generator.GestureScrollSequence(start, end, | |
| 2006 base::TimeDelta::FromMilliseconds(10), 1); | |
| 2007 EXPECT_TRUE(tray->HasSystemBubble()); | |
| 2008 tray->CloseSystemBubble(); | |
| 2009 RunAllPendingInMessageLoop(); | |
| 2010 EXPECT_FALSE(tray->HasSystemBubble()); | |
| 2011 | |
| 2012 // Drag again, but only a small amount, and slowly. The bubble should not be | |
| 2013 // visible. | |
| 2014 end.set_y(start.y() - 30); | |
| 2015 generator.GestureScrollSequence(start, end, | |
| 2016 base::TimeDelta::FromMilliseconds(500), 100); | |
| 2017 EXPECT_FALSE(tray->HasSystemBubble()); | |
| 2018 | |
| 2019 // Now, hide the shelf. | |
| 2020 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | |
| 2021 | |
| 2022 // Start a drag from the bezel, and drag up to show both the shelf and the | |
| 2023 // tray bubble. | |
| 2024 start.set_y(start.y() + 100); | |
| 2025 end.set_y(start.y() - 400); | |
| 2026 generator.GestureScrollSequence(start, end, | |
| 2027 base::TimeDelta::FromMilliseconds(10), 1); | |
| 2028 EXPECT_EQ(SHELF_VISIBLE, shelf->visibility_state()); | |
| 2029 EXPECT_TRUE(tray->HasSystemBubble()); | |
| 2030 } | |
| 2031 | |
| 2032 TEST_F(ShelfLayoutManagerTest, ShelfFlickerOnTrayActivation) { | 1977 TEST_F(ShelfLayoutManagerTest, ShelfFlickerOnTrayActivation) { |
| 2033 ShelfLayoutManager* shelf = GetShelfLayoutManager(); | 1978 ShelfLayoutManager* shelf = GetShelfLayoutManager(); |
| 2034 | 1979 |
| 2035 // Create a visible window so auto-hide behavior is enforced. | 1980 // Create a visible window so auto-hide behavior is enforced. |
| 2036 CreateTestWidget(); | 1981 CreateTestWidget(); |
| 2037 | 1982 |
| 2038 // Turn on auto-hide for the shelf. | 1983 // Turn on auto-hide for the shelf. |
| 2039 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1984 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
| 2040 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); | 1985 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); |
| 2041 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); | 1986 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2270 shelf_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); | 2215 shelf_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); |
| 2271 gfx::Rect hide_target_bounds = status_window->GetTargetBounds(); | 2216 gfx::Rect hide_target_bounds = status_window->GetTargetBounds(); |
| 2272 EXPECT_GT(hide_target_bounds.y(), initial_bounds.y()); | 2217 EXPECT_GT(hide_target_bounds.y(), initial_bounds.y()); |
| 2273 | 2218 |
| 2274 shelf_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 2219 shelf_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
| 2275 gfx::Rect reshow_target_bounds = status_window->GetTargetBounds(); | 2220 gfx::Rect reshow_target_bounds = status_window->GetTargetBounds(); |
| 2276 EXPECT_EQ(initial_bounds, reshow_target_bounds); | 2221 EXPECT_EQ(initial_bounds, reshow_target_bounds); |
| 2277 } | 2222 } |
| 2278 | 2223 |
| 2279 } // namespace ash | 2224 } // namespace ash |
| OLD | NEW |