| Index: ui/views/controls/button/menu_button_unittest.cc
|
| diff --git a/ui/views/controls/button/menu_button_unittest.cc b/ui/views/controls/button/menu_button_unittest.cc
|
| index a260d166ff4bb756c42827091c39e6aae6ce32c6..8a7064afc4db506dcad3ebb8ef7befa845962ad4 100644
|
| --- a/ui/views/controls/button/menu_button_unittest.cc
|
| +++ b/ui/views/controls/button/menu_button_unittest.cc
|
| @@ -30,6 +30,7 @@ class MenuButtonTest : public ViewsTestBase {
|
| ~MenuButtonTest() override {}
|
|
|
| void TearDown() override {
|
| + generator_.reset();
|
| if (widget_ && !widget_->IsClosed())
|
| widget_->Close();
|
|
|
| @@ -38,6 +39,7 @@ class MenuButtonTest : public ViewsTestBase {
|
|
|
| Widget* widget() { return widget_; }
|
| MenuButton* button() { return button_; }
|
| + ui::test::EventGenerator* generator() { return generator_.get(); }
|
|
|
| protected:
|
| // Creates a MenuButton with no button listener.
|
| @@ -54,6 +56,11 @@ class MenuButtonTest : public ViewsTestBase {
|
| private:
|
| void CreateMenuButton(MenuButtonListener* menu_button_listener) {
|
| CreateWidget();
|
| + generator_.reset(new ui::test::EventGenerator(GetContext(),
|
| + widget_->GetNativeWindow()));
|
| + // Set initial mouse location in a consistent way so that the menu button we
|
| + // are about to create initializes its hover state in a consistent manner.
|
| + generator_->set_current_location(gfx::Point(10, 10));
|
|
|
| const base::string16 label(ASCIIToUTF16("button"));
|
| button_ = new MenuButton(label, menu_button_listener, false);
|
| @@ -75,6 +82,9 @@ class MenuButtonTest : public ViewsTestBase {
|
|
|
| Widget* widget_;
|
| MenuButton* button_;
|
| + scoped_ptr<ui::test::EventGenerator> generator_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MenuButtonTest);
|
| };
|
|
|
| class TestButtonListener : public ButtonListener {
|
| @@ -266,10 +276,7 @@ TEST_F(MenuButtonTest, ActivateDropDownOnMouseClick) {
|
| TestMenuButtonListener menu_button_listener;
|
| CreateMenuButtonWithMenuButtonListener(&menu_button_listener);
|
|
|
| - ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow());
|
| -
|
| - generator.set_current_location(gfx::Point(10, 10));
|
| - generator.ClickLeftButton();
|
| + generator()->ClickLeftButton();
|
|
|
| // Check that MenuButton has notified the listener, while it was in pressed
|
| // state.
|
| @@ -282,8 +289,7 @@ TEST_F(MenuButtonTest, MenuButtonPressedLock) {
|
| CreateMenuButtonWithNoListener();
|
|
|
| // Move the mouse over the button; the button should be in a hovered state.
|
| - ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow());
|
| - generator.MoveMouseTo(gfx::Point(10, 10));
|
| + generator()->MoveMouseTo(gfx::Point(10, 10));
|
| EXPECT_EQ(Button::STATE_HOVERED, button()->state());
|
|
|
| // Introduce a PressedLock, which should make the button pressed.
|
| @@ -292,7 +298,7 @@ TEST_F(MenuButtonTest, MenuButtonPressedLock) {
|
| EXPECT_EQ(Button::STATE_PRESSED, button()->state());
|
|
|
| // Even if we move the mouse outside of the button, it should remain pressed.
|
| - generator.MoveMouseTo(gfx::Point(300, 10));
|
| + generator()->MoveMouseTo(gfx::Point(300, 10));
|
| EXPECT_EQ(Button::STATE_PRESSED, button()->state());
|
|
|
| // Creating a new lock should obviously keep the button pressed.
|
| @@ -309,7 +315,7 @@ TEST_F(MenuButtonTest, MenuButtonPressedLock) {
|
| EXPECT_EQ(Button::STATE_NORMAL, button()->state());
|
|
|
| // ...And it should respond to mouse movement again.
|
| - generator.MoveMouseTo(gfx::Point(10, 10));
|
| + generator()->MoveMouseTo(gfx::Point(10, 10));
|
| EXPECT_EQ(Button::STATE_HOVERED, button()->state());
|
|
|
| // Test that the button returns to the appropriate state after the press; if
|
| @@ -327,7 +333,7 @@ TEST_F(MenuButtonTest, MenuButtonPressedLock) {
|
| pressed_lock1.reset();
|
| EXPECT_EQ(Button::STATE_DISABLED, button()->state());
|
|
|
| - generator.MoveMouseTo(gfx::Point(300, 10));
|
| + generator()->MoveMouseTo(gfx::Point(300, 10));
|
|
|
| // Edge case: the button is disabled, a pressed lock is added, and then the
|
| // button is re-enabled. It should be enabled after the lock is removed.
|
| @@ -345,10 +351,9 @@ TEST_F(MenuButtonTest, PressedStateWithSiblingMenu) {
|
| CreateMenuButtonWithMenuButtonListener(&listener);
|
|
|
| // Move the mouse over the button; the button should be in a hovered state.
|
| - ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow());
|
| - generator.MoveMouseTo(gfx::Point(10, 10));
|
| + generator()->MoveMouseTo(gfx::Point(10, 10));
|
| EXPECT_EQ(Button::STATE_HOVERED, button()->state());
|
| - generator.ClickLeftButton();
|
| + generator()->ClickLeftButton();
|
| // Test is continued in TestShowSiblingButtonListener::OnMenuButtonClicked().
|
| }
|
|
|
| @@ -360,13 +365,10 @@ TEST_F(MenuButtonTest, DraggableMenuButtonActivatesOnRelease) {
|
| TestDragController drag_controller;
|
| button()->set_drag_controller(&drag_controller);
|
|
|
| - ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow());
|
| -
|
| - generator.set_current_location(gfx::Point(10, 10));
|
| - generator.PressLeftButton();
|
| + generator()->PressLeftButton();
|
| EXPECT_EQ(nullptr, menu_button_listener.last_source());
|
|
|
| - generator.ReleaseLeftButton();
|
| + generator()->ReleaseLeftButton();
|
| EXPECT_EQ(button(), menu_button_listener.last_source());
|
| EXPECT_EQ(Button::STATE_HOVERED, menu_button_listener.last_source_state());
|
| }
|
| @@ -385,9 +387,7 @@ TEST_F(MenuButtonTest, DraggableMenuButtonDoesNotActivateOnDrag) {
|
| SetDragDropClient(GetContext(), &drag_client);
|
| button()->PrependPreTargetHandler(&drag_client);
|
|
|
| - ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow());
|
| - generator.set_current_location(gfx::Point(10, 10));
|
| - generator.DragMouseBy(10, 0);
|
| + generator()->DragMouseBy(10, 0);
|
| EXPECT_EQ(nullptr, menu_button_listener.last_source());
|
| EXPECT_EQ(Button::STATE_NORMAL, menu_button_listener.last_source_state());
|
| }
|
| @@ -403,14 +403,12 @@ TEST_F(MenuButtonTest, ActivateDropDownOnGestureTap) {
|
| TestMenuButtonListener menu_button_listener;
|
| CreateMenuButtonWithMenuButtonListener(&menu_button_listener);
|
|
|
| - ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow());
|
| -
|
| // Move the mouse outside the menu button so that it doesn't impact the
|
| // button state.
|
| - generator.MoveMouseTo(400, 400);
|
| + generator()->MoveMouseTo(400, 400);
|
| EXPECT_FALSE(button()->IsMouseHovered());
|
|
|
| - generator.GestureTapAt(gfx::Point(10, 10));
|
| + generator()->GestureTapAt(gfx::Point(10, 10));
|
|
|
| // Check that MenuButton has notified the listener, while it was in pressed
|
| // state.
|
| @@ -426,12 +424,10 @@ TEST_F(MenuButtonTest, ActivateDropDownOnGestureTap) {
|
| TEST_F(MenuButtonTest, TouchFeedbackDuringTap) {
|
| TestMenuButtonListener menu_button_listener;
|
| CreateMenuButtonWithMenuButtonListener(&menu_button_listener);
|
| - ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow());
|
| - generator.set_current_location(gfx::Point(10, 10));
|
| - generator.PressTouch();
|
| + generator()->PressTouch();
|
| EXPECT_EQ(Button::STATE_HOVERED, button()->state());
|
|
|
| - generator.ReleaseTouch();
|
| + generator()->ReleaseTouch();
|
| EXPECT_EQ(Button::STATE_HOVERED, menu_button_listener.last_source_state());
|
| }
|
|
|
| @@ -440,13 +436,11 @@ TEST_F(MenuButtonTest, TouchFeedbackDuringTap) {
|
| TEST_F(MenuButtonTest, TouchFeedbackDuringTapCancel) {
|
| TestMenuButtonListener menu_button_listener;
|
| CreateMenuButtonWithMenuButtonListener(&menu_button_listener);
|
| - ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow());
|
| - generator.set_current_location(gfx::Point(10, 10));
|
| - generator.PressTouch();
|
| + generator()->PressTouch();
|
| EXPECT_EQ(Button::STATE_HOVERED, button()->state());
|
|
|
| - generator.MoveTouch(gfx::Point(10, 30));
|
| - generator.ReleaseTouch();
|
| + generator()->MoveTouch(gfx::Point(10, 30));
|
| + generator()->ReleaseTouch();
|
| EXPECT_EQ(Button::STATE_NORMAL, button()->state());
|
| EXPECT_EQ(nullptr, menu_button_listener.last_source());
|
| }
|
|
|