| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <math.h> | 5 #include <math.h> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 void SimulateGestureFlingStartEvent( | 235 void SimulateGestureFlingStartEvent( |
| 236 float velocityX, | 236 float velocityX, |
| 237 float velocityY, | 237 float velocityY, |
| 238 WebGestureEvent::SourceDevice sourceDevice) { | 238 WebGestureEvent::SourceDevice sourceDevice) { |
| 239 SimulateGestureEvent( | 239 SimulateGestureEvent( |
| 240 SyntheticWebGestureEventBuilder::BuildFling(velocityX, | 240 SyntheticWebGestureEventBuilder::BuildFling(velocityX, |
| 241 velocityY, | 241 velocityY, |
| 242 sourceDevice)); | 242 sourceDevice)); |
| 243 } | 243 } |
| 244 | 244 |
| 245 void SimulateTouchEvent(WebInputEvent::Type type) { | |
| 246 touch_event_.ResetPoints(); | |
| 247 int index = PressTouchPoint(0, 0); | |
| 248 switch (type) { | |
| 249 case WebInputEvent::TouchStart: | |
| 250 // Already handled by |PressTouchPoint()|. | |
| 251 break; | |
| 252 case WebInputEvent::TouchMove: | |
| 253 MoveTouchPoint(index, 5, 5); | |
| 254 break; | |
| 255 case WebInputEvent::TouchEnd: | |
| 256 ReleaseTouchPoint(index); | |
| 257 break; | |
| 258 case WebInputEvent::TouchCancel: | |
| 259 CancelTouchPoint(index); | |
| 260 break; | |
| 261 default: | |
| 262 FAIL() << "Invalid touch event type."; | |
| 263 break; | |
| 264 } | |
| 265 SendTouchEvent(); | |
| 266 } | |
| 267 | |
| 268 void SetTouchTimestamp(base::TimeDelta timestamp) { | 245 void SetTouchTimestamp(base::TimeDelta timestamp) { |
| 269 touch_event_.SetTimestamp(timestamp); | 246 touch_event_.SetTimestamp(timestamp); |
| 270 } | 247 } |
| 271 | 248 |
| 272 void SendTouchEvent() { | 249 void SendTouchEvent() { |
| 273 input_router_->SendTouchEvent( | 250 input_router_->SendTouchEvent( |
| 274 TouchEventWithLatencyInfo(touch_event_, ui::LatencyInfo())); | 251 TouchEventWithLatencyInfo(touch_event_, ui::LatencyInfo())); |
| 275 touch_event_.ResetPoints(); | 252 touch_event_.ResetPoints(); |
| 276 } | 253 } |
| 277 | 254 |
| (...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 779 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( | 756 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
| 780 InputMsg_HandleInputEvent::ID)); | 757 InputMsg_HandleInputEvent::ID)); |
| 781 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 758 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 782 | 759 |
| 783 // Check that the correct unhandled wheel event was received. | 760 // Check that the correct unhandled wheel event was received. |
| 784 EXPECT_EQ(ack_handler_->acked_wheel_event().deltaY, -5); | 761 EXPECT_EQ(ack_handler_->acked_wheel_event().deltaY, -5); |
| 785 } | 762 } |
| 786 | 763 |
| 787 TEST_F(InputRouterImplTest, TouchTypesIgnoringAck) { | 764 TEST_F(InputRouterImplTest, TouchTypesIgnoringAck) { |
| 788 OnHasTouchEventHandlers(true); | 765 OnHasTouchEventHandlers(true); |
| 766 // Only acks for TouchCancel should always be ignored. |
| 767 ASSERT_FALSE(WebInputEventTraits::IgnoresAckDisposition( |
| 768 GetEventWithType(WebInputEvent::TouchStart))); |
| 769 ASSERT_FALSE(WebInputEventTraits::IgnoresAckDisposition( |
| 770 GetEventWithType(WebInputEvent::TouchMove))); |
| 771 ASSERT_FALSE(WebInputEventTraits::IgnoresAckDisposition( |
| 772 GetEventWithType(WebInputEvent::TouchEnd))); |
| 789 | 773 |
| 790 int start_type = static_cast<int>(WebInputEvent::TouchStart); | 774 // Precede the TouchCancel with an appropriate TouchStart; |
| 791 int end_type = static_cast<int>(WebInputEvent::TouchCancel); | 775 PressTouchPoint(1, 1); |
| 792 ASSERT_LT(start_type, end_type); | 776 SendTouchEvent(); |
| 793 for (int i = start_type; i <= end_type; ++i) { | 777 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); |
| 794 WebInputEvent::Type type = static_cast<WebInputEvent::Type>(i); | 778 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 795 if (!WebInputEventTraits::IgnoresAckDisposition(GetEventWithType(type))) | 779 ASSERT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 796 continue; | 780 ASSERT_EQ(0, client_->in_flight_event_count()); |
| 797 | 781 |
| 798 // The TouchEventQueue requires an initial TouchStart for it to begin | 782 // The TouchCancel ack is always ignored. |
| 799 // forwarding other touch event types. | 783 CancelTouchPoint(0); |
| 800 if (type != WebInputEvent::TouchStart) { | 784 SendTouchEvent(); |
| 801 SimulateTouchEvent(WebInputEvent::TouchStart); | 785 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 802 SendInputEventACK(WebInputEvent::TouchStart, | 786 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 803 INPUT_EVENT_ACK_STATE_CONSUMED); | 787 EXPECT_EQ(0, client_->in_flight_event_count()); |
| 804 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); | 788 EXPECT_FALSE(HasPendingEvents()); |
| 805 ASSERT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 789 SendInputEventACK(WebInputEvent::TouchCancel, |
| 806 ASSERT_EQ(0, client_->in_flight_event_count()); | 790 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 807 } | 791 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 808 | 792 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); |
| 809 SimulateTouchEvent(type); | 793 EXPECT_FALSE(HasPendingEvents()); |
| 810 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | |
| 811 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | |
| 812 EXPECT_EQ(0, client_->in_flight_event_count()); | |
| 813 EXPECT_FALSE(HasPendingEvents()); | |
| 814 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 815 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | |
| 816 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); | |
| 817 EXPECT_FALSE(HasPendingEvents()); | |
| 818 } | |
| 819 } | 794 } |
| 820 | 795 |
| 821 TEST_F(InputRouterImplTest, GestureTypesIgnoringAck) { | 796 TEST_F(InputRouterImplTest, GestureTypesIgnoringAck) { |
| 822 // We test every gesture type, ensuring that the stream of gestures is valid. | 797 // We test every gesture type, ensuring that the stream of gestures is valid. |
| 823 const int kEventTypesLength = 29; | 798 const int kEventTypesLength = 29; |
| 824 WebInputEvent::Type eventTypes[kEventTypesLength] = { | 799 WebInputEvent::Type eventTypes[kEventTypesLength] = { |
| 825 WebInputEvent::GestureTapDown, | 800 WebInputEvent::GestureTapDown, |
| 826 WebInputEvent::GestureShowPress, | 801 WebInputEvent::GestureShowPress, |
| 827 WebInputEvent::GestureTapCancel, | 802 WebInputEvent::GestureTapCancel, |
| 828 WebInputEvent::GestureScrollBegin, | 803 WebInputEvent::GestureScrollBegin, |
| (...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1734 client_overscroll = client_->GetAndResetOverscroll(); | 1709 client_overscroll = client_->GetAndResetOverscroll(); |
| 1735 EXPECT_EQ(wheel_overscroll.accumulated_overscroll, | 1710 EXPECT_EQ(wheel_overscroll.accumulated_overscroll, |
| 1736 client_overscroll.accumulated_overscroll); | 1711 client_overscroll.accumulated_overscroll); |
| 1737 EXPECT_EQ(wheel_overscroll.latest_overscroll_delta, | 1712 EXPECT_EQ(wheel_overscroll.latest_overscroll_delta, |
| 1738 client_overscroll.latest_overscroll_delta); | 1713 client_overscroll.latest_overscroll_delta); |
| 1739 EXPECT_EQ(wheel_overscroll.current_fling_velocity, | 1714 EXPECT_EQ(wheel_overscroll.current_fling_velocity, |
| 1740 client_overscroll.current_fling_velocity); | 1715 client_overscroll.current_fling_velocity); |
| 1741 } | 1716 } |
| 1742 | 1717 |
| 1743 } // namespace content | 1718 } // namespace content |
| OLD | NEW |