Index: content/browser/renderer_host/input/gesture_event_queue.cc |
diff --git a/content/browser/renderer_host/input/gesture_event_queue.cc b/content/browser/renderer_host/input/gesture_event_queue.cc |
index 2fb46b6fa0eb88ea13efb88688679f7ae90197b3..9811e7357e1782e91bb64ff82a8b7f48fb0cb9dd 100644 |
--- a/content/browser/renderer_host/input/gesture_event_queue.cc |
+++ b/content/browser/renderer_host/input/gesture_event_queue.cc |
@@ -4,7 +4,6 @@ |
#include "content/browser/renderer_host/input/gesture_event_queue.h" |
-#include "base/command_line.h" |
#include "base/debug/trace_event.h" |
#include "base/strings/string_number_conversions.h" |
#include "content/browser/renderer_host/input/input_router.h" |
@@ -16,34 +15,27 @@ using blink::WebGestureEvent; |
using blink::WebInputEvent; |
namespace content { |
-namespace { |
-// Default debouncing interval duration: if a scroll is in progress, non-scroll |
-// events during this interval are deferred to either its end or discarded on |
-// receipt of another GestureScrollUpdate. |
-static const int kDebouncingIntervalTimeMs = 30; |
- |
-} // namespace |
+GestureEventQueue::Config::Config() { |
+} |
GestureEventQueue::GestureEventQueue( |
GestureEventQueueClient* client, |
- TouchpadTapSuppressionControllerClient* touchpad_client) |
- : client_(client), |
- fling_in_progress_(false), |
- scrolling_in_progress_(false), |
- ignore_next_ack_(false), |
- touchpad_tap_suppression_controller_( |
- new TouchpadTapSuppressionController(touchpad_client)), |
- touchscreen_tap_suppression_controller_( |
- new TouchscreenTapSuppressionController(this)), |
- debounce_interval_time_ms_(kDebouncingIntervalTimeMs), |
- debounce_enabled_(true) { |
+ TouchpadTapSuppressionControllerClient* touchpad_client, |
+ const Config& config) |
+ : client_(client), |
+ fling_in_progress_(false), |
+ scrolling_in_progress_(false), |
+ ignore_next_ack_(false), |
+ touchpad_tap_suppression_controller_( |
+ touchpad_client, |
+ config.touchpad_tap_suppression_config), |
+ touchscreen_tap_suppression_controller_( |
+ this, |
+ config.touchscreen_tap_suppression_config), |
+ debounce_interval_(config.debounce_interval) { |
DCHECK(client); |
- DCHECK(touchpad_tap_suppression_controller_); |
- if (CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kDisableGestureDebounce)) { |
- debounce_enabled_ = false; |
- } |
+ DCHECK(touchpad_client); |
} |
GestureEventQueue::~GestureEventQueue() { } |
@@ -66,14 +58,14 @@ bool GestureEventQueue::ShouldDiscardFlingCancelEvent( |
bool GestureEventQueue::ShouldForwardForBounceReduction( |
const GestureEventWithLatencyInfo& gesture_event) { |
- if (!debounce_enabled_) |
+ if (debounce_interval_ <= base::TimeDelta()) |
return true; |
switch (gesture_event.event.type) { |
case WebInputEvent::GestureScrollUpdate: |
if (!scrolling_in_progress_) { |
debounce_deferring_timer_.Start( |
FROM_HERE, |
- base::TimeDelta::FromMilliseconds(debounce_interval_time_ms_), |
+ debounce_interval_, |
this, |
&GestureEventQueue::SendScrollEndingEventsNow); |
} else { |
@@ -127,9 +119,9 @@ bool GestureEventQueue::ShouldForwardForTapSuppression( |
switch (gesture_event.event.type) { |
case WebInputEvent::GestureFlingCancel: |
if (gesture_event.event.sourceDevice == WebGestureEvent::Touchscreen) |
- touchscreen_tap_suppression_controller_->GestureFlingCancel(); |
+ touchscreen_tap_suppression_controller_.GestureFlingCancel(); |
else |
- touchpad_tap_suppression_controller_->GestureFlingCancel(); |
+ touchpad_tap_suppression_controller_.GestureFlingCancel(); |
return true; |
case WebInputEvent::GestureTapDown: |
case WebInputEvent::GestureShowPress: |
@@ -138,8 +130,8 @@ bool GestureEventQueue::ShouldForwardForTapSuppression( |
case WebInputEvent::GestureTap: |
case WebInputEvent::GestureDoubleTap: |
if (gesture_event.event.sourceDevice == WebGestureEvent::Touchscreen) { |
- return !touchscreen_tap_suppression_controller_-> |
- FilterTapEvent(gesture_event); |
+ return !touchscreen_tap_suppression_controller_.FilterTapEvent( |
+ gesture_event); |
} |
return true; |
default: |
@@ -200,9 +192,9 @@ void GestureEventQueue::ProcessGestureAck(InputEventAckState ack_result, |
const bool processed = (INPUT_EVENT_ACK_STATE_CONSUMED == ack_result); |
if (type == WebInputEvent::GestureFlingCancel) { |
if (event_with_latency.event.sourceDevice == WebGestureEvent::Touchscreen) |
- touchscreen_tap_suppression_controller_->GestureFlingCancelAck(processed); |
+ touchscreen_tap_suppression_controller_.GestureFlingCancelAck(processed); |
else |
- touchpad_tap_suppression_controller_->GestureFlingCancelAck(processed); |
+ touchpad_tap_suppression_controller_.GestureFlingCancelAck(processed); |
} |
DCHECK_LT(event_index, coalesced_gesture_events_.size()); |
coalesced_gesture_events_.erase(coalesced_gesture_events_.begin() + |
@@ -238,7 +230,7 @@ void GestureEventQueue::ProcessGestureAck(InputEventAckState ack_result, |
TouchpadTapSuppressionController* |
GestureEventQueue::GetTouchpadTapSuppressionController() { |
- return touchpad_tap_suppression_controller_.get(); |
+ return &touchpad_tap_suppression_controller_; |
} |
bool GestureEventQueue::ExpectingGestureAck() const { |