Index: content/browser/renderer_host/input/tap_suppression_controller.cc |
diff --git a/content/browser/renderer_host/input/tap_suppression_controller.cc b/content/browser/renderer_host/input/tap_suppression_controller.cc |
index 641af6ad108a04b4e240ec07aa19f94439670b08..c6b17e6ecf623fc85c25b611fd1fd54083ec801d 100644 |
--- a/content/browser/renderer_host/input/tap_suppression_controller.cc |
+++ b/content/browser/renderer_host/input/tap_suppression_controller.cc |
@@ -10,16 +10,27 @@ |
namespace content { |
+TapSuppressionController::Config::Config() |
+ : enabled(false), |
+ max_cancel_to_down_time(base::TimeDelta::FromMilliseconds(180)), |
+ max_tap_gap_time(base::TimeDelta::FromMilliseconds(500)) { |
+} |
+ |
TapSuppressionController::TapSuppressionController( |
- TapSuppressionControllerClient* client) |
+ TapSuppressionControllerClient* client, |
+ const Config& config) |
: client_(client), |
- state_(TapSuppressionController::NOTHING) { |
+ state_(config.enabled ? NOTHING : DISABLED), |
+ max_cancel_to_down_time_(config.max_cancel_to_down_time), |
+ max_tap_gap_time_(config.max_tap_gap_time) { |
} |
TapSuppressionController::~TapSuppressionController() {} |
void TapSuppressionController::GestureFlingCancel() { |
switch (state_) { |
+ case DISABLED: |
+ break; |
case NOTHING: |
case GFC_IN_PROGRESS: |
case LAST_CANCEL_STOPPED_FLING: |
@@ -33,6 +44,7 @@ void TapSuppressionController::GestureFlingCancel() { |
void TapSuppressionController::GestureFlingCancelAck(bool processed) { |
base::TimeTicks event_time = Now(); |
switch (state_) { |
+ case DISABLED: |
case NOTHING: |
break; |
case GFC_IN_PROGRESS: |
@@ -57,23 +69,21 @@ void TapSuppressionController::GestureFlingCancelAck(bool processed) { |
bool TapSuppressionController::ShouldDeferTapDown() { |
base::TimeTicks event_time = Now(); |
switch (state_) { |
+ case DISABLED: |
case NOTHING: |
return false; |
case GFC_IN_PROGRESS: |
state_ = TAP_DOWN_STASHED; |
- StartTapDownTimer( |
- base::TimeDelta::FromMilliseconds(client_->MaxTapGapTimeInMs())); |
+ StartTapDownTimer(max_tap_gap_time_); |
return true; |
case TAP_DOWN_STASHED: |
NOTREACHED() << "TapDown on TAP_DOWN_STASHED state"; |
state_ = NOTHING; |
return false; |
case LAST_CANCEL_STOPPED_FLING: |
- if ((event_time - fling_cancel_time_).InMilliseconds() |
- < client_->MaxCancelToDownTimeInMs()) { |
+ if ((event_time - fling_cancel_time_) < max_cancel_to_down_time_) { |
state_ = TAP_DOWN_STASHED; |
- StartTapDownTimer( |
- base::TimeDelta::FromMilliseconds(client_->MaxTapGapTimeInMs())); |
+ StartTapDownTimer(max_tap_gap_time_); |
return true; |
} else { |
state_ = NOTHING; |
@@ -86,6 +96,7 @@ bool TapSuppressionController::ShouldDeferTapDown() { |
bool TapSuppressionController::ShouldSuppressTapEnd() { |
switch (state_) { |
+ case DISABLED: |
case NOTHING: |
case GFC_IN_PROGRESS: |
return false; |
@@ -115,7 +126,10 @@ void TapSuppressionController::StopTapDownTimer() { |
void TapSuppressionController::TapDownTimerExpired() { |
switch (state_) { |
+ case DISABLED: |
case NOTHING: |
+ NOTREACHED() << "Timer fired on invalid state."; |
+ break; |
case GFC_IN_PROGRESS: |
case LAST_CANCEL_STOPPED_FLING: |
NOTREACHED() << "Timer fired on invalid state."; |