Chromium Code Reviews| Index: ui/events/gesture_detection/gesture_provider.cc |
| diff --git a/ui/events/gesture_detection/gesture_provider.cc b/ui/events/gesture_detection/gesture_provider.cc |
| index 6c581febd91294374a308c53e6675d7bec098932..d675a4752677da84899c1554b21769f4abc7f819 100644 |
| --- a/ui/events/gesture_detection/gesture_provider.cc |
| +++ b/ui/events/gesture_detection/gesture_provider.cc |
| @@ -35,16 +35,24 @@ GestureEventData CreateGesture(EventType type, |
| base::TimeTicks time, |
| float x, |
| float y, |
| + size_t touch_point_count, |
| const GestureEventDetails& details) { |
|
jdduke (slow)
2014/04/08 21:07:41
Might as well pass this by value, then you can cal
tdresser
2014/04/09 14:50:48
I'm still passing by reference, based on the chang
|
| - return GestureEventData(type, motion_event_id, time, x, y, details); |
| + DCHECK_NE(0u, touch_point_count); |
| + GestureEventDetails d = details; |
| + d.set_touch_points(touch_point_count); |
| + return GestureEventData(type, motion_event_id, time, x, y, d); |
| } |
| GestureEventData CreateGesture(EventType type, |
| int motion_event_id, |
| base::TimeTicks time, |
| float x, |
| - float y) { |
| - return GestureEventData(type, motion_event_id, time, x, y); |
| + float y, |
| + size_t touch_point_count) { |
| + DCHECK_NE(0u, touch_point_count); |
| + GestureEventDetails details; |
| + details.set_touch_points(touch_point_count); |
| + return GestureEventData(type, motion_event_id, time, x, y, details); |
|
jdduke (slow)
2014/04/08 21:07:41
Hmm, now that we only use one constructor for Gest
tdresser
2014/04/09 14:50:48
Is this what you were thinking?
|
| } |
| GestureEventData CreateGesture(EventType type, |
| @@ -55,13 +63,18 @@ GestureEventData CreateGesture(EventType type, |
| event.GetEventTime(), |
| event.GetX(), |
| event.GetY(), |
| + event.GetPointerCount(), |
| details); |
| } |
| GestureEventData CreateGesture(EventType type, |
| const MotionEvent& event) { |
| - return CreateGesture( |
| - type, event.GetId(), event.GetEventTime(), event.GetX(), event.GetY()); |
| + return CreateGesture(type, |
| + event.GetId(), |
| + event.GetEventTime(), |
| + event.GetX(), |
| + event.GetY(), |
| + event.GetPointerCount()); |
| } |
| GestureEventDetails CreateTapGestureDetails(EventType type, |
| @@ -123,8 +136,12 @@ class GestureProvider::ScaleGestureListenerImpl |
| const MotionEvent& e) OVERRIDE { |
| if (!pinch_event_sent_) |
| return; |
| - provider_->Send(CreateGesture( |
| - ET_GESTURE_PINCH_END, e.GetId(), detector.GetEventTime(), 0, 0)); |
| + provider_->Send(CreateGesture(ET_GESTURE_PINCH_END, |
| + e.GetId(), |
| + detector.GetEventTime(), |
| + 0, |
| + 0, |
| + e.GetPointerCount())); |
| pinch_event_sent_ = false; |
| } |
| @@ -138,7 +155,8 @@ class GestureProvider::ScaleGestureListenerImpl |
| e.GetId(), |
| detector.GetEventTime(), |
| detector.GetFocusX(), |
| - detector.GetFocusY())); |
| + detector.GetFocusY(), |
| + e.GetPointerCount())); |
| } |
| float scale = detector.GetScaleFactor(); |
| @@ -163,6 +181,7 @@ class GestureProvider::ScaleGestureListenerImpl |
| detector.GetEventTime(), |
| detector.GetFocusX(), |
| detector.GetFocusY(), |
| + e.GetPointerCount(), |
| pinch_details)); |
| return true; |
| } |
| @@ -274,6 +293,9 @@ class GestureProvider::GestureListenerImpl |
| const MotionEvent& e2, |
| float raw_distance_x, |
| float raw_distance_y) OVERRIDE { |
| + DCHECK_NE(0u, e1.GetPointerCount()); |
| + DCHECK_NE(0u, e2.GetPointerCount()); |
| + |
| float distance_x = raw_distance_x; |
| float distance_y = raw_distance_y; |
| if (!seen_first_scroll_event_) { |
| @@ -305,12 +327,8 @@ class GestureProvider::GestureListenerImpl |
| // scroll deltas are in the opposite direction. |
| GestureEventDetails scroll_details( |
| ET_GESTURE_SCROLL_BEGIN, -raw_distance_x, -raw_distance_y); |
| - provider_->Send(CreateGesture(ET_GESTURE_SCROLL_BEGIN, |
| - e2.GetId(), |
| - e2.GetEventTime(), |
|
jdduke (slow)
2014/04/08 21:07:41
This is a change in behavior. GestureScrollBegin
tdresser
2014/04/09 14:50:48
Done.
|
| - e1.GetX(), |
| - e1.GetY(), |
| - scroll_details)); |
| + provider_->Send( |
| + CreateGesture(ET_GESTURE_SCROLL_BEGIN, e2, scroll_details)); |
| } |
| // distance_x and distance_y is the scrolling offset since last OnScroll. |
| @@ -544,6 +562,9 @@ GestureProvider::~GestureProvider() {} |
| bool GestureProvider::OnTouchEvent(const MotionEvent& event) { |
| TRACE_EVENT1("input", "GestureProvider::OnTouchEvent", |
| "action", GetMotionEventActionName(event.GetAction())); |
| + |
| + DCHECK_NE(0u, event.GetPointerCount()); |
| + |
| if (!CanHandle(event)) |
| return false; |
| @@ -667,7 +688,8 @@ void GestureProvider::Send(const GestureEventData& gesture) { |
| gesture.motion_event_id, |
| gesture.time, |
| gesture.x, |
| - gesture.y)); |
| + gesture.y, |
| + gesture.details.touch_points())); |
| needs_tap_ending_event_ = false; |
| break; |
| case ET_GESTURE_DOUBLE_TAP: |
| @@ -702,7 +724,8 @@ void GestureProvider::Send(const GestureEventData& gesture) { |
| gesture.motion_event_id, |
| gesture.time, |
| gesture.x, |
| - gesture.y)); |
| + gesture.y, |
| + gesture.details.touch_points())); |
| pinch_in_progress_ = true; |
| break; |
| case ET_GESTURE_PINCH_END: |
| @@ -731,7 +754,8 @@ void GestureProvider::SendTapCancelIfNecessary( |
| gesture.motion_event_id, |
| gesture.time, |
| gesture.x, |
| - gesture.y)); |
| + gesture.y, |
| + gesture.details.touch_points())); |
| } |
| bool GestureProvider::SendLongTapIfNecessary(const MotionEvent& event) { |