| 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 "ui/views/controls/button/custom_button.h" | 5 #include "ui/views/controls/button/custom_button.h" |
| 6 | 6 |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 #include "ui/base/layout.h" | 8 #include "ui/base/layout.h" |
| 9 #include "ui/events/event_utils.h" | 9 #include "ui/events/event_utils.h" |
| 10 #include "ui/gfx/screen.h" | 10 #include "ui/gfx/screen.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 explicit TestCustomButton() | 32 explicit TestCustomButton() |
| 33 : CustomButton(this) { | 33 : CustomButton(this) { |
| 34 } | 34 } |
| 35 | 35 |
| 36 ~TestCustomButton() override {} | 36 ~TestCustomButton() override {} |
| 37 | 37 |
| 38 void ButtonPressed(Button* sender, const ui::Event& event) override { | 38 void ButtonPressed(Button* sender, const ui::Event& event) override { |
| 39 notified_ = true; | 39 notified_ = true; |
| 40 } | 40 } |
| 41 | 41 |
| 42 void OnClickCanceled(const ui::Event& event) override { |
| 43 notified_no_click_ = true; |
| 44 } |
| 45 |
| 42 bool notified() { return notified_; } | 46 bool notified() { return notified_; } |
| 47 bool notified_no_click() { return notified_no_click_; } |
| 43 | 48 |
| 44 void Reset() { notified_ = false; } | 49 void Reset() { |
| 50 notified_ = false; |
| 51 notified_no_click_ = false; |
| 52 } |
| 45 | 53 |
| 46 private: | 54 private: |
| 47 bool notified_ = false; | 55 bool notified_ = false; |
| 56 bool notified_no_click_ = false; |
| 48 | 57 |
| 49 DISALLOW_COPY_AND_ASSIGN(TestCustomButton); | 58 DISALLOW_COPY_AND_ASSIGN(TestCustomButton); |
| 50 }; | 59 }; |
| 51 | 60 |
| 52 class CustomButtonTest : public ViewsTestBase { | 61 class CustomButtonTest : public ViewsTestBase { |
| 53 public: | 62 public: |
| 54 CustomButtonTest() {} | 63 CustomButtonTest() {} |
| 55 ~CustomButtonTest() override {} | 64 ~CustomButtonTest() override {} |
| 56 | 65 |
| 57 void SetUp() override { | 66 void SetUp() override { |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 | 206 |
| 198 // The button should no longer notify on mouse release. | 207 // The button should no longer notify on mouse release. |
| 199 button()->Reset(); | 208 button()->Reset(); |
| 200 button()->OnMouseReleased(ui::MouseEvent( | 209 button()->OnMouseReleased(ui::MouseEvent( |
| 201 ui::ET_MOUSE_RELEASED, center, center, ui::EventTimeForNow(), | 210 ui::ET_MOUSE_RELEASED, center, center, ui::EventTimeForNow(), |
| 202 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); | 211 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| 203 EXPECT_EQ(CustomButton::STATE_HOVERED, button()->state()); | 212 EXPECT_EQ(CustomButton::STATE_HOVERED, button()->state()); |
| 204 EXPECT_FALSE(button()->notified()); | 213 EXPECT_FALSE(button()->notified()); |
| 205 } | 214 } |
| 206 | 215 |
| 216 // Tests that OnClickCanceled gets called when NotifyClick is not expected |
| 217 // anymore. |
| 218 TEST_F(CustomButtonTest, NotifyActionNoClick) { |
| 219 gfx::Point center(10, 10); |
| 220 |
| 221 // By default the button should notify its listener on mouse release. |
| 222 button()->OnMousePressed(ui::MouseEvent( |
| 223 ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(), |
| 224 ui::EF_RIGHT_MOUSE_BUTTON, ui::EF_RIGHT_MOUSE_BUTTON)); |
| 225 EXPECT_FALSE(button()->notified_no_click()); |
| 226 |
| 227 button()->OnMouseReleased(ui::MouseEvent( |
| 228 ui::ET_MOUSE_RELEASED, center, center, ui::EventTimeForNow(), |
| 229 ui::EF_RIGHT_MOUSE_BUTTON, ui::EF_RIGHT_MOUSE_BUTTON)); |
| 230 EXPECT_TRUE(button()->notified_no_click()); |
| 231 |
| 232 // Set the notify action to its listener on mouse press. |
| 233 button()->Reset(); |
| 234 button()->set_notify_action(CustomButton::NOTIFY_ON_PRESS); |
| 235 button()->OnMousePressed(ui::MouseEvent( |
| 236 ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(), |
| 237 ui::EF_RIGHT_MOUSE_BUTTON, ui::EF_RIGHT_MOUSE_BUTTON)); |
| 238 EXPECT_TRUE(button()->notified_no_click()); |
| 239 |
| 240 // The button should no longer notify on mouse release. |
| 241 button()->Reset(); |
| 242 button()->OnMouseReleased(ui::MouseEvent( |
| 243 ui::ET_MOUSE_RELEASED, center, center, ui::EventTimeForNow(), |
| 244 ui::EF_RIGHT_MOUSE_BUTTON, ui::EF_RIGHT_MOUSE_BUTTON)); |
| 245 EXPECT_FALSE(button()->notified_no_click()); |
| 246 } |
| 247 |
| 207 // No touch on desktop Mac. Tracked in http://crbug.com/445520. | 248 // No touch on desktop Mac. Tracked in http://crbug.com/445520. |
| 208 #if !defined(OS_MACOSX) || defined(USE_AURA) | 249 #if !defined(OS_MACOSX) || defined(USE_AURA) |
| 209 | 250 |
| 210 namespace { | 251 namespace { |
| 211 | 252 |
| 212 void PerformGesture(CustomButton* button, ui::EventType event_type) { | 253 void PerformGesture(CustomButton* button, ui::EventType event_type) { |
| 213 ui::GestureEventDetails gesture_details(event_type); | 254 ui::GestureEventDetails gesture_details(event_type); |
| 214 base::TimeDelta time_stamp = base::TimeDelta::FromMicroseconds(0); | 255 base::TimeDelta time_stamp = base::TimeDelta::FromMicroseconds(0); |
| 215 ui::GestureEvent gesture_event(0, 0, 0, time_stamp, gesture_details); | 256 ui::GestureEvent gesture_event(0, 0, 0, time_stamp, gesture_details); |
| 216 button->OnGestureEvent(&gesture_event); | 257 button->OnGestureEvent(&gesture_event); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 EXPECT_FALSE(CustomButton::AsCustomButton(&label)); | 301 EXPECT_FALSE(CustomButton::AsCustomButton(&label)); |
| 261 | 302 |
| 262 Link link(text); | 303 Link link(text); |
| 263 EXPECT_FALSE(CustomButton::AsCustomButton(&link)); | 304 EXPECT_FALSE(CustomButton::AsCustomButton(&link)); |
| 264 | 305 |
| 265 Textfield textfield; | 306 Textfield textfield; |
| 266 EXPECT_FALSE(CustomButton::AsCustomButton(&textfield)); | 307 EXPECT_FALSE(CustomButton::AsCustomButton(&textfield)); |
| 267 } | 308 } |
| 268 | 309 |
| 269 } // namespace views | 310 } // namespace views |
| OLD | NEW |