| Index: ui/events/blink/input_handler_proxy_unittest.cc
|
| diff --git a/ui/events/blink/input_handler_proxy_unittest.cc b/ui/events/blink/input_handler_proxy_unittest.cc
|
| index e30d729e3618c57ebcaffcc049a98b5caa21c336..fff4c4e85f91bc48c37d1db2602424ffc5372013 100644
|
| --- a/ui/events/blink/input_handler_proxy_unittest.cc
|
| +++ b/ui/events/blink/input_handler_proxy_unittest.cc
|
| @@ -289,6 +289,9 @@ class MockInputHandlerProxyClient
|
| MOCK_METHOD1(DispatchNonBlockingEventToMainThread_,
|
| void(const WebInputEvent&));
|
|
|
| + MOCK_METHOD1(GenerateScrollBeginAndSendToMainThread,
|
| + void(const blink::WebGestureEvent& update_event));
|
| +
|
| void DispatchNonBlockingEventToMainThread(
|
| WebScopedInputEvent event,
|
| const ui::LatencyInfo& latency_info) override {
|
| @@ -1036,6 +1039,53 @@ TEST_P(InputHandlerProxyWithoutWheelScrollLatchingTest,
|
| GestureFlingStartedTouchpad();
|
| }
|
|
|
| +TEST_P(InputHandlerProxyTest, GestureScrollHandlingSwitchedToMainThread) {
|
| + // We shouldn't send any events to the widget for this gesture.
|
| + expected_disposition_ = InputHandlerProxy::DID_HANDLE;
|
| + VERIFY_AND_RESET_MOCKS();
|
| +
|
| + EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_))
|
| + .WillOnce(testing::Return(kImplThreadScrollState));
|
| +
|
| + // HandleGestureScrollBegin will set gesture_scroll_on_impl_thread_.
|
| + gesture_.SetType(WebInputEvent::kGestureScrollBegin);
|
| + EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
|
| + EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
|
| +
|
| + VERIFY_AND_RESET_MOCKS();
|
| +
|
| + gesture_.SetType(WebInputEvent::kGestureScrollUpdate);
|
| + gesture_.data.scroll_update.delta_y = -40;
|
| + EXPECT_CALL(
|
| + mock_input_handler_,
|
| + ScrollBy(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0))))
|
| + .WillOnce(testing::Return(scroll_result_did_scroll_));
|
| + EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
|
| + EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
|
| +
|
| + // The scroll handling switches to the main thread, a GSB is sent to the main
|
| + // thread to initiate the hit testing and compute the scroll chain.
|
| + expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
|
| + EXPECT_CALL(
|
| + mock_input_handler_,
|
| + ScrollBy(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0))))
|
| + .WillOnce(testing::Return(scroll_result_did_not_scroll_));
|
| + EXPECT_CALL(mock_input_handler_, ScrollingShouldSwitchtoMainThread())
|
| + .WillOnce(testing::Return(true));
|
| + EXPECT_CALL(mock_client_,
|
| + GenerateScrollBeginAndSendToMainThread(::testing::_));
|
| + EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
|
| + EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
|
| +
|
| + VERIFY_AND_RESET_MOCKS();
|
| +
|
| + gesture_.SetType(WebInputEvent::kGestureScrollEnd);
|
| + EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
|
| + EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
|
| +
|
| + VERIFY_AND_RESET_MOCKS();
|
| +}
|
| +
|
| TEST_P(InputHandlerProxyTest, GestureFlingTouchpadScrollLatchingEnabled) {
|
| // Reset the input_handler_ with wheel scroll latching enabled.
|
| input_handler_.reset(
|
|
|