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

Unified Diff: content/browser/renderer_host/input/input_router_impl.cc

Issue 997283002: Coalesce async touch move events until the ack back from render (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
Index: content/browser/renderer_host/input/input_router_impl.cc
diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
index d6fcb1c4f8be948d350401fd1e234e4bea707931..e5ca61612f75eb3f1a044bbcbbcb0f23713724f6 100644
--- a/content/browser/renderer_host/input/input_router_impl.cc
+++ b/content/browser/renderer_host/input/input_router_impl.cc
@@ -257,6 +257,8 @@ bool InputRouterImpl::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(InputRouterImpl, message)
IPC_MESSAGE_HANDLER(InputHostMsg_HandleInputEvent_ACK, OnInputEventAck)
+ IPC_MESSAGE_HANDLER(InputHostMsg_HandleUncancelableTouchMoveEvent_ACK,
+ OnUncancelableTouchMoveAck)
IPC_MESSAGE_HANDLER(InputHostMsg_DidOverscroll, OnDidOverscroll)
IPC_MESSAGE_HANDLER(InputHostMsg_MoveCaret_ACK, OnMsgMoveCaretAck)
IPC_MESSAGE_HANDLER(InputHostMsg_SelectRange_ACK, OnSelectMessageAck)
@@ -356,10 +358,12 @@ void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event,
// Touch events should always indicate in the event whether they are
// cancelable (respect ACK disposition) or not.
- bool ignores_ack = WebInputEventTraits::IgnoresAckDisposition(input_event);
- if (WebInputEvent::isTouchEventType(input_event.type)) {
+ bool ignores_ack =
jdduke (slow) 2015/04/15 17:14:53 Let's change this to read: |bool needs_synthetic_
lanwei 2015/04/17 20:49:00 Done.
+ !WebInputEventTraits::WillReceiveAckFromRenderer(input_event);
+ if (WebInputEvent::isTouchEventType(input_event.type) &&
+ input_event.type != WebInputEvent::TouchMove) {
const WebTouchEvent& touch = static_cast<const WebTouchEvent&>(input_event);
- DCHECK_NE(ignores_ack, !!touch.cancelable);
+ DCHECK_NE(ignores_ack, touch.cancelable);
}
// If we don't care about the ack disposition, send the ack immediately.
@@ -405,7 +409,7 @@ bool InputRouterImpl::OfferToRenderer(const WebInputEvent& input_event,
// Ack messages for ignored ack event types should never be sent by the
// renderer. Consequently, such event types should not affect event time
// or in-flight event count metrics.
- if (!WebInputEventTraits::IgnoresAckDisposition(input_event)) {
+ if (WebInputEventTraits::WillReceiveAckFromRenderer(input_event)) {
input_event_start_time_ = TimeTicks::Now();
client_->IncrementInFlightEventCount();
}
@@ -445,6 +449,10 @@ void InputRouterImpl::OnInputEventAck(
Details<int>(&type));
}
+void InputRouterImpl::OnUncancelableTouchMoveAck() {
+ touch_event_queue_.ProcessUncancelableTouchMoveAck();
jdduke (slow) 2015/04/15 17:14:53 We also need: client_->DecrementInFlightEventCoun
lanwei 2015/04/17 20:49:00 Done.
+}
+
void InputRouterImpl::OnDidOverscroll(const DidOverscrollParams& params) {
client_->DidOverscroll(params);
}

Powered by Google App Engine
This is Rietveld 408576698