Chromium Code Reviews| Index: ui/events/gesture_detection/gesture_detector.cc |
| diff --git a/ui/events/gesture_detection/gesture_detector.cc b/ui/events/gesture_detection/gesture_detector.cc |
| index ef0e71f6d5dcd14368a65ebbfceae64f6e354728..bfbd73b3885bd82c4105ccf851435e7b1589be13 100644 |
| --- a/ui/events/gesture_detection/gesture_detector.cc |
| +++ b/ui/events/gesture_detection/gesture_detector.cc |
| @@ -246,6 +246,7 @@ bool GestureDetector::OnTouchEvent(const MotionEvent& ev) { |
| handled = HandleSwipeIfNeeded(ev, vx_total / count, vy_total / count); |
| if (two_finger_tap_allowed_for_gesture_ && ev.GetPointerCount() == 2 && |
| + secondary_pointer_down_event_ && |
| (ev.GetEventTime() - secondary_pointer_down_event_->GetEventTime() <= |
| two_finger_tap_timeout_)) { |
| handled = listener_->OnTwoFingerTap(*current_down_event_, ev); |
| @@ -554,12 +555,9 @@ bool GestureDetector::IsWithinTouchSlop(const MotionEvent& ev) { |
| for (size_t i = 0; i < ev.GetPointerCount(); i++) { |
| const int pointer_id = ev.GetPointerId(i); |
| const MotionEvent* source_pointer_down_event = GetSourcePointerDownEvent( |
| - *current_down_event_, |
| - (maximum_pointer_count_ > 1 && secondary_pointer_down_event_) |
| - ? *secondary_pointer_down_event_ |
| - : *current_down_event_, |
| + current_down_event_.get(), secondary_pointer_down_event_.get(), |
| pointer_id); |
| - DCHECK(source_pointer_down_event); |
| + |
| if (!source_pointer_down_event) |
| return false; |
| @@ -579,18 +577,22 @@ bool GestureDetector::IsWithinTouchSlop(const MotionEvent& ev) { |
| } |
| const MotionEvent* GestureDetector::GetSourcePointerDownEvent( |
| - const MotionEvent& current_down_event, |
| - const MotionEvent& secondary_pointer_down_event, |
| + const MotionEvent* current_down_event, |
| + const MotionEvent* secondary_pointer_down_event, |
| const int pointer_id) { |
| - if (current_down_event.GetPointerId(0) == pointer_id) |
| - return ¤t_down_event; |
| + if (current_down_event->GetPointerId(0) == pointer_id) |
| + return current_down_event; |
| + |
| + // Secondary pointer down event is missing, the source pointer down event is |
| + // not found. |
|
tdresser
2017/05/11 16:57:27
Add a link to the bug, and mention that this is so
sahel
2017/05/11 17:26:19
Done.
|
| + if (!secondary_pointer_down_event) |
| + return nullptr; |
| - for (size_t i = 0; i < secondary_pointer_down_event.GetPointerCount(); i++) { |
| - if (secondary_pointer_down_event.GetPointerId(i) == pointer_id) |
| - return &secondary_pointer_down_event; |
| + for (size_t i = 0; i < secondary_pointer_down_event->GetPointerCount(); i++) { |
| + if (secondary_pointer_down_event->GetPointerId(i) == pointer_id) |
| + return secondary_pointer_down_event; |
| } |
| - NOTREACHED(); |
| return nullptr; |
| } |