| Index: content/renderer/input/input_handler_manager.cc
|
| diff --git a/content/renderer/input/input_handler_manager.cc b/content/renderer/input/input_handler_manager.cc
|
| index 35ef3b467334d110476a60839acff8a87f27162a..58fd95f04f8b56f9287b1c9d50432436e84e12e0 100644
|
| --- a/content/renderer/input/input_handler_manager.cc
|
| +++ b/content/renderer/input/input_handler_manager.cc
|
| @@ -36,6 +36,8 @@ InputEventAckState InputEventDispositionToAck(
|
| return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
|
| case InputHandlerProxy::DROP_EVENT:
|
| return INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS;
|
| + case InputHandlerProxy::DID_HANDLE_NON_BLOCKING:
|
| + return INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING;
|
| }
|
| NOTREACHED();
|
| return INPUT_EVENT_ACK_STATE_UNKNOWN;
|
| @@ -63,20 +65,20 @@ void InputHandlerManager::AddInputHandler(
|
| int routing_id,
|
| const base::WeakPtr<cc::InputHandler>& input_handler,
|
| const base::WeakPtr<RenderViewImpl>& render_view_impl,
|
| - bool enable_smooth_scrolling) {
|
| + bool enable_smooth_scrolling,
|
| + bool enable_wheel_gestures) {
|
| if (task_runner_->BelongsToCurrentThread()) {
|
| - AddInputHandlerOnCompositorThread(routing_id,
|
| - base::ThreadTaskRunnerHandle::Get(),
|
| - input_handler, render_view_impl,
|
| - enable_smooth_scrolling);
|
| + AddInputHandlerOnCompositorThread(
|
| + routing_id, base::ThreadTaskRunnerHandle::Get(), input_handler,
|
| + render_view_impl, enable_smooth_scrolling, enable_wheel_gestures);
|
| } else {
|
| task_runner_->PostTask(
|
| FROM_HERE,
|
| base::Bind(&InputHandlerManager::AddInputHandlerOnCompositorThread,
|
| base::Unretained(this), routing_id,
|
| base::ThreadTaskRunnerHandle::Get(), input_handler,
|
| - render_view_impl,
|
| - enable_smooth_scrolling));
|
| + render_view_impl, enable_smooth_scrolling,
|
| + enable_wheel_gestures));
|
| }
|
| }
|
|
|
| @@ -85,7 +87,8 @@ void InputHandlerManager::AddInputHandlerOnCompositorThread(
|
| const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner,
|
| const base::WeakPtr<cc::InputHandler>& input_handler,
|
| const base::WeakPtr<RenderViewImpl>& render_view_impl,
|
| - bool enable_smooth_scrolling) {
|
| + bool enable_smooth_scrolling,
|
| + bool enable_wheel_gestures) {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
|
|
| // The handler could be gone by this point if the compositor has shut down.
|
| @@ -101,7 +104,7 @@ void InputHandlerManager::AddInputHandlerOnCompositorThread(
|
| "result", "AddingRoute");
|
| scoped_ptr<InputHandlerWrapper> wrapper(new InputHandlerWrapper(
|
| this, routing_id, main_task_runner, input_handler, render_view_impl,
|
| - enable_smooth_scrolling));
|
| + enable_smooth_scrolling, enable_wheel_gestures));
|
| client_->DidAddInputHandler(routing_id, wrapper->input_handler_proxy());
|
| input_handlers_.add(routing_id, std::move(wrapper));
|
| }
|
| @@ -141,6 +144,27 @@ void InputHandlerManager::ObserveWheelEventAndResultOnCompositorThread(
|
| wheel_event, scroll_result);
|
| }
|
|
|
| +void InputHandlerManager::NonBlockingInputEventHandledOnMainThread(
|
| + int routing_id,
|
| + blink::WebInputEvent::Type type) {
|
| + task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &InputHandlerManager::NonBlockingInputEventHandledOnCompositorThread,
|
| + base::Unretained(this), routing_id, type));
|
| +}
|
| +
|
| +void InputHandlerManager::NonBlockingInputEventHandledOnCompositorThread(
|
| + int routing_id,
|
| + blink::WebInputEvent::Type handled_type) {
|
| + DCHECK(task_runner_->BelongsToCurrentThread());
|
| + auto it = input_handlers_.find(routing_id);
|
| + if (it == input_handlers_.end())
|
| + return;
|
| +
|
| + client_->NonBlockingInputEventHandled(routing_id, handled_type);
|
| +}
|
| +
|
| InputEventAckState InputHandlerManager::HandleInputEvent(
|
| int routing_id,
|
| const WebInputEvent* input_event,
|
|
|