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_view.h" | 5 #include "ash/common/shelf/shelf_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "ash/common/shelf/app_list_button.h" | 12 #include "ash/common/shelf/app_list_button.h" |
13 #include "ash/common/shelf/overflow_bubble.h" | 13 #include "ash/common/shelf/overflow_bubble.h" |
14 #include "ash/common/shelf/overflow_bubble_view.h" | 14 #include "ash/common/shelf/overflow_bubble_view.h" |
15 #include "ash/common/shelf/shelf_button.h" | 15 #include "ash/common/shelf/shelf_button.h" |
16 #include "ash/common/shelf/shelf_constants.h" | 16 #include "ash/common/shelf/shelf_constants.h" |
| 17 #include "ash/common/shelf/shelf_icon_observer.h" |
17 #include "ash/common/shelf/shelf_menu_model.h" | 18 #include "ash/common/shelf/shelf_menu_model.h" |
18 #include "ash/common/shelf/shelf_model.h" | 19 #include "ash/common/shelf/shelf_model.h" |
19 #include "ash/common/shelf/shelf_tooltip_manager.h" | 20 #include "ash/common/shelf/shelf_tooltip_manager.h" |
| 21 #include "ash/common/shelf/wm_shelf.h" |
20 #include "ash/common/shell_window_ids.h" | 22 #include "ash/common/shell_window_ids.h" |
21 #include "ash/common/test/material_design_controller_test_api.h" | 23 #include "ash/common/test/material_design_controller_test_api.h" |
22 #include "ash/common/wm_shell.h" | 24 #include "ash/common/wm_shell.h" |
23 #include "ash/root_window_controller.h" | |
24 #include "ash/shelf/shelf.h" | |
25 #include "ash/shelf/shelf_icon_observer.h" | |
26 #include "ash/shelf/shelf_widget.h" | 25 #include "ash/shelf/shelf_widget.h" |
27 #include "ash/shell.h" | 26 #include "ash/shell.h" |
28 #include "ash/test/ash_test_base.h" | 27 #include "ash/test/ash_test_base.h" |
29 #include "ash/test/ash_test_helper.h" | 28 #include "ash/test/ash_test_helper.h" |
30 #include "ash/test/overflow_bubble_view_test_api.h" | 29 #include "ash/test/overflow_bubble_view_test_api.h" |
31 #include "ash/test/shelf_test_api.h" | 30 #include "ash/test/shelf_test_api.h" |
32 #include "ash/test/shelf_view_test_api.h" | 31 #include "ash/test/shelf_view_test_api.h" |
33 #include "ash/test/test_shelf_delegate.h" | 32 #include "ash/test/test_shelf_delegate.h" |
34 #include "ash/test/test_shelf_item_delegate.h" | 33 #include "ash/test/test_shelf_item_delegate.h" |
35 #include "ash/test/test_shell_delegate.h" | 34 #include "ash/test/test_shell_delegate.h" |
36 #include "ash/test/test_system_tray_delegate.h" | 35 #include "ash/test/test_system_tray_delegate.h" |
37 #include "base/compiler_specific.h" | |
38 #include "base/i18n/rtl.h" | 36 #include "base/i18n/rtl.h" |
| 37 #include "base/macros.h" |
39 #include "base/memory/ptr_util.h" | 38 #include "base/memory/ptr_util.h" |
40 #include "base/run_loop.h" | 39 #include "base/run_loop.h" |
41 #include "base/strings/string_number_conversions.h" | 40 #include "base/strings/string_number_conversions.h" |
42 #include "base/strings/utf_string_conversions.h" | 41 #include "base/strings/utf_string_conversions.h" |
43 #include "base/test/histogram_tester.h" | 42 #include "base/test/histogram_tester.h" |
44 #include "base/test/user_action_tester.h" | 43 #include "base/test/user_action_tester.h" |
45 #include "base/threading/thread_task_runner_handle.h" | 44 #include "base/threading/thread_task_runner_handle.h" |
46 #include "base/time/time.h" | 45 #include "base/time/time.h" |
47 #include "testing/gmock/include/gmock/gmock.h" | 46 #include "testing/gmock/include/gmock/gmock.h" |
48 #include "ui/app_list/presenter/app_list_presenter.h" | 47 #include "ui/app_list/presenter/app_list_presenter.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 EXPECT_TRUE(observer()->change_notified()); | 185 EXPECT_TRUE(observer()->change_notified()); |
187 observer()->Reset(); | 186 observer()->Reset(); |
188 | 187 |
189 widget->Show(); | 188 widget->Show(); |
190 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); | 189 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); |
191 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); | 190 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); |
192 EXPECT_TRUE(observer()->change_notified()); | 191 EXPECT_TRUE(observer()->change_notified()); |
193 observer()->Reset(); | 192 observer()->Reset(); |
194 } | 193 } |
195 | 194 |
196 // Sometimes fails on trybots on win7_aura. http://crbug.com/177135 | |
197 #if defined(OS_WIN) | |
198 #define MAYBE_AddRemoveWithMultipleDisplays \ | |
199 DISABLED_AddRemoveWithMultipleDisplays | |
200 #else | |
201 #define MAYBE_AddRemoveWithMultipleDisplays AddRemoveWithMultipleDisplays | |
202 #endif | |
203 // Make sure creating/deleting an window on one displays notifies a | 195 // Make sure creating/deleting an window on one displays notifies a |
204 // shelf on external display as well as one on primary. | 196 // shelf on external display as well as one on primary. |
205 TEST_F(ShelfViewIconObserverTest, MAYBE_AddRemoveWithMultipleDisplays) { | 197 TEST_F(ShelfViewIconObserverTest, AddRemoveWithMultipleDisplays) { |
| 198 if (!SupportsMultipleDisplays()) |
| 199 return; |
| 200 |
206 UpdateDisplay("400x400,400x400"); | 201 UpdateDisplay("400x400,400x400"); |
207 TestShelfIconObserver second_observer(ShelfForSecondaryDisplay()); | 202 TestShelfIconObserver second_observer(ShelfForSecondaryDisplay()); |
208 | 203 |
209 TestShelfDelegate* shelf_delegate = TestShelfDelegate::instance(); | 204 TestShelfDelegate* shelf_delegate = TestShelfDelegate::instance(); |
210 ASSERT_TRUE(shelf_delegate); | 205 ASSERT_TRUE(shelf_delegate); |
211 | 206 |
212 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); | 207 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
213 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 208 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
214 params.bounds = gfx::Rect(0, 0, 200, 200); | 209 params.bounds = gfx::Rect(0, 0, 200, 200); |
215 params.context = CurrentContext(); | 210 params.context = CurrentContext(); |
(...skipping 10 matching lines...) Expand all Loading... |
226 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); | 221 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); |
227 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); | 222 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); |
228 EXPECT_TRUE(observer()->change_notified()); | 223 EXPECT_TRUE(observer()->change_notified()); |
229 EXPECT_TRUE(second_observer.change_notified()); | 224 EXPECT_TRUE(second_observer.change_notified()); |
230 | 225 |
231 observer()->Reset(); | 226 observer()->Reset(); |
232 second_observer.Reset(); | 227 second_observer.Reset(); |
233 } | 228 } |
234 | 229 |
235 TEST_F(ShelfViewIconObserverTest, BoundsChanged) { | 230 TEST_F(ShelfViewIconObserverTest, BoundsChanged) { |
236 ShelfWidget* widget = Shell::GetPrimaryRootWindowController()->shelf_widget(); | 231 views::Widget* widget = |
| 232 GetPrimaryShelf()->GetShelfViewForTesting()->GetWidget(); |
237 gfx::Rect shelf_bounds = widget->GetWindowBoundsInScreen(); | 233 gfx::Rect shelf_bounds = widget->GetWindowBoundsInScreen(); |
238 shelf_bounds.set_width(shelf_bounds.width() / 2); | 234 shelf_bounds.set_width(shelf_bounds.width() / 2); |
239 ASSERT_GT(shelf_bounds.width(), 0); | 235 ASSERT_GT(shelf_bounds.width(), 0); |
240 widget->SetBounds(shelf_bounds); | 236 widget->SetBounds(shelf_bounds); |
241 // No animation happens for ShelfView bounds change. | 237 // No animation happens for ShelfView bounds change. |
242 EXPECT_TRUE(observer()->change_notified()); | 238 EXPECT_TRUE(observer()->change_notified()); |
243 observer()->Reset(); | 239 observer()->Reset(); |
244 } | 240 } |
245 | 241 |
246 //////////////////////////////////////////////////////////////////////////////// | 242 //////////////////////////////////////////////////////////////////////////////// |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 GetItemId(test_api_for_overflow.GetFirstVisibleIndex()); | 606 GetItemId(test_api_for_overflow.GetFirstVisibleIndex()); |
611 int second_last_visible_item_id_in_overflow = | 607 int second_last_visible_item_id_in_overflow = |
612 GetItemId(test_api_for_overflow.GetLastVisibleIndex() - 1); | 608 GetItemId(test_api_for_overflow.GetLastVisibleIndex() - 1); |
613 | 609 |
614 int drag_item_index = test_api_for_overflow.GetLastVisibleIndex(); | 610 int drag_item_index = test_api_for_overflow.GetLastVisibleIndex(); |
615 ShelfID drag_item_id = GetItemId(drag_item_index); | 611 ShelfID drag_item_id = GetItemId(drag_item_index); |
616 ShelfButton* drag_button = test_api_for_overflow.GetButton(drag_item_index); | 612 ShelfButton* drag_button = test_api_for_overflow.GetButton(drag_item_index); |
617 gfx::Point center_point_of_drag_item = | 613 gfx::Point center_point_of_drag_item = |
618 drag_button->GetBoundsInScreen().CenterPoint(); | 614 drag_button->GetBoundsInScreen().CenterPoint(); |
619 | 615 |
620 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow(), | 616 ui::test::EventGenerator& generator = GetEventGenerator(); |
621 center_point_of_drag_item); | 617 generator.set_current_location(center_point_of_drag_item); |
622 // Rip an item off to OverflowBubble. | 618 // Rip an item off to OverflowBubble. |
623 generator.PressLeftButton(); | 619 generator.PressLeftButton(); |
624 gfx::Point rip_off_point(center_point_of_drag_item.x(), 0); | 620 gfx::Point rip_off_point(center_point_of_drag_item.x(), 0); |
625 generator.MoveMouseTo(rip_off_point); | 621 generator.MoveMouseTo(rip_off_point); |
626 test_api_for_overflow.RunMessageLoopUntilAnimationsDone(); | 622 test_api_for_overflow.RunMessageLoopUntilAnimationsDone(); |
627 ASSERT_TRUE(test_api_for_overflow.IsRippedOffFromShelf()); | 623 ASSERT_TRUE(test_api_for_overflow.IsRippedOffFromShelf()); |
628 ASSERT_FALSE(test_api_for_overflow.DraggedItemFromOverflowToShelf()); | 624 ASSERT_FALSE(test_api_for_overflow.DraggedItemFromOverflowToShelf()); |
629 | 625 |
630 // Move a dragged item into Shelf at |drop_index|. | 626 // Move a dragged item into Shelf at |drop_index|. |
631 int drop_index = 1; | 627 int drop_index = 1; |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
970 EXPECT_TRUE(test_api_->IsOverflowButtonVisible()); | 966 EXPECT_TRUE(test_api_->IsOverflowButtonVisible()); |
971 | 967 |
972 // Test that any two successive visible icons never overlap in all shelf | 968 // Test that any two successive visible icons never overlap in all shelf |
973 // alignment types. | 969 // alignment types. |
974 const ShelfAlignment kAlignments[] = { | 970 const ShelfAlignment kAlignments[] = { |
975 SHELF_ALIGNMENT_LEFT, SHELF_ALIGNMENT_RIGHT, SHELF_ALIGNMENT_BOTTOM, | 971 SHELF_ALIGNMENT_LEFT, SHELF_ALIGNMENT_RIGHT, SHELF_ALIGNMENT_BOTTOM, |
976 SHELF_ALIGNMENT_BOTTOM_LOCKED, | 972 SHELF_ALIGNMENT_BOTTOM_LOCKED, |
977 }; | 973 }; |
978 | 974 |
979 for (ShelfAlignment alignment : kAlignments) { | 975 for (ShelfAlignment alignment : kAlignments) { |
980 shelf_view_->shelf()->SetAlignment(alignment); | 976 shelf_view_->wm_shelf()->SetAlignment(alignment); |
981 // For every 2 successive visible icons, expect that their bounds don't | 977 // For every 2 successive visible icons, expect that their bounds don't |
982 // intersect. | 978 // intersect. |
983 for (int i = 1; i < test_api_->GetButtonCount() - 1; ++i) { | 979 for (int i = 1; i < test_api_->GetButtonCount() - 1; ++i) { |
984 if (!(test_api_->GetButton(i)->visible() && | 980 if (!(test_api_->GetButton(i)->visible() && |
985 test_api_->GetButton(i + 1)->visible())) { | 981 test_api_->GetButton(i + 1)->visible())) { |
986 continue; | 982 continue; |
987 } | 983 } |
988 | 984 |
989 const gfx::Rect& bounds1 = test_api_->GetBoundsByIndex(i); | 985 const gfx::Rect& bounds1 = test_api_->GetBoundsByIndex(i); |
990 const gfx::Rect& bounds2 = test_api_->GetBoundsByIndex(i + 1); | 986 const gfx::Rect& bounds2 = test_api_->GetBoundsByIndex(i + 1); |
991 EXPECT_FALSE(bounds1.Intersects(bounds2)); | 987 EXPECT_FALSE(bounds1.Intersects(bounds2)); |
992 } | 988 } |
993 } | 989 } |
994 } | 990 } |
995 | 991 |
996 // Making sure the overflow bubble arrow correctly tracks with shelf position. | 992 // Making sure the overflow bubble arrow correctly tracks with shelf position. |
997 TEST_P(ShelfViewTextDirectionTest, OverflowArrowForShelfPosition) { | 993 TEST_P(ShelfViewTextDirectionTest, OverflowArrowForShelfPosition) { |
998 const ShelfAlignment kAlignments[] = { | 994 const ShelfAlignment kAlignments[] = { |
999 SHELF_ALIGNMENT_BOTTOM, SHELF_ALIGNMENT_LEFT, SHELF_ALIGNMENT_RIGHT, | 995 SHELF_ALIGNMENT_BOTTOM, SHELF_ALIGNMENT_LEFT, SHELF_ALIGNMENT_RIGHT, |
1000 SHELF_ALIGNMENT_BOTTOM_LOCKED, | 996 SHELF_ALIGNMENT_BOTTOM_LOCKED, |
1001 }; | 997 }; |
1002 | 998 |
1003 // These must match what is expected for each alignment above. | 999 // These must match what is expected for each alignment above. |
1004 const views::BubbleBorder::Arrow kArrows[] = { | 1000 const views::BubbleBorder::Arrow kArrows[] = { |
1005 views::BubbleBorder::BOTTOM_LEFT, views::BubbleBorder::LEFT_TOP, | 1001 views::BubbleBorder::BOTTOM_LEFT, views::BubbleBorder::LEFT_TOP, |
1006 views::BubbleBorder::RIGHT_TOP, views::BubbleBorder::BOTTOM_LEFT, | 1002 views::BubbleBorder::RIGHT_TOP, views::BubbleBorder::BOTTOM_LEFT, |
1007 }; | 1003 }; |
1008 | 1004 |
1009 for (size_t i = 0; i < arraysize(kAlignments); i++) { | 1005 for (size_t i = 0; i < arraysize(kAlignments); i++) { |
1010 shelf_view_->shelf()->SetAlignment(kAlignments[i]); | 1006 shelf_view_->wm_shelf()->SetAlignment(kAlignments[i]); |
1011 | 1007 |
1012 // Make sure there are enough icons to trigger the overflow in new | 1008 // Make sure there are enough icons to trigger the overflow in new |
1013 // orientation. | 1009 // orientation. |
1014 AddButtonsUntilOverflow(); | 1010 AddButtonsUntilOverflow(); |
1015 test_api_->ShowOverflowBubble(); | 1011 test_api_->ShowOverflowBubble(); |
1016 ASSERT_TRUE(test_api_->overflow_bubble() && | 1012 ASSERT_TRUE(test_api_->overflow_bubble() && |
1017 test_api_->overflow_bubble()->IsShowing()); | 1013 test_api_->overflow_bubble()->IsShowing()); |
1018 | 1014 |
1019 EXPECT_EQ(kArrows[i], test_api_->overflow_bubble()->bubble_view()->arrow()); | 1015 EXPECT_EQ(kArrows[i], test_api_->overflow_bubble()->bubble_view()->arrow()); |
1020 OverflowBubbleViewTestAPI bubble_view_api( | 1016 OverflowBubbleViewTestAPI bubble_view_api( |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1329 model_->Set(index, item); | 1325 model_->Set(index, item); |
1330 ASSERT_EQ(ShelfButton::STATE_ACTIVE, button->state()); | 1326 ASSERT_EQ(ShelfButton::STATE_ACTIVE, button->state()); |
1331 item.status = STATUS_ATTENTION; | 1327 item.status = STATUS_ATTENTION; |
1332 model_->Set(index, item); | 1328 model_->Set(index, item); |
1333 ASSERT_EQ(ShelfButton::STATE_ATTENTION, button->state()); | 1329 ASSERT_EQ(ShelfButton::STATE_ATTENTION, button->state()); |
1334 } | 1330 } |
1335 | 1331 |
1336 // Confirm that shelf item bounds are correctly updated on shelf changes. | 1332 // Confirm that shelf item bounds are correctly updated on shelf changes. |
1337 TEST_F(ShelfViewTest, ShelfItemBoundsCheck) { | 1333 TEST_F(ShelfViewTest, ShelfItemBoundsCheck) { |
1338 VerifyShelfItemBoundsAreValid(); | 1334 VerifyShelfItemBoundsAreValid(); |
1339 shelf_view_->shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1335 shelf_view_->wm_shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1340 test_api_->RunMessageLoopUntilAnimationsDone(); | 1336 test_api_->RunMessageLoopUntilAnimationsDone(); |
1341 VerifyShelfItemBoundsAreValid(); | 1337 VerifyShelfItemBoundsAreValid(); |
1342 shelf_view_->shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 1338 shelf_view_->wm_shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
1343 test_api_->RunMessageLoopUntilAnimationsDone(); | 1339 test_api_->RunMessageLoopUntilAnimationsDone(); |
1344 VerifyShelfItemBoundsAreValid(); | 1340 VerifyShelfItemBoundsAreValid(); |
1345 } | 1341 } |
1346 | 1342 |
1347 TEST_F(ShelfViewTest, ShelfTooltipTest) { | 1343 TEST_F(ShelfViewTest, ShelfTooltipTest) { |
1348 ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1, test_api_->GetButtonCount()); | 1344 ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1, test_api_->GetButtonCount()); |
1349 | 1345 |
1350 // Prepare some items to the shelf. | 1346 // Prepare some items to the shelf. |
1351 ShelfID app_button_id = AddAppShortcut(); | 1347 ShelfID app_button_id = AddAppShortcut(); |
1352 ShelfID platform_button_id = AddPlatformApp(); | 1348 ShelfID platform_button_id = AddPlatformApp(); |
1353 | 1349 |
1354 ShelfButton* app_button = GetButtonByID(app_button_id); | 1350 ShelfButton* app_button = GetButtonByID(app_button_id); |
1355 ShelfButton* platform_button = GetButtonByID(platform_button_id); | 1351 ShelfButton* platform_button = GetButtonByID(platform_button_id); |
1356 | 1352 |
1357 ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); | 1353 ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); |
1358 EXPECT_TRUE(test_api_->shelf_view()->GetWidget()->GetNativeWindow()); | 1354 EXPECT_TRUE(test_api_->shelf_view()->GetWidget()->GetNativeWindow()); |
1359 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); | 1355 ui::test::EventGenerator& generator = GetEventGenerator(); |
1360 | 1356 |
1361 generator.MoveMouseTo(app_button->GetBoundsInScreen().CenterPoint()); | 1357 generator.MoveMouseTo(app_button->GetBoundsInScreen().CenterPoint()); |
1362 // There's a delay to show the tooltip, so it's not visible yet. | 1358 // There's a delay to show the tooltip, so it's not visible yet. |
1363 EXPECT_FALSE(tooltip_manager->IsVisible()); | 1359 EXPECT_FALSE(tooltip_manager->IsVisible()); |
1364 EXPECT_EQ(nullptr, tooltip_manager->GetCurrentAnchorView()); | 1360 EXPECT_EQ(nullptr, tooltip_manager->GetCurrentAnchorView()); |
1365 | 1361 |
1366 tooltip_manager->ShowTooltip(app_button); | 1362 tooltip_manager->ShowTooltip(app_button); |
1367 EXPECT_TRUE(tooltip_manager->IsVisible()); | 1363 EXPECT_TRUE(tooltip_manager->IsVisible()); |
1368 EXPECT_EQ(app_button, tooltip_manager->GetCurrentAnchorView()); | 1364 EXPECT_EQ(app_button, tooltip_manager->GetCurrentAnchorView()); |
1369 | 1365 |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1499 AppListButton* app_list_button = shelf_view_->GetAppListButton(); | 1495 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1500 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1496 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
1501 app_list_button->GetMirroredBounds().CenterPoint())); | 1497 app_list_button->GetMirroredBounds().CenterPoint())); |
1502 } | 1498 } |
1503 | 1499 |
1504 // Test that by moving the mouse cursor off the button onto the bubble it closes | 1500 // Test that by moving the mouse cursor off the button onto the bubble it closes |
1505 // the bubble. | 1501 // the bubble. |
1506 TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) { | 1502 TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) { |
1507 ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); | 1503 ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); |
1508 tooltip_manager->set_timer_delay_for_test(0); | 1504 tooltip_manager->set_timer_delay_for_test(0); |
1509 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 1505 ui::test::EventGenerator& generator = GetEventGenerator(); |
1510 | 1506 |
1511 // Move the mouse off any item and check that no tooltip is shown. | 1507 // Move the mouse off any item and check that no tooltip is shown. |
1512 generator.MoveMouseTo(gfx::Point(0, 0)); | 1508 generator.MoveMouseTo(gfx::Point(0, 0)); |
1513 EXPECT_FALSE(tooltip_manager->IsVisible()); | 1509 EXPECT_FALSE(tooltip_manager->IsVisible()); |
1514 | 1510 |
1515 // Move the mouse over the button and check that it is visible. | 1511 // Move the mouse over the button and check that it is visible. |
1516 AppListButton* app_list_button = shelf_view_->GetAppListButton(); | 1512 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1517 gfx::Rect bounds = app_list_button->GetBoundsInScreen(); | 1513 gfx::Rect bounds = app_list_button->GetBoundsInScreen(); |
1518 generator.MoveMouseTo(bounds.CenterPoint()); | 1514 generator.MoveMouseTo(bounds.CenterPoint()); |
1519 // Wait for the timer to go off. | 1515 // Wait for the timer to go off. |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1591 test_api_->overflow_bubble()->IsShowing()); | 1587 test_api_->overflow_bubble()->IsShowing()); |
1592 | 1588 |
1593 ShelfViewTestAPI test_for_overflow_view( | 1589 ShelfViewTestAPI test_for_overflow_view( |
1594 test_api_->overflow_bubble()->shelf_view()); | 1590 test_api_->overflow_bubble()->shelf_view()); |
1595 | 1591 |
1596 int ripped_index = test_for_overflow_view.GetLastVisibleIndex(); | 1592 int ripped_index = test_for_overflow_view.GetLastVisibleIndex(); |
1597 gfx::Size bubble_size = test_for_overflow_view.GetPreferredSize(); | 1593 gfx::Size bubble_size = test_for_overflow_view.GetPreferredSize(); |
1598 int item_width = test_for_overflow_view.GetButtonSize() + | 1594 int item_width = test_for_overflow_view.GetButtonSize() + |
1599 test_for_overflow_view.GetButtonSpacing(); | 1595 test_for_overflow_view.GetButtonSpacing(); |
1600 | 1596 |
1601 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), | 1597 ui::test::EventGenerator& generator = GetEventGenerator(); |
1602 gfx::Point()); | |
1603 ShelfButton* button = test_for_overflow_view.GetButton(ripped_index); | 1598 ShelfButton* button = test_for_overflow_view.GetButton(ripped_index); |
1604 // Rip off the last visible item. | 1599 // Rip off the last visible item. |
1605 gfx::Point start_point = button->GetBoundsInScreen().CenterPoint(); | 1600 gfx::Point start_point = button->GetBoundsInScreen().CenterPoint(); |
1606 gfx::Point rip_off_point(start_point.x(), 0); | 1601 gfx::Point rip_off_point(start_point.x(), 0); |
1607 generator.MoveMouseTo(start_point.x(), start_point.y()); | 1602 generator.MoveMouseTo(start_point.x(), start_point.y()); |
1608 base::RunLoop().RunUntilIdle(); | 1603 base::RunLoop().RunUntilIdle(); |
1609 generator.PressLeftButton(); | 1604 generator.PressLeftButton(); |
1610 base::RunLoop().RunUntilIdle(); | 1605 base::RunLoop().RunUntilIdle(); |
1611 generator.MoveMouseTo(rip_off_point.x(), rip_off_point.y()); | 1606 generator.MoveMouseTo(rip_off_point.x(), rip_off_point.y()); |
1612 base::RunLoop().RunUntilIdle(); | 1607 base::RunLoop().RunUntilIdle(); |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1818 // invisible. | 1813 // invisible. |
1819 SetShelfItemTypeToAppShortcut(platform_app_id); | 1814 SetShelfItemTypeToAppShortcut(platform_app_id); |
1820 EXPECT_FALSE(GetButtonByID(platform_app_id)->visible()); | 1815 EXPECT_FALSE(GetButtonByID(platform_app_id)->visible()); |
1821 } | 1816 } |
1822 | 1817 |
1823 // Tests that the AppListButton renders as active in response to touches. | 1818 // Tests that the AppListButton renders as active in response to touches. |
1824 TEST_F(ShelfViewTest, AppListButtonTouchFeedback) { | 1819 TEST_F(ShelfViewTest, AppListButtonTouchFeedback) { |
1825 AppListButton* app_list_button = shelf_view_->GetAppListButton(); | 1820 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1826 EXPECT_FALSE(app_list_button->draw_background_as_active()); | 1821 EXPECT_FALSE(app_list_button->draw_background_as_active()); |
1827 | 1822 |
1828 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 1823 ui::test::EventGenerator& generator = GetEventGenerator(); |
1829 generator.set_current_location( | 1824 generator.set_current_location( |
1830 app_list_button->GetBoundsInScreen().CenterPoint()); | 1825 app_list_button->GetBoundsInScreen().CenterPoint()); |
1831 generator.PressTouch(); | 1826 generator.PressTouch(); |
1832 EXPECT_TRUE(app_list_button->draw_background_as_active()); | 1827 EXPECT_TRUE(app_list_button->draw_background_as_active()); |
1833 | 1828 |
1834 generator.ReleaseTouch(); | 1829 generator.ReleaseTouch(); |
1835 EXPECT_FALSE(app_list_button->draw_background_as_active()); | 1830 EXPECT_FALSE(app_list_button->draw_background_as_active()); |
1836 EXPECT_TRUE(WmShell::Get()->GetAppListTargetVisibility()); | 1831 EXPECT_TRUE(WmShell::Get()->GetAppListTargetVisibility()); |
1837 } | 1832 } |
1838 | 1833 |
1839 // Tests that a touch that slides out of the bounds of the AppListButton leads | 1834 // Tests that a touch that slides out of the bounds of the AppListButton leads |
1840 // to the end of rendering an active state. | 1835 // to the end of rendering an active state. |
1841 TEST_F(ShelfViewTest, AppListButtonTouchFeedbackCancellation) { | 1836 TEST_F(ShelfViewTest, AppListButtonTouchFeedbackCancellation) { |
1842 AppListButton* app_list_button = shelf_view_->GetAppListButton(); | 1837 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1843 EXPECT_FALSE(app_list_button->draw_background_as_active()); | 1838 EXPECT_FALSE(app_list_button->draw_background_as_active()); |
1844 | 1839 |
1845 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 1840 ui::test::EventGenerator& generator = GetEventGenerator(); |
1846 generator.set_current_location( | 1841 generator.set_current_location( |
1847 app_list_button->GetBoundsInScreen().CenterPoint()); | 1842 app_list_button->GetBoundsInScreen().CenterPoint()); |
1848 generator.PressTouch(); | 1843 generator.PressTouch(); |
1849 EXPECT_TRUE(app_list_button->draw_background_as_active()); | 1844 EXPECT_TRUE(app_list_button->draw_background_as_active()); |
1850 | 1845 |
1851 gfx::Point moved_point( | 1846 gfx::Point moved_point( |
1852 app_list_button->GetBoundsInScreen().right() + 1, | 1847 app_list_button->GetBoundsInScreen().right() + 1, |
1853 app_list_button->GetBoundsInScreen().CenterPoint().y()); | 1848 app_list_button->GetBoundsInScreen().CenterPoint().y()); |
1854 generator.MoveTouch(moved_point); | 1849 generator.MoveTouch(moved_point); |
1855 EXPECT_FALSE(app_list_button->draw_background_as_active()); | 1850 EXPECT_FALSE(app_list_button->draw_background_as_active()); |
(...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2563 test_api_->CloseMenu(); | 2558 test_api_->CloseMenu(); |
2564 EXPECT_EQ(views::InkDropState::HIDDEN, | 2559 EXPECT_EQ(views::InkDropState::HIDDEN, |
2565 browser_button_ink_drop_->GetTargetInkDropState()); | 2560 browser_button_ink_drop_->GetTargetInkDropState()); |
2566 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2561 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
2567 ElementsAre(views::InkDropState::ACTIVATED, | 2562 ElementsAre(views::InkDropState::ACTIVATED, |
2568 views::InkDropState::DEACTIVATED)); | 2563 views::InkDropState::DEACTIVATED)); |
2569 } | 2564 } |
2570 | 2565 |
2571 } // namespace test | 2566 } // namespace test |
2572 } // namespace ash | 2567 } // namespace ash |
OLD | NEW |