Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(846)

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 503883004: Don't pass touches to gesture recognizer for async acks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bug, add test. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_view_aura_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/render_widget_host_view_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 49ee8e48f09e47f0b9305899e12443c993a9e26f..4fd23fe14bccdcdba248145a345a6428763ffed0 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -1140,21 +1140,38 @@ void RenderWidgetHostViewAura::GestureEventAck(
void RenderWidgetHostViewAura::ProcessAckedTouchEvent(
const TouchEventWithLatencyInfo& touch, InputEventAckState ack_result) {
- ScopedVector<ui::TouchEvent> events;
- if (!MakeUITouchEventsFromWebTouchEvents(touch, &events,
- SCREEN_COORDINATES))
- return;
-
aura::WindowTreeHost* host = window_->GetHost();
- // |host| is NULL during tests.
+ // |host| is sometimes NULL during tests.
if (!host)
return;
ui::EventResult result = (ack_result ==
INPUT_EVENT_ACK_STATE_CONSUMED) ? ui::ER_HANDLED : ui::ER_UNHANDLED;
- for (ScopedVector<ui::TouchEvent>::iterator iter = events.begin(),
- end = events.end(); iter != end; ++iter) {
- host->dispatcher()->ProcessedTouchEvent((*iter), window_, result);
+
+ // Only send acks for changed touches.
+ blink::WebTouchPoint::State required_state;
+ switch(touch.event.type) {
+ case blink::WebInputEvent::TouchStart:
+ required_state = blink::WebTouchPoint::StatePressed;
+ break;
+ case blink::WebInputEvent::TouchEnd:
+ required_state = blink::WebTouchPoint::StateReleased;
+ break;
+ case blink::WebInputEvent::TouchMove:
+ required_state = blink::WebTouchPoint::StateMoved;
+ break;
+ case blink::WebInputEvent::TouchCancel:
+ required_state = blink::WebTouchPoint::StateCancelled;
+ break;
+ default:
+ required_state = blink::WebTouchPoint::StateUndefined;
+ DCHECK(false);
tdresser 2014/12/03 19:49:52 Should be NOTREACHED().
tdresser 2015/02/06 17:43:49 Done.
+ break;
+ }
+
+ for (size_t i = 0; i < touch.event.touchesLength; ++i) {
+ if (touch.event.touches[i].state == required_state)
+ host->dispatcher()->ProcessedTouchEvent(window_, result);
}
}
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_view_aura_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698