Chromium Code Reviews| Index: ui/views/controls/button/custom_button_unittest.cc |
| diff --git a/ui/views/controls/button/custom_button_unittest.cc b/ui/views/controls/button/custom_button_unittest.cc |
| index 74136c0c15e898ad393c6e5d0a23fba8938d5364..de3848493bc493431c5eaf02b482ea9f74e3e430 100644 |
| --- a/ui/views/controls/button/custom_button_unittest.cc |
| +++ b/ui/views/controls/button/custom_button_unittest.cc |
| @@ -57,8 +57,9 @@ class TestContextMenuController : public ContextMenuController { |
| class TestCustomButton : public CustomButton, public ButtonListener { |
| public: |
| - explicit TestCustomButton() |
| + explicit TestCustomButton(bool has_ink_drop_action_on_click) |
| : CustomButton(this) { |
| + set_has_ink_drop_action_on_click(has_ink_drop_action_on_click); |
| } |
| ~TestCustomButton() override {} |
| @@ -108,7 +109,7 @@ class CustomButtonTest : public ViewsTestBase { |
| widget_->Init(params); |
| widget_->Show(); |
| - button_ = new TestCustomButton(); |
| + button_ = new TestCustomButton(false); |
| widget_->SetContentsView(button_); |
| } |
| @@ -117,9 +118,10 @@ class CustomButtonTest : public ViewsTestBase { |
| ViewsTestBase::TearDown(); |
| } |
| - void CreateButtonWithInkDrop(std::unique_ptr<InkDrop> ink_drop) { |
| + void CreateButtonWithInkDrop(std::unique_ptr<InkDrop> ink_drop, |
| + bool has_ink_drop_action_on_click) { |
| delete button_; |
| - button_ = new TestCustomButton(); |
| + button_ = new TestCustomButton(has_ink_drop_action_on_click); |
| InkDropHostViewTestApi(button_).SetInkDrop(std::move(ink_drop)); |
| widget_->SetContentsView(button_); |
| } |
| @@ -348,7 +350,7 @@ TEST_F(CustomButtonTest, AsCustomButton) { |
| // may enter a different ink drop state. |
| TEST_F(CustomButtonTest, ButtonClickTogglesInkDrop) { |
| TestInkDrop* ink_drop = new TestInkDrop(); |
| - CreateButtonWithInkDrop(base::WrapUnique(ink_drop)); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), false); |
| ui::test::EventGenerator generator(widget()->GetNativeWindow()); |
| generator.set_current_location(gfx::Point(50, 50)); |
| @@ -363,7 +365,7 @@ TEST_F(CustomButtonTest, ButtonClickTogglesInkDrop) { |
| // Releasing capture should also reset PRESSED button state to NORMAL. |
| TEST_F(CustomButtonTest, CaptureLossHidesInkDrop) { |
| TestInkDrop* ink_drop = new TestInkDrop(); |
| - CreateButtonWithInkDrop(base::WrapUnique(ink_drop)); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), false); |
| ui::test::EventGenerator generator(widget()->GetNativeWindow()); |
| generator.set_current_location(gfx::Point(50, 50)); |
| @@ -384,7 +386,7 @@ TEST_F(CustomButtonTest, CaptureLossHidesInkDrop) { |
| TEST_F(CustomButtonTest, HideInkDropWhenShowingContextMenu) { |
| TestInkDrop* ink_drop = new TestInkDrop(); |
| - CreateButtonWithInkDrop(base::WrapUnique(ink_drop)); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), false); |
| TestContextMenuController context_menu_controller; |
| button()->set_context_menu_controller(&context_menu_controller); |
| button()->set_hide_ink_drop_when_showing_context_menu(true); |
| @@ -400,7 +402,7 @@ TEST_F(CustomButtonTest, HideInkDropWhenShowingContextMenu) { |
| TEST_F(CustomButtonTest, DontHideInkDropWhenShowingContextMenu) { |
| TestInkDrop* ink_drop = new TestInkDrop(); |
| - CreateButtonWithInkDrop(base::WrapUnique(ink_drop)); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), false); |
| TestContextMenuController context_menu_controller; |
| button()->set_context_menu_controller(&context_menu_controller); |
| button()->set_hide_ink_drop_when_showing_context_menu(false); |
| @@ -418,7 +420,7 @@ TEST_F(CustomButtonTest, HideInkDropOnBlur) { |
| gfx::Point center(10, 10); |
| TestInkDrop* ink_drop = new TestInkDrop(); |
| - CreateButtonWithInkDrop(base::WrapUnique(ink_drop)); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), false); |
| button()->OnFocus(); |
| @@ -438,7 +440,7 @@ TEST_F(CustomButtonTest, HideInkDropOnBlur) { |
| TEST_F(CustomButtonTest, InkDropAfterTryingToShowContextMenu) { |
| TestInkDrop* ink_drop = new TestInkDrop(); |
| - CreateButtonWithInkDrop(base::WrapUnique(ink_drop)); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), false); |
| button()->set_context_menu_controller(nullptr); |
| ink_drop->SetHovered(true); |
| @@ -455,7 +457,7 @@ TEST_F(CustomButtonTest, InkDropShowHideOnMouseDragged) { |
| gfx::Point oob(-1, -1); |
| TestInkDrop* ink_drop = new TestInkDrop(); |
| - CreateButtonWithInkDrop(base::WrapUnique(ink_drop)); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), false); |
|
bruthig
2016/06/22 19:07:29
nit: Can you add 'button()->set_notify_action(Cust
mohsen
2016/06/23 15:49:56
Done.
|
| button()->OnMousePressed(ui::MouseEvent( |
| ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(), |
| @@ -488,12 +490,54 @@ TEST_F(CustomButtonTest, InkDropShowHideOnMouseDragged) { |
| EXPECT_FALSE(button()->pressed()); |
| } |
| +// Tests that when button is set to notify on press, dragging mouse out and back |
| +// does not change the ink drop state. |
| +TEST_F(CustomButtonTest, InkDropShowHideOnMouseDraggedNotifyOnPress) { |
| + gfx::Point center(10, 10); |
| + gfx::Point oob(-1, -1); |
| + |
| + TestInkDrop* ink_drop = new TestInkDrop(); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), true); |
| + button()->set_notify_action(CustomButton::NOTIFY_ON_PRESS); |
| + |
| + button()->OnMousePressed(ui::MouseEvent( |
| + ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(), |
| + ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| + |
| + EXPECT_EQ(InkDropState::ACTION_TRIGGERED, ink_drop->GetTargetInkDropState()); |
| + EXPECT_TRUE(button()->pressed()); |
| + |
| + button()->OnMouseDragged( |
| + ui::MouseEvent(ui::ET_MOUSE_PRESSED, oob, oob, ui::EventTimeForNow(), |
| + ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| + |
| + EXPECT_EQ(InkDropState::ACTION_TRIGGERED, ink_drop->GetTargetInkDropState()); |
| + |
| + button()->OnMouseDragged(ui::MouseEvent( |
| + ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(), |
| + ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| + |
| + EXPECT_EQ(InkDropState::ACTION_TRIGGERED, ink_drop->GetTargetInkDropState()); |
| + |
| + button()->OnMouseDragged( |
| + ui::MouseEvent(ui::ET_MOUSE_PRESSED, oob, oob, ui::EventTimeForNow(), |
| + ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| + |
| + EXPECT_EQ(InkDropState::ACTION_TRIGGERED, ink_drop->GetTargetInkDropState()); |
| + |
| + button()->OnMouseReleased( |
| + ui::MouseEvent(ui::ET_MOUSE_PRESSED, oob, oob, ui::EventTimeForNow(), |
| + ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| + |
| + EXPECT_EQ(InkDropState::ACTION_TRIGGERED, ink_drop->GetTargetInkDropState()); |
| +} |
| + |
| TEST_F(CustomButtonTest, InkDropStaysHiddenWhileDragging) { |
| gfx::Point center(10, 10); |
| gfx::Point oob(-1, -1); |
| TestInkDrop* ink_drop = new TestInkDrop(); |
| - CreateButtonWithInkDrop(base::WrapUnique(ink_drop)); |
| + CreateButtonWithInkDrop(base::WrapUnique(ink_drop), false); |
| button()->OnMousePressed(ui::MouseEvent( |
| ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(), |