Index: content/browser/android/content_view_core_impl.cc |
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc |
index 382db082ec38eaec66f344b737c010195ad0ca3a..fcb5478243d5c5bf9b355566212f6e8f027f5ae0 100644 |
--- a/content/browser/android/content_view_core_impl.cc |
+++ b/content/browser/android/content_view_core_impl.cc |
@@ -1030,7 +1030,12 @@ void ContentViewCoreImpl::OnTouchEventHandlingBegin(JNIEnv* env, |
} |
void ContentViewCoreImpl::OnTouchEventHandlingEnd(JNIEnv* env, jobject obj) { |
- DCHECK(handling_touch_event_); |
+ if (!handling_touch_event_) |
+ return; |
+ |
+ GestureEventPacket gesture_packet; |
+ std::swap(gesture_packet, pending_gesture_packet_); |
+ |
handling_touch_event_ = false; |
RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid(); |
@@ -1039,8 +1044,7 @@ void ContentViewCoreImpl::OnTouchEventHandlingEnd(JNIEnv* env, jobject obj) { |
// Note: Order is important here, as the touch may be ack'ed synchronously |
TouchDispositionGestureFilter::PacketResult result = |
- touch_disposition_gesture_filter_.OnGestureEventPacket( |
- pending_gesture_packet_); |
+ touch_disposition_gesture_filter_.OnGestureEventPacket(gesture_packet); |
if (result != TouchDispositionGestureFilter::SUCCESS) { |
NOTREACHED() << "Invalid touch gesture sequence detected."; |
return; |