Chromium Code Reviews| 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_; |