diff options
Diffstat (limited to 'content/renderer/input')
-rw-r--r-- | content/renderer/input/input_handler_proxy.cc | 3 | ||||
-rw-r--r-- | content/renderer/input/input_handler_proxy_unittest.cc | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/content/renderer/input/input_handler_proxy.cc b/content/renderer/input/input_handler_proxy.cc index ce178ec..3edb957 100644 --- a/content/renderer/input/input_handler_proxy.cc +++ b/content/renderer/input/input_handler_proxy.cc @@ -567,6 +567,9 @@ bool InputHandlerProxy::FilterInputEventForFlingBoosting( const WebGestureEvent& gesture_event = static_cast<const WebGestureEvent&>(event); if (gesture_event.type == WebInputEvent::GestureFlingCancel) { + if (gesture_event.data.flingCancel.preventBoosting) + return false; + if (current_fling_velocity_.LengthSquared() < kMinBoostFlingSpeedSquare) return false; diff --git a/content/renderer/input/input_handler_proxy_unittest.cc b/content/renderer/input/input_handler_proxy_unittest.cc index aafe9187..cb85701 100644 --- a/content/renderer/input/input_handler_proxy_unittest.cc +++ b/content/renderer/input/input_handler_proxy_unittest.cc @@ -1954,6 +1954,26 @@ TEST_F(InputHandlerProxyTest, NoFlingBoostIfFlingTooSlow) { VERIFY_AND_RESET_MOCKS(); } +TEST_F(InputHandlerProxyTest, NoFlingBoostIfPreventBoostingFlagIsSet) { + base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); + base::TimeTicks time = base::TimeTicks() + dt; + WebFloatPoint fling_delta = WebFloatPoint(1000, 0); + WebPoint fling_point = WebPoint(7, 13); + + StartFling( + time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); + + EXPECT_CALL(mock_input_handler_, ScrollEnd()); + + // Cancel the fling. The fling cancellation should not be deferred because of + // prevent boosting flag set. + gesture_.data.flingCancel.preventBoosting = true; + time += dt; + CancelFling(time); + + // VERIFY_AND_RESET_MOCKS already called by CancelFling +} + TEST_F(InputHandlerProxyTest, FlingBoostTerminatedDuringScrollSequence) { base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); base::TimeTicks time = base::TimeTicks() + dt; |