Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2861)

Unified Diff: ash/shelf/shelf_view_unittest.cc

Issue 2070143003: Add MD ink drop ripple to app list button (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@b612539_shelf_button_ripple
Patch Set: Rebased Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/shelf/shelf_view.cc ('k') | ash/shell.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/shelf/shelf_view_unittest.cc
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 39c6beaaacf6502b8a3fb16a74493816897099ef..40cec06f3a961e3530c55eb31b3845f8189a8bc1 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -25,6 +25,7 @@
#include "ash/shelf/shelf_widget.h"
#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
+#include "ash/test/ash_test_helper.h"
#include "ash/test/material_design_controller_test_api.h"
#include "ash/test/overflow_bubble_view_test_api.h"
#include "ash/test/shelf_test_api.h"
@@ -32,6 +33,7 @@
#include "ash/test/shell_test_api.h"
#include "ash/test/test_shelf_delegate.h"
#include "ash/test/test_shelf_item_delegate.h"
+#include "ash/test/test_shell_delegate.h"
#include "ash/test/test_system_tray_delegate.h"
#include "base/compiler_specific.h"
#include "base/i18n/rtl.h"
@@ -43,6 +45,7 @@
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "testing/gmock/include/gmock/gmock.h"
+#include "ui/app_list/presenter/app_list_presenter.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
@@ -1454,7 +1457,7 @@ TEST_F(ShelfViewTest, ShouldHideTooltipTest) {
}
// The tooltip should not hide on the app-list button.
- views::View* app_list_button = shelf_view_->GetAppListButtonView();
+ AppListButton* app_list_button = shelf_view_->GetAppListButton();
EXPECT_FALSE(shelf_view_->ShouldHideTooltip(
app_list_button->GetMirroredBounds().CenterPoint()));
@@ -1475,7 +1478,7 @@ TEST_F(ShelfViewTest, ShouldHideTooltipTest) {
all_area.Union(button->GetMirroredBounds());
}
- all_area.Union(shelf_view_->GetAppListButtonView()->GetMirroredBounds());
+ all_area.Union(shelf_view_->GetAppListButton()->GetMirroredBounds());
EXPECT_FALSE(shelf_view_->ShouldHideTooltip(all_area.origin()));
EXPECT_FALSE(shelf_view_->ShouldHideTooltip(
gfx::Point(all_area.right() - 1, all_area.bottom() - 1)));
@@ -1505,7 +1508,7 @@ TEST_F(ShelfViewTest, ShouldHideTooltipWithAppListWindowTest) {
}
// The tooltip should hide on the app-list button.
- views::View* app_list_button = shelf_view_->GetAppListButtonView();
+ AppListButton* app_list_button = shelf_view_->GetAppListButton();
EXPECT_TRUE(shelf_view_->ShouldHideTooltip(
app_list_button->GetMirroredBounds().CenterPoint()));
}
@@ -1522,7 +1525,7 @@ TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) {
EXPECT_FALSE(tooltip_manager->IsVisible());
// Move the mouse over the button and check that it is visible.
- views::View* app_list_button = shelf_view_->GetAppListButtonView();
+ AppListButton* app_list_button = shelf_view_->GetAppListButton();
gfx::Rect bounds = app_list_button->GetBoundsInScreen();
generator.MoveMouseTo(bounds.CenterPoint());
// Wait for the timer to go off.
@@ -1831,8 +1834,7 @@ TEST_F(ShelfViewTest, CheckOverflowStatusPinOpenedAppToShelf) {
// Tests that the AppListButton renders as active in response to touches.
TEST_F(ShelfViewTest, AppListButtonTouchFeedback) {
- AppListButton* app_list_button =
- static_cast<AppListButton*>(shelf_view_->GetAppListButtonView());
+ AppListButton* app_list_button = shelf_view_->GetAppListButton();
EXPECT_FALSE(app_list_button->draw_background_as_active());
ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
@@ -1849,8 +1851,7 @@ TEST_F(ShelfViewTest, AppListButtonTouchFeedback) {
// Tests that a touch that slides out of the bounds of the AppListButton leads
// to the end of rendering an active state.
TEST_F(ShelfViewTest, AppListButtonTouchFeedbackCancellation) {
- AppListButton* app_list_button =
- static_cast<AppListButton*>(shelf_view_->GetAppListButtonView());
+ AppListButton* app_list_button = shelf_view_->GetAppListButton();
EXPECT_FALSE(app_list_button->draw_background_as_active());
ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
@@ -1950,7 +1951,7 @@ class ShelfViewVisibleBoundsTest : public ShelfViewTest,
void CheckAppListButtonIsInBounds() {
gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen();
gfx::Rect app_list_button_bounds =
- shelf_view_->GetAppListButtonView()->GetBoundsInScreen();
+ shelf_view_->GetAppListButton()->GetBoundsInScreen();
EXPECT_TRUE(visible_bounds.Contains(app_list_button_bounds));
}
@@ -2074,14 +2075,72 @@ class ListMenuShelfItemDelegate : public TestShelfItemDelegate {
DISALLOW_COPY_AND_ASSIGN(ListMenuShelfItemDelegate);
};
+// A test implementation for AppListPresenter that does not change visibility
+// state immediately to simulate an in-flight animation. Calling
+// FinishVisibilityChange() will change the visibility to the requested one,
+// simulating end of the animation. Similar to the actual AppListPresenter, this
+// class toggles app list visibility based on the actual visibility rather than
+// the target visibility (which might be different due to in-flight animation).
+class TestAppListPresenter : public app_list::AppListPresenter {
+ public:
+ TestAppListPresenter() {}
+ ~TestAppListPresenter() override {}
+
+ void FinishVisibilityChange() { is_visible_ = target_visibility_; }
+
+ // app_list::AppListPresenter:
+ void Show(int64_t display_id) override { target_visibility_ = true; }
+ void Dismiss() override { target_visibility_ = false; }
+ void ToggleAppList(int64_t display_id) override {
+ if (is_visible_)
+ Dismiss();
+ else
+ Show(display_id);
+ }
+ bool IsVisible() const override { return is_visible_; }
+ bool GetTargetVisibility() const override { return target_visibility_; }
+
+ private:
+ bool is_visible_ = false;
+ bool target_visibility_ = false;
+
+ DISALLOW_COPY_AND_ASSIGN(TestAppListPresenter);
+};
+
+// A test ShellDelegate implementation that returns a TestAppListPresenter as
+// the app list presenter.
+class TestAppListShellDelegate : public TestShellDelegate {
+ public:
+ TestAppListShellDelegate()
+ : app_list_presenter_(new TestAppListPresenter()) {}
+ ~TestAppListShellDelegate() override {}
+
+ TestAppListPresenter* app_list_presenter() const {
+ return app_list_presenter_.get();
+ }
+
+ // TestShellDelegate:
+ app_list::AppListPresenter* GetAppListPresenter() override {
+ return app_list_presenter();
+ }
+
+ private:
+ std::unique_ptr<TestAppListPresenter> app_list_presenter_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestAppListShellDelegate);
+};
+
} // namespace
class ShelfViewInkDropTest : public ShelfViewTest {
public:
- ShelfViewInkDropTest() : ink_drop_(nullptr), browser_button_(nullptr) {}
+ ShelfViewInkDropTest() {}
~ShelfViewInkDropTest() override {}
void SetUp() override {
+ shell_delegate_ = new TestAppListShellDelegate;
+ ash_test_helper()->set_test_shell_delegate(shell_delegate_);
+
ShelfViewTest::SetUp();
// TODO(mohsen): Ideally, we would want to set material mode before calling
@@ -2089,141 +2148,423 @@ class ShelfViewInkDropTest : public ShelfViewTest {
// material mode. Currently, this is not possible as it expects material
// mode be UNINITIALIZED. (See https://crbug.com/620093)
ash_md_controller_.reset(new ash::test::MaterialDesignControllerTestAPI(
- ash::MaterialDesignController::MATERIAL_NORMAL));
+ ash::MaterialDesignController::MATERIAL_EXPERIMENTAL));
+ }
+ void TearDown() override {
+ ash_md_controller_.reset();
+
+ ShelfViewTest::TearDown();
+ }
+
+ protected:
+ void InitAppListButtonInkDrop() {
+ app_list_button_ = shelf_view_->GetAppListButton();
+
+ views::InkDropImpl* ink_drop_impl =
+ new views::InkDropImpl(app_list_button_);
+ app_list_button_ink_drop_ = new InkDropSpy(base::WrapUnique(ink_drop_impl));
+ views::test::InkDropHostViewTestApi(app_list_button_)
+ .SetInkDrop(base::WrapUnique(app_list_button_ink_drop_), false);
+ }
+
+ void InitBrowserButtonInkDrop() {
browser_button_ = test_api_->GetButton(browser_index_);
views::InkDropImpl* ink_drop_impl = new views::InkDropImpl(browser_button_);
- ink_drop_ = new InkDropSpy(base::WrapUnique(ink_drop_impl));
+ browser_button_ink_drop_ = new InkDropSpy(base::WrapUnique(ink_drop_impl));
views::test::InkDropHostViewTestApi(browser_button_)
- .SetInkDrop(base::WrapUnique(ink_drop_));
+ .SetInkDrop(base::WrapUnique(browser_button_ink_drop_));
}
- void TearDown() override {
- ash_md_controller_.reset();
+ void ShowAppList() {
+ shell_delegate_->app_list_presenter()->Show(0);
+ // Similar to real AppListPresenter, notify button that the app list is
+ // shown.
+ app_list_button_->OnAppListShown();
+ }
- ShelfViewTest::TearDown();
+ void DismissAppList() {
+ shell_delegate_->app_list_presenter()->Dismiss();
+ // Similar to real AppListPresenter, notify button that the app list is
+ // dismissed.
+ app_list_button_->OnAppListDismissed();
+ }
+
+ void FinishAppListVisibilityChange() {
+ shell_delegate_->app_list_presenter()->FinishVisibilityChange();
}
- protected:
std::unique_ptr<ash::test::MaterialDesignControllerTestAPI>
ash_md_controller_;
- InkDropSpy* ink_drop_;
- ShelfButton* browser_button_;
+ TestAppListShellDelegate* shell_delegate_ = nullptr; // Owned by Shell.
+
+ AppListButton* app_list_button_ = nullptr;
+ InkDropSpy* app_list_button_ink_drop_ = nullptr;
+ ShelfButton* browser_button_ = nullptr;
+ InkDropSpy* browser_button_ink_drop_ = nullptr;
private:
DISALLOW_COPY_AND_ASSIGN(ShelfViewInkDropTest);
};
+// Tests that changing visibility of the app list transitions app list button's
+// ink drop states correctly.
+TEST_F(ShelfViewInkDropTest, AppListButtonWhenVisibilityChanges) {
+ InitAppListButtonInkDrop();
+
+ ShowAppList();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::ACTIVATED,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::ACTIVATED));
+
+ DismissAppList();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::DEACTIVATED));
+}
+
+// Tests that when the app list is hidden, mouse press on the app list button,
+// which shows the app list, transitions ink drop states correctly. Also, tests
+// that mouse drag and mouse release does not affect the ink drop state.
+TEST_F(ShelfViewInkDropTest, AppListButtonMouseEventsWhenHidden) {
+ InitAppListButtonInkDrop();
+
+ ui::test::EventGenerator& generator = GetEventGenerator();
+ generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint());
+
+ // Mouse press on the button, which shows the app list, should end up in the
+ // activated state.
+ generator.PressLeftButton();
+ // Similar to real AppListPresenter, notify button that the app list is shown.
+ app_list_button_->OnAppListShown();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::ACTIVATED,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::ACTION_PENDING,
+ views::InkDropState::ACTIVATED));
+
+ // Dragging mouse out and back and releasing the button should not change the
+ // ink drop state.
+ generator.MoveMouseBy(app_list_button_->width(), 0);
+ generator.MoveMouseBy(-app_list_button_->width(), 0);
+ generator.ReleaseLeftButton();
+ EXPECT_EQ(views::InkDropState::ACTIVATED,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ IsEmpty());
+}
+
+// Tests that when the app list is visible, mouse press on the app list button,
+// which dismisses the app list, transitions ink drop states correctly. Also,
+// tests that mouse drag and mouse release does not affect the ink drop state.
+TEST_F(ShelfViewInkDropTest, AppListButtonMouseEventsWhenVisible) {
+ InitAppListButtonInkDrop();
+
+ // Show the app list.
+ ShowAppList();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::ACTIVATED,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::ACTIVATED));
+
+ ui::test::EventGenerator& generator = GetEventGenerator();
+ generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint());
+
+ // Mouse press on the button, which dismisses the app list, should end up in
+ // the hidden state.
+ // Dismiss app list similar to pre-target handler in real AppListPresenter.
+ DismissAppList();
+ generator.PressLeftButton();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::DEACTIVATED));
+
+ // Dragging mouse out and back and releasing the button should not change the
+ // ink drop state.
+ generator.MoveMouseBy(app_list_button_->width(), 0);
+ generator.MoveMouseBy(-app_list_button_->width(), 0);
+ generator.ReleaseLeftButton();
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ IsEmpty());
+}
+
+#if !defined(OS_WIN)
+// There is no ink drop effect for gesture events on Windows.
+
+// Tests that when the app list is hidden, tapping on the app list button
+// transitions ink drop states correctly.
+TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapWhenHidden) {
+ InitAppListButtonInkDrop();
+
+ ui::test::EventGenerator& generator = GetEventGenerator();
+ generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint());
+
+ // Touch press on the button should end up in the pending state.
+ generator.PressTouch();
+ EXPECT_EQ(views::InkDropState::ACTION_PENDING,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::ACTION_PENDING));
+
+ // Touch release on the button, which shows the app list, should end up in the
+ // activated state.
+ generator.ReleaseTouch();
+ // Similar to real AppListPresenter, notify button that the app list is shown.
+ app_list_button_->OnAppListShown();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::ACTIVATED,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::ACTIVATED));
+}
+
+// Tests that when the app list is visible, tapping on the app list button
+// transitions ink drop states correctly.
+TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapWhenVisible) {
+ InitAppListButtonInkDrop();
+
+ // Show the app list.
+ ShowAppList();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::ACTIVATED,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::ACTIVATED));
+
+ ui::test::EventGenerator& generator = GetEventGenerator();
+ generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint());
+
+ // Touch press on the button, which dismisses the app list, should end up in
+ // the hidden state.
+ // Dismiss app list similar to pre-target handler in real AppListPresenter.
+ DismissAppList();
+ generator.PressTouch();
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::DEACTIVATED));
+
+ // Touch release on the button should not change the ink drop state.
+ generator.ReleaseTouch();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ IsEmpty());
+}
+
+// Tests that when the app list is hidden, tapping down on the app list button
+// and dragging the touch point transitions ink drop states correctly.
+TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapDragWhenHidden) {
+ InitAppListButtonInkDrop();
+
+ ui::test::EventGenerator& generator = GetEventGenerator();
+ gfx::Point touch_location =
+ app_list_button_->GetBoundsInScreen().CenterPoint();
+ generator.MoveMouseTo(touch_location);
+
+ // Touch press on the button should end up in the pending state.
+ generator.PressTouch();
+ EXPECT_EQ(views::InkDropState::ACTION_PENDING,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::ACTION_PENDING));
+
+ // Dragging the touch point should hide the pending ink drop.
+ touch_location.Offset(app_list_button_->width(), 0);
+ generator.MoveTouch(touch_location);
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::HIDDEN));
+
+ // Touch release should not change the ink drop state.
+ generator.ReleaseTouch();
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ IsEmpty());
+}
+
+// Tests that when the app list is visible, tapping down on the app list button
+// and dragging the touch point transitions ink drop states correctly.
+TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapDragWhenVisible) {
+ InitAppListButtonInkDrop();
+
+ // Show the app list.
+ ShowAppList();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::ACTIVATED,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::ACTIVATED));
+
+ ui::test::EventGenerator& generator = GetEventGenerator();
+ gfx::Point touch_location =
+ app_list_button_->GetBoundsInScreen().CenterPoint();
+ generator.MoveMouseTo(touch_location);
+
+ // Touch press on the button, which dismisses the app list, should end up in
+ // the hidden state.
+ // Dismiss app list similar to pre-target handler in real AppListPresenter.
+ DismissAppList();
+ generator.PressTouch();
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::DEACTIVATED));
+
+ // Dragging the touch point and releasing should not change the ink drop
+ // state.
+ touch_location.Offset(app_list_button_->width(), 0);
+ generator.MoveTouch(touch_location);
+ generator.ReleaseTouch();
+ FinishAppListVisibilityChange();
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ app_list_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(),
+ ElementsAre(views::InkDropState::HIDDEN));
+}
+#endif // !defined(OS_WIN)
+
// Tests that clicking on a shelf item that does not show a menu transitions ink
// drop states correctly.
-TEST_F(ShelfViewInkDropTest, WithoutMenuPressRelease) {
+TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressRelease) {
+ InitBrowserButtonInkDrop();
+
views::CustomButton* button = browser_button_;
- gfx::Point press_location = button->GetLocalBounds().CenterPoint();
+ gfx::Point mouse_location = button->GetLocalBounds().CenterPoint();
- ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, press_location,
- press_location, ui::EventTimeForNow(),
+ ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMousePressed(press_event);
EXPECT_EQ(views::InkDropState::ACTION_PENDING,
- ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(),
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
ElementsAre(views::InkDropState::ACTION_PENDING));
- ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, press_location,
- press_location, ui::EventTimeForNow(),
+ ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMouseReleased(release_event);
- EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(),
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
ElementsAre(views::InkDropState::ACTION_TRIGGERED));
}
// Tests that dragging outside of a shelf item transitions ink drop states
// correctly.
-TEST_F(ShelfViewInkDropTest, WithoutMenuPressDragReleaseOutside) {
+TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressDragReleaseOutside) {
+ InitBrowserButtonInkDrop();
+
views::CustomButton* button = browser_button_;
- gfx::Point press_location = button->GetLocalBounds().CenterPoint();
+ gfx::Point mouse_location = button->GetLocalBounds().CenterPoint();
- ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, press_location,
- press_location, ui::EventTimeForNow(),
+ ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMousePressed(press_event);
EXPECT_EQ(views::InkDropState::ACTION_PENDING,
- ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(),
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
ElementsAre(views::InkDropState::ACTION_PENDING));
- press_location.Offset(test_api_->GetMinimumDragDistance() / 2, 0);
- ui::MouseEvent drag_event_small(ui::ET_MOUSE_DRAGGED, press_location,
- press_location, ui::EventTimeForNow(),
+ mouse_location.Offset(test_api_->GetMinimumDragDistance() / 2, 0);
+ ui::MouseEvent drag_event_small(ui::ET_MOUSE_DRAGGED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMouseDragged(drag_event_small);
EXPECT_EQ(views::InkDropState::ACTION_PENDING,
- ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(), IsEmpty());
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
+ IsEmpty());
- press_location.Offset(test_api_->GetMinimumDragDistance(), 0);
- ui::MouseEvent drag_event_large(ui::ET_MOUSE_DRAGGED, press_location,
- press_location, ui::EventTimeForNow(),
+ mouse_location.Offset(test_api_->GetMinimumDragDistance(), 0);
+ ui::MouseEvent drag_event_large(ui::ET_MOUSE_DRAGGED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMouseDragged(drag_event_large);
- EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(),
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
ElementsAre(views::InkDropState::HIDDEN));
- ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, press_location,
- press_location, ui::EventTimeForNow(),
+ ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMouseReleased(release_event);
- EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(), IsEmpty());
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
+ IsEmpty());
}
// Tests that dragging outside of a shelf item and back transitions ink drop
// states correctly.
-TEST_F(ShelfViewInkDropTest, WithoutMenuPressDragReleaseInside) {
+TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressDragReleaseInside) {
+ InitBrowserButtonInkDrop();
+
views::CustomButton* button = browser_button_;
- gfx::Point press_location = button->GetLocalBounds().CenterPoint();
+ gfx::Point mouse_location = button->GetLocalBounds().CenterPoint();
- ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, press_location,
- press_location, ui::EventTimeForNow(),
+ ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMousePressed(press_event);
EXPECT_EQ(views::InkDropState::ACTION_PENDING,
- ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(),
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
ElementsAre(views::InkDropState::ACTION_PENDING));
- press_location.Offset(test_api_->GetMinimumDragDistance() * 2, 0);
- ui::MouseEvent drag_event_outside(ui::ET_MOUSE_DRAGGED, press_location,
- press_location, ui::EventTimeForNow(),
+ mouse_location.Offset(test_api_->GetMinimumDragDistance() * 2, 0);
+ ui::MouseEvent drag_event_outside(ui::ET_MOUSE_DRAGGED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMouseDragged(drag_event_outside);
- EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(),
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
ElementsAre(views::InkDropState::HIDDEN));
- press_location.Offset(-test_api_->GetMinimumDragDistance() * 2, 0);
- ui::MouseEvent drag_event_inside(ui::ET_MOUSE_DRAGGED, press_location,
- press_location, ui::EventTimeForNow(),
+ mouse_location.Offset(-test_api_->GetMinimumDragDistance() * 2, 0);
+ ui::MouseEvent drag_event_inside(ui::ET_MOUSE_DRAGGED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMouseDragged(drag_event_inside);
- EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(), IsEmpty());
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
+ IsEmpty());
- ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, press_location,
- press_location, ui::EventTimeForNow(),
+ ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMouseReleased(release_event);
- EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(), IsEmpty());
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
+ IsEmpty());
}
// Tests that clicking on a shelf item that shows an app list menu transitions
// ink drop state correctly.
-TEST_F(ShelfViewInkDropTest, WithMenuPressRelease) {
+TEST_F(ShelfViewInkDropTest, ShelfButtonWithMenuPressRelease) {
+ InitBrowserButtonInkDrop();
+
// Set a delegate for the shelf item that returns an app list menu.
ShelfID browser_shelf_id = model_->items()[browser_index_].id;
ListMenuShelfItemDelegate* list_menu_delegate = new ListMenuShelfItemDelegate;
@@ -2231,15 +2572,15 @@ TEST_F(ShelfViewInkDropTest, WithMenuPressRelease) {
base::WrapUnique(list_menu_delegate));
views::CustomButton* button = browser_button_;
- gfx::Point press_location = button->GetLocalBounds().CenterPoint();
+ gfx::Point mouse_location = button->GetLocalBounds().CenterPoint();
- ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, press_location,
- press_location, ui::EventTimeForNow(),
+ ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMousePressed(press_event);
EXPECT_EQ(views::InkDropState::ACTION_PENDING,
- ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(),
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
ElementsAre(views::InkDropState::ACTION_PENDING));
base::ThreadTaskRunnerHandle::Get()->PostTask(
@@ -2248,12 +2589,13 @@ TEST_F(ShelfViewInkDropTest, WithMenuPressRelease) {
// Mouse release will spawn a menu which will then get closed by the above
// posted task.
- ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, press_location,
- press_location, ui::EventTimeForNow(),
+ ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, mouse_location,
+ mouse_location, ui::EventTimeForNow(),
ui::EF_LEFT_MOUSE_BUTTON, 0);
button->OnMouseReleased(release_event);
- EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_->GetTargetInkDropState());
- EXPECT_THAT(ink_drop_->GetAndResetRequestedStates(),
+ EXPECT_EQ(views::InkDropState::HIDDEN,
+ browser_button_ink_drop_->GetTargetInkDropState());
+ EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(),
ElementsAre(views::InkDropState::ACTIVATED,
views::InkDropState::DEACTIVATED));
}
« no previous file with comments | « ash/shelf/shelf_view.cc ('k') | ash/shell.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698