Chromium Code Reviews| Index: content/browser/renderer_host/overscroll_controller.cc | 
| diff --git a/content/browser/renderer_host/overscroll_controller.cc b/content/browser/renderer_host/overscroll_controller.cc | 
| index cef841a6c5186eb43a99d7e385230935609c7886..8c2280ac6633fcd2d2bbe2d942ccdcb1eab33177 100644 | 
| --- a/content/browser/renderer_host/overscroll_controller.cc | 
| +++ b/content/browser/renderer_host/overscroll_controller.cc | 
| @@ -124,7 +124,7 @@ bool OverscrollController::WillHandleEvent(const blink::WebInputEvent& event) { | 
| } | 
| if (overscroll_mode_ != OVERSCROLL_NONE && DispatchEventResetsState(event)) { | 
| - SetOverscrollMode(OVERSCROLL_NONE); | 
| + SetOverscrollMode(OVERSCROLL_NONE, OverscrollSource::NONE); | 
| // Let the event be dispatched to the renderer. | 
| return false; | 
| @@ -177,7 +177,7 @@ void OverscrollController::Reset() { | 
| } | 
| void OverscrollController::Cancel() { | 
| - SetOverscrollMode(OVERSCROLL_NONE); | 
| + SetOverscrollMode(OVERSCROLL_NONE, OverscrollSource::NONE); | 
| overscroll_delta_x_ = overscroll_delta_y_ = 0.f; | 
| scroll_state_ = STATE_UNKNOWN; | 
| } | 
| @@ -320,7 +320,7 @@ bool OverscrollController::ProcessEventForOverscroll( | 
| } | 
| // Reset overscroll state if fling didn't complete the overscroll gesture. | 
| - SetOverscrollMode(OVERSCROLL_NONE); | 
| + SetOverscrollMode(OVERSCROLL_NONE, OverscrollSource::NONE); | 
| break; | 
| } | 
| @@ -346,7 +346,7 @@ bool OverscrollController::ProcessOverscroll(float delta_x, | 
| OVERSCROLL_CONFIG_VERT_THRESHOLD_START); | 
| if (fabs(overscroll_delta_x_) <= horiz_threshold && | 
| fabs(overscroll_delta_y_) <= vert_threshold) { | 
| - SetOverscrollMode(OVERSCROLL_NONE); | 
| + SetOverscrollMode(OVERSCROLL_NONE, OverscrollSource::NONE); | 
| return true; | 
| } | 
| @@ -368,10 +368,12 @@ bool OverscrollController::ProcessOverscroll(float delta_x, | 
| !IsScrollEndEffectEnabled()) | 
| new_mode = OVERSCROLL_NONE; | 
| - if (overscroll_mode_ == OVERSCROLL_NONE) | 
| - SetOverscrollMode(new_mode); | 
| - else if (new_mode != overscroll_mode_) | 
| - SetOverscrollMode(OVERSCROLL_NONE); | 
| + if (overscroll_mode_ == OVERSCROLL_NONE) { | 
| + SetOverscrollMode(new_mode, is_touchpad ? OverscrollSource::TOUCHPAD | 
| + : OverscrollSource::TOUCHSCREEN); | 
| + } else if (new_mode != overscroll_mode_) { | 
| + SetOverscrollMode(OVERSCROLL_NONE, OverscrollSource::NONE); | 
| + } | 
| if (overscroll_mode_ == OVERSCROLL_NONE) | 
| return false; | 
| @@ -412,7 +414,8 @@ void OverscrollController::CompleteAction() { | 
| overscroll_delta_x_ = overscroll_delta_y_ = 0.f; | 
| } | 
| -void OverscrollController::SetOverscrollMode(OverscrollMode mode) { | 
| +void OverscrollController::SetOverscrollMode(OverscrollMode mode, | 
| + OverscrollSource source) { | 
| if (overscroll_mode_ == mode) | 
| 
 
sadrul
2017/03/01 21:18:35
Can this DCHECK that when mode == NONE, source is
 
mfomitchev
2017/03/01 23:45:28
I've added the DCHECK after the if. It is possible
 
 | 
| return; | 
| OverscrollMode old_mode = overscroll_mode_; | 
| @@ -422,7 +425,7 @@ void OverscrollController::SetOverscrollMode(OverscrollMode mode) { | 
| else | 
| scroll_state_ = STATE_OVERSCROLLING; | 
| if (delegate_) | 
| - delegate_->OnOverscrollModeChange(old_mode, overscroll_mode_); | 
| + delegate_->OnOverscrollModeChange(old_mode, overscroll_mode_, source); | 
| } | 
| } // namespace content |