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/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> |
(...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1475 ShelfButton* button = test_api_->GetButton(i); | 1475 ShelfButton* button = test_api_->GetButton(i); |
1476 if (!button) | 1476 if (!button) |
1477 continue; | 1477 continue; |
1478 | 1478 |
1479 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( | 1479 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( |
1480 button->GetMirroredBounds().CenterPoint())) | 1480 button->GetMirroredBounds().CenterPoint())) |
1481 << "ShelfView tries to hide on button " << i; | 1481 << "ShelfView tries to hide on button " << i; |
1482 } | 1482 } |
1483 | 1483 |
1484 // The tooltip should not hide on the app-list button. | 1484 // The tooltip should not hide on the app-list button. |
1485 views::View* app_list_button = shelf_view_->GetAppListButtonView(); | 1485 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1486 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( | 1486 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( |
1487 app_list_button->GetMirroredBounds().CenterPoint())); | 1487 app_list_button->GetMirroredBounds().CenterPoint())); |
1488 | 1488 |
1489 // The tooltip shouldn't hide if the mouse is in the gap between two buttons. | 1489 // The tooltip shouldn't hide if the mouse is in the gap between two buttons. |
1490 gfx::Rect app_button_rect = GetButtonByID(app_button_id)->GetMirroredBounds(); | 1490 gfx::Rect app_button_rect = GetButtonByID(app_button_id)->GetMirroredBounds(); |
1491 gfx::Rect platform_button_rect = | 1491 gfx::Rect platform_button_rect = |
1492 GetButtonByID(platform_button_id)->GetMirroredBounds(); | 1492 GetButtonByID(platform_button_id)->GetMirroredBounds(); |
1493 ASSERT_FALSE(app_button_rect.Intersects(platform_button_rect)); | 1493 ASSERT_FALSE(app_button_rect.Intersects(platform_button_rect)); |
1494 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( | 1494 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( |
1495 gfx::UnionRects(app_button_rect, platform_button_rect).CenterPoint())); | 1495 gfx::UnionRects(app_button_rect, platform_button_rect).CenterPoint())); |
1496 | 1496 |
1497 // The tooltip should hide if it's outside of all buttons. | 1497 // The tooltip should hide if it's outside of all buttons. |
1498 gfx::Rect all_area; | 1498 gfx::Rect all_area; |
1499 for (int i = 0; i < test_api_->GetButtonCount(); i++) { | 1499 for (int i = 0; i < test_api_->GetButtonCount(); i++) { |
1500 ShelfButton* button = test_api_->GetButton(i); | 1500 ShelfButton* button = test_api_->GetButton(i); |
1501 if (!button) | 1501 if (!button) |
1502 continue; | 1502 continue; |
1503 | 1503 |
1504 all_area.Union(button->GetMirroredBounds()); | 1504 all_area.Union(button->GetMirroredBounds()); |
1505 } | 1505 } |
1506 all_area.Union(shelf_view_->GetAppListButtonView()->GetMirroredBounds()); | 1506 all_area.Union(shelf_view_->GetAppListButton()->GetMirroredBounds()); |
1507 EXPECT_FALSE(shelf_view_->ShouldHideTooltip(all_area.origin())); | 1507 EXPECT_FALSE(shelf_view_->ShouldHideTooltip(all_area.origin())); |
1508 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( | 1508 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( |
1509 gfx::Point(all_area.right() - 1, all_area.bottom() - 1))); | 1509 gfx::Point(all_area.right() - 1, all_area.bottom() - 1))); |
1510 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1510 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
1511 gfx::Point(all_area.right(), all_area.y()))); | 1511 gfx::Point(all_area.right(), all_area.y()))); |
1512 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1512 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
1513 gfx::Point(all_area.x() - 1, all_area.y()))); | 1513 gfx::Point(all_area.x() - 1, all_area.y()))); |
1514 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1514 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
1515 gfx::Point(all_area.x(), all_area.y() - 1))); | 1515 gfx::Point(all_area.x(), all_area.y() - 1))); |
1516 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1516 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
1517 gfx::Point(all_area.x(), all_area.bottom()))); | 1517 gfx::Point(all_area.x(), all_area.bottom()))); |
1518 } | 1518 } |
1519 | 1519 |
1520 TEST_F(ShelfViewTest, ShouldHideTooltipWithAppListWindowTest) { | 1520 TEST_F(ShelfViewTest, ShouldHideTooltipWithAppListWindowTest) { |
1521 Shell::GetInstance()->ShowAppList(NULL); | 1521 Shell::GetInstance()->ShowAppList(NULL); |
1522 ASSERT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); | 1522 ASSERT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); |
1523 | 1523 |
1524 // The tooltip shouldn't hide if the mouse is on normal buttons. | 1524 // The tooltip shouldn't hide if the mouse is on normal buttons. |
1525 for (int i = 1; i < test_api_->GetButtonCount(); i++) { | 1525 for (int i = 1; i < test_api_->GetButtonCount(); i++) { |
1526 ShelfButton* button = test_api_->GetButton(i); | 1526 ShelfButton* button = test_api_->GetButton(i); |
1527 if (!button) | 1527 if (!button) |
1528 continue; | 1528 continue; |
1529 | 1529 |
1530 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( | 1530 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( |
1531 button->GetMirroredBounds().CenterPoint())) | 1531 button->GetMirroredBounds().CenterPoint())) |
1532 << "ShelfView tries to hide on button " << i; | 1532 << "ShelfView tries to hide on button " << i; |
1533 } | 1533 } |
1534 | 1534 |
1535 // The tooltip should hide on the app-list button. | 1535 // The tooltip should hide on the app-list button. |
1536 views::View* app_list_button = shelf_view_->GetAppListButtonView(); | 1536 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1537 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1537 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
1538 app_list_button->GetMirroredBounds().CenterPoint())); | 1538 app_list_button->GetMirroredBounds().CenterPoint())); |
1539 } | 1539 } |
1540 | 1540 |
1541 // Test that by moving the mouse cursor off the button onto the bubble it closes | 1541 // Test that by moving the mouse cursor off the button onto the bubble it closes |
1542 // the bubble. | 1542 // the bubble. |
1543 TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) { | 1543 TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) { |
1544 ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); | 1544 ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); |
1545 tooltip_manager->set_timer_delay_for_test(0); | 1545 tooltip_manager->set_timer_delay_for_test(0); |
1546 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 1546 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
1547 | 1547 |
1548 // Move the mouse off any item and check that no tooltip is shown. | 1548 // Move the mouse off any item and check that no tooltip is shown. |
1549 generator.MoveMouseTo(gfx::Point(0, 0)); | 1549 generator.MoveMouseTo(gfx::Point(0, 0)); |
1550 EXPECT_FALSE(tooltip_manager->IsVisible()); | 1550 EXPECT_FALSE(tooltip_manager->IsVisible()); |
1551 | 1551 |
1552 // Move the mouse over the button and check that it is visible. | 1552 // Move the mouse over the button and check that it is visible. |
1553 views::View* app_list_button = shelf_view_->GetAppListButtonView(); | 1553 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1554 gfx::Rect bounds = app_list_button->GetBoundsInScreen(); | 1554 gfx::Rect bounds = app_list_button->GetBoundsInScreen(); |
1555 generator.MoveMouseTo(bounds.CenterPoint()); | 1555 generator.MoveMouseTo(bounds.CenterPoint()); |
1556 // Wait for the timer to go off. | 1556 // Wait for the timer to go off. |
1557 RunAllPendingInMessageLoop(); | 1557 RunAllPendingInMessageLoop(); |
1558 EXPECT_TRUE(tooltip_manager->IsVisible()); | 1558 EXPECT_TRUE(tooltip_manager->IsVisible()); |
1559 | 1559 |
1560 // Move the mouse cursor slightly to the right of the item. The tooltip should | 1560 // Move the mouse cursor slightly to the right of the item. The tooltip should |
1561 // stay open. | 1561 // stay open. |
1562 generator.MoveMouseBy(bounds.width() / 2 + 5, 0); | 1562 generator.MoveMouseBy(bounds.width() / 2 + 5, 0); |
1563 // Make sure there is no delayed close. | 1563 // Make sure there is no delayed close. |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1853 | 1853 |
1854 // Make the added running platform app to be an app shortcut. | 1854 // Make the added running platform app to be an app shortcut. |
1855 // This app shortcut should be a swapped view in overflow bubble, which is | 1855 // This app shortcut should be a swapped view in overflow bubble, which is |
1856 // invisible. | 1856 // invisible. |
1857 SetShelfItemTypeToAppShortcut(platform_app_id); | 1857 SetShelfItemTypeToAppShortcut(platform_app_id); |
1858 EXPECT_FALSE(GetButtonByID(platform_app_id)->visible()); | 1858 EXPECT_FALSE(GetButtonByID(platform_app_id)->visible()); |
1859 } | 1859 } |
1860 | 1860 |
1861 // Tests that the AppListButton renders as active in response to touches. | 1861 // Tests that the AppListButton renders as active in response to touches. |
1862 TEST_F(ShelfViewTest, AppListButtonTouchFeedback) { | 1862 TEST_F(ShelfViewTest, AppListButtonTouchFeedback) { |
1863 AppListButton* app_list_button = | 1863 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1864 static_cast<AppListButton*>(shelf_view_->GetAppListButtonView()); | |
1865 EXPECT_FALSE(app_list_button->draw_background_as_active()); | 1864 EXPECT_FALSE(app_list_button->draw_background_as_active()); |
1866 | 1865 |
1867 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 1866 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
1868 generator.set_current_location(app_list_button-> | 1867 generator.set_current_location(app_list_button-> |
1869 GetBoundsInScreen().CenterPoint()); | 1868 GetBoundsInScreen().CenterPoint()); |
1870 generator.PressTouch(); | 1869 generator.PressTouch(); |
1871 EXPECT_TRUE(app_list_button->draw_background_as_active()); | 1870 EXPECT_TRUE(app_list_button->draw_background_as_active()); |
1872 | 1871 |
1873 generator.ReleaseTouch(); | 1872 generator.ReleaseTouch(); |
1874 EXPECT_FALSE(app_list_button->draw_background_as_active()); | 1873 EXPECT_FALSE(app_list_button->draw_background_as_active()); |
1875 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); | 1874 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); |
1876 } | 1875 } |
1877 | 1876 |
1878 // Tests that a touch that slides out of the bounds of the AppListButton leads | 1877 // Tests that a touch that slides out of the bounds of the AppListButton leads |
1879 // to the end of rendering an active state. | 1878 // to the end of rendering an active state. |
1880 TEST_F(ShelfViewTest, AppListButtonTouchFeedbackCancellation) { | 1879 TEST_F(ShelfViewTest, AppListButtonTouchFeedbackCancellation) { |
1881 AppListButton* app_list_button = | 1880 AppListButton* app_list_button = shelf_view_->GetAppListButton(); |
1882 static_cast<AppListButton*>(shelf_view_->GetAppListButtonView()); | |
1883 EXPECT_FALSE(app_list_button->draw_background_as_active()); | 1881 EXPECT_FALSE(app_list_button->draw_background_as_active()); |
1884 | 1882 |
1885 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 1883 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
1886 generator.set_current_location(app_list_button-> | 1884 generator.set_current_location(app_list_button-> |
1887 GetBoundsInScreen().CenterPoint()); | 1885 GetBoundsInScreen().CenterPoint()); |
1888 generator.PressTouch(); | 1886 generator.PressTouch(); |
1889 EXPECT_TRUE(app_list_button->draw_background_as_active()); | 1887 EXPECT_TRUE(app_list_button->draw_background_as_active()); |
1890 | 1888 |
1891 gfx::Point moved_point(app_list_button->GetBoundsInScreen().right() + 1, | 1889 gfx::Point moved_point(app_list_button->GetBoundsInScreen().right() + 1, |
1892 app_list_button-> | 1890 app_list_button-> |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1971 gfx::Rect shelf_bounds = shelf_view_->GetBoundsInScreen(); | 1969 gfx::Rect shelf_bounds = shelf_view_->GetBoundsInScreen(); |
1972 EXPECT_TRUE(shelf_bounds.Contains(visible_bounds)); | 1970 EXPECT_TRUE(shelf_bounds.Contains(visible_bounds)); |
1973 for (int i = 0; i < test_api_->GetButtonCount(); ++i) | 1971 for (int i = 0; i < test_api_->GetButtonCount(); ++i) |
1974 if (ShelfButton* button = test_api_->GetButton(i)) | 1972 if (ShelfButton* button = test_api_->GetButton(i)) |
1975 EXPECT_TRUE(visible_bounds.Contains(button->GetBoundsInScreen())); | 1973 EXPECT_TRUE(visible_bounds.Contains(button->GetBoundsInScreen())); |
1976 CheckAppListButtonIsInBounds(); | 1974 CheckAppListButtonIsInBounds(); |
1977 } | 1975 } |
1978 | 1976 |
1979 void CheckAppListButtonIsInBounds() { | 1977 void CheckAppListButtonIsInBounds() { |
1980 gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen(); | 1978 gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen(); |
1981 gfx::Rect app_list_button_bounds = shelf_view_->GetAppListButtonView()-> | 1979 gfx::Rect app_list_button_bounds = |
1982 GetBoundsInScreen(); | 1980 shelf_view_->GetAppListButton()->GetBoundsInScreen(); |
1983 EXPECT_TRUE(visible_bounds.Contains(app_list_button_bounds)); | 1981 EXPECT_TRUE(visible_bounds.Contains(app_list_button_bounds)); |
1984 } | 1982 } |
1985 | 1983 |
1986 private: | 1984 private: |
1987 ScopedTextDirectionChange text_direction_change_; | 1985 ScopedTextDirectionChange text_direction_change_; |
1988 | 1986 |
1989 DISALLOW_COPY_AND_ASSIGN(ShelfViewVisibleBoundsTest); | 1987 DISALLOW_COPY_AND_ASSIGN(ShelfViewVisibleBoundsTest); |
1990 }; | 1988 }; |
1991 | 1989 |
1992 TEST_P(ShelfViewVisibleBoundsTest, ItemsAreInBounds) { | 1990 TEST_P(ShelfViewVisibleBoundsTest, ItemsAreInBounds) { |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2281 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2279 ui::EF_LEFT_MOUSE_BUTTON, 0); |
2282 button->OnMouseReleased(release_event); | 2280 button->OnMouseReleased(release_event); |
2283 EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState()); | 2281 EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState()); |
2284 EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(), | 2282 EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(), |
2285 ElementsAre(views::InkDropState::ACTIVATED, | 2283 ElementsAre(views::InkDropState::ACTIVATED, |
2286 views::InkDropState::DEACTIVATED)); | 2284 views::InkDropState::DEACTIVATED)); |
2287 } | 2285 } |
2288 | 2286 |
2289 } // namespace test | 2287 } // namespace test |
2290 } // namespace ash | 2288 } // namespace ash |
OLD | NEW |