Index: ui/events/gestures/gesture_provider_aura.cc |
diff --git a/ui/events/gestures/gesture_provider_aura.cc b/ui/events/gestures/gesture_provider_aura.cc |
index 10f7ab10bb39901b73277f5679b6487340d6964b..d028aef4b27649b034b8bc37c5155426d0410d23 100644 |
--- a/ui/events/gestures/gesture_provider_aura.cc |
+++ b/ui/events/gestures/gesture_provider_aura.cc |
@@ -22,14 +22,15 @@ GestureProviderAura::GestureProviderAura(GestureProviderAuraClient* client) |
GestureProviderAura::~GestureProviderAura() {} |
-bool GestureProviderAura::OnTouchEvent(const TouchEvent& event) { |
- int index = pointer_state_.FindPointerIndexOfId(event.touch_id()); |
+bool GestureProviderAura::OnTouchEvent(TouchEvent* event) { |
+ DCHECK(event); |
+ int index = pointer_state_.FindPointerIndexOfId(event->touch_id()); |
bool pointer_id_is_active = index != -1; |
- if (event.type() == ET_TOUCH_PRESSED && pointer_id_is_active) { |
+ if (event->type() == ET_TOUCH_PRESSED && pointer_id_is_active) { |
// Ignore touch press events if we already believe the pointer is down. |
return false; |
- } else if (event.type() != ET_TOUCH_PRESSED && !pointer_id_is_active) { |
+ } else if (event->type() != ET_TOUCH_PRESSED && !pointer_id_is_active) { |
// We could have an active touch stream transfered to us, resulting in touch |
// move or touch up events without associated touch down events. Ignore |
// them. |
@@ -38,18 +39,22 @@ bool GestureProviderAura::OnTouchEvent(const TouchEvent& event) { |
// If this is a touchmove event, and it isn't different from the last |
// event, ignore it. |
- if (event.type() == ET_TOUCH_MOVED && |
- event.x() == pointer_state_.GetX(index) && |
- event.y() == pointer_state_.GetY(index)) { |
+ if (event->type() == ET_TOUCH_MOVED && |
+ event->x() == pointer_state_.GetX(index) && |
+ event->y() == pointer_state_.GetY(index)) { |
return false; |
} |
- last_touch_event_latency_info_ = *event.latency(); |
- pointer_state_.OnTouch(event); |
+ last_touch_event_latency_info_ = *event->latency(); |
+ pointer_state_.OnTouch(*event); |
- bool result = filtered_gesture_provider_.OnTouchEvent(pointer_state_); |
- pointer_state_.CleanupRemovedTouchPoints(event); |
- return result; |
+ auto result = filtered_gesture_provider_.OnTouchEvent(pointer_state_); |
+ if (!result.succeeded) |
+ return false; |
+ |
+ event->set_causes_scrolling(result.did_generate_scroll); |
+ pointer_state_.CleanupRemovedTouchPoints(*event); |
+ return true; |
} |
void GestureProviderAura::OnTouchEventAck(bool event_consumed) { |