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

Unified Diff: content/browser/renderer_host/gesture_event_filter.h

Issue 13931009: Add latency info to input events sent to RenderWidget. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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/gesture_event_filter.h
diff --git a/content/browser/renderer_host/gesture_event_filter.h b/content/browser/renderer_host/gesture_event_filter.h
index 390deee1da862b80ea1c8e3859da73697c2bf7ae..4a95af920ab52d49783c2268ba613ddc08143db9 100644
--- a/content/browser/renderer_host/gesture_event_filter.h
+++ b/content/browser/renderer_host/gesture_event_filter.h
@@ -10,6 +10,7 @@
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "base/timer.h"
+#include "cc/debug/latency_info.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
#include "ui/gfx/transform.h"
@@ -19,6 +20,17 @@ class RenderWidgetHostImpl;
class TouchpadTapSuppressionController;
class TouchscreenTapSuppressionController;
+class GestureEventLatency : public WebKit::WebGestureEvent {
piman 2013/04/22 20:46:38 nit: I found this name confusing in other files. H
+ public:
+ cc::LatencyInfo latency_info;
+
+ GestureEventLatency(const WebKit::WebGestureEvent& ev,
+ const cc::LatencyInfo& l) :
piman 2013/04/22 20:46:38 nit: ':' on next line, at +4
+ WebKit::WebGestureEvent(ev),
+ latency_info(l) { }
+ GestureEventLatency() { }
+};
+
// Maintains WebGestureEvents in a queue before forwarding them to the renderer
// to apply a sequence of filters on them:
// 1. Zero-velocity fling-starts from touchpad are filtered.
@@ -47,7 +59,7 @@ class GestureEventFilter {
// Returns |true| if the caller should immediately forward the provided
// |WebGestureEvent| argument to the renderer.
- bool ShouldForward(const WebKit::WebGestureEvent&);
+ bool ShouldForward(const GestureEventLatency&);
// Indicates that the calling RenderWidgetHostImpl has received an
// acknowledgement from the renderer with state |processed| and event |type|.
@@ -72,11 +84,11 @@ class GestureEventFilter {
// Tries forwarding the event to the tap deferral sub-filter.
void ForwardGestureEventForDeferral(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Tries forwarding the event, skipping the tap deferral sub-filter.
void ForwardGestureEventSkipDeferral(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
private:
friend class MockRenderWidgetHost;
@@ -96,7 +108,7 @@ class GestureEventFilter {
// Returns |true| if the given GestureFlingCancel should be discarded
// as unnecessary.
bool ShouldDiscardFlingCancelEvent(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Returns |true| if the only event in the queue is the current event and
// hence that event should be handled now.
@@ -105,44 +117,44 @@ class GestureEventFilter {
// Merge or append a GestureScrollUpdate or GesturePinchUpdate into
// the coalescing queue.
void MergeOrInsertScrollAndPinchEvent(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Sub-filter for removing zero-velocity fling-starts from touchpad.
bool ShouldForwardForZeroVelocityFlingStart(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Sub-filter for removing bounces from in-progress scrolls.
bool ShouldForwardForBounceReduction(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Sub-filter for removing unnecessary GestureFlingCancels.
bool ShouldForwardForGFCFiltering(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Sub-filter for suppressing taps immediately after a GestureFlingCancel.
bool ShouldForwardForTapSuppression(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Sub-filter for deferring GestureTapDowns.
bool ShouldForwardForTapDeferral(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Puts the events in a queue to forward them one by one; i.e., forward them
// whenever ACK for previous event is received. This queue also tries to
// coalesce events as much as possible.
- bool ShouldForwardForCoalescing(const WebKit::WebGestureEvent& gesture_event);
+ bool ShouldForwardForCoalescing(const GestureEventLatency& gesture_event);
// Whether the event_in_queue is GesturePinchUpdate or
// GestureScrollUpdate and it has the same modifiers as the
// new event.
- bool ShouldTryMerging(const WebKit::WebGestureEvent& new_event,
- const WebKit::WebGestureEvent& event_in_queue);
+ bool ShouldTryMerging(const GestureEventLatency& new_event,
+ const GestureEventLatency& event_in_queue);
// Returns the transform matrix corresponding to the gesture event.
// Assumes the gesture event sent is either GestureScrollUpdate or
// GesturePinchUpdate. Returns the identity matrix otherwise.
gfx::Transform GetTransformForEvent(
- const WebKit::WebGestureEvent& gesture_event);
+ const GestureEventLatency& gesture_event);
// Only a RenderWidgetHostViewImpl can own an instance.
RenderWidgetHostImpl* render_widget_host_;
@@ -179,13 +191,13 @@ class GestureEventFilter {
scoped_ptr<TouchscreenTapSuppressionController>
touchscreen_tap_suppression_controller_;
- typedef std::deque<WebKit::WebGestureEvent> GestureEventQueue;
+ typedef std::deque<GestureEventLatency> GestureEventQueue;
// Queue of coalesced gesture events not yet sent to the renderer.
GestureEventQueue coalesced_gesture_events_;
// Tap gesture event currently subject to deferral.
- WebKit::WebGestureEvent deferred_tap_down_event_;
+ GestureEventLatency deferred_tap_down_event_;
// Timer to release a previously deferred GestureTapDown event.
base::OneShotTimer<GestureEventFilter> debounce_deferring_timer_;

Powered by Google App Engine
This is Rietveld 408576698