| Index: content/renderer/input/input_event_filter.cc
|
| diff --git a/content/renderer/input/input_event_filter.cc b/content/renderer/input/input_event_filter.cc
|
| index eede217e86bd273faf3be93b36083d3bf306ae12..543e62a4c1babf2de5f7034690a8a3a36da80159 100644
|
| --- a/content/renderer/input/input_event_filter.cc
|
| +++ b/content/renderer/input/input_event_filter.cc
|
| @@ -61,7 +61,7 @@ void InputEventFilter::SetBoundHandler(const Handler& handler) {
|
| void InputEventFilter::DidAddInputHandler(int routing_id) {
|
| base::AutoLock locked(routes_lock_);
|
| routes_.insert(routing_id);
|
| - route_queues_[routing_id].reset(new NonBlockingEventQueue(routing_id, this));
|
| + route_queues_[routing_id].reset(new MainThreadEventQueue(routing_id, this));
|
| }
|
|
|
| void InputEventFilter::DidRemoveInputHandler(int routing_id) {
|
| @@ -85,7 +85,7 @@ void InputEventFilter::DidStopFlinging(int routing_id) {
|
| SendMessage(make_scoped_ptr(new InputHostMsg_DidStopFlinging(routing_id)));
|
| }
|
|
|
| -void InputEventFilter::NonBlockingInputEventHandled(
|
| +void InputEventFilter::NotifyInputEventHandled(
|
| int routing_id,
|
| blink::WebInputEvent::Type type) {
|
| DCHECK(target_task_runner_->BelongsToCurrentThread());
|
| @@ -163,9 +163,10 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message) {
|
| ui::LatencyInfo latency_info = base::get<1>(params);
|
| InputEventDispatchType dispatch_type = base::get<2>(params);
|
| DCHECK(event);
|
| - DCHECK_EQ(DISPATCH_TYPE_NORMAL, dispatch_type);
|
| + DCHECK(dispatch_type == DISPATCH_TYPE_BLOCKING ||
|
| + dispatch_type == DISPATCH_TYPE_NON_BLOCKING);
|
|
|
| - bool send_ack = WebInputEventTraits::WillReceiveAckFromRenderer(*event);
|
| + bool send_ack = dispatch_type == DISPATCH_TYPE_BLOCKING;
|
|
|
| // Intercept |DidOverscroll| notifications, bundling any triggered overscroll
|
| // response with the input event ack.
|
| @@ -176,21 +177,13 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message) {
|
|
|
| InputEventAckState ack_state = handler_.Run(routing_id, event, &latency_info);
|
|
|
| - if (ack_state == INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING) {
|
| + if (ack_state == INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING ||
|
| + ack_state == INPUT_EVENT_ACK_STATE_NOT_CONSUMED) {
|
| DCHECK(!overscroll_params);
|
| RouteQueueMap::iterator iter = route_queues_.find(routing_id);
|
| if (iter != route_queues_.end())
|
| - iter->second->HandleEvent(event, latency_info);
|
| - } else if (ack_state == INPUT_EVENT_ACK_STATE_NOT_CONSUMED) {
|
| - DCHECK(!overscroll_params);
|
| - TRACE_EVENT_INSTANT0(
|
| - "input", "InputEventFilter::ForwardToHandler::ForwardToMainListener",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| - IPC::Message new_msg =
|
| - InputMsg_HandleInputEvent(routing_id, event, latency_info,
|
| - InputEventDispatchType::DISPATCH_TYPE_NORMAL);
|
| - main_task_runner_->PostTask(FROM_HERE, base::Bind(main_listener_, new_msg));
|
| - send_ack = false;
|
| + send_ack &= iter->second->HandleEvent(event, latency_info, dispatch_type,
|
| + ack_state);
|
| }
|
|
|
| if (!send_ack)
|
| @@ -220,14 +213,16 @@ void InputEventFilter::SendMessageOnIOThread(scoped_ptr<IPC::Message> message) {
|
| sender_->Send(message.release());
|
| }
|
|
|
| -void InputEventFilter::SendNonBlockingEvent(int routing_id,
|
| - const blink::WebInputEvent* event,
|
| - const ui::LatencyInfo& latency) {
|
| - TRACE_EVENT_INSTANT0("input", "InputEventFilter::SendNonBlockingEvent",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| - IPC::Message new_msg = InputMsg_HandleInputEvent(
|
| - routing_id, event, latency,
|
| - InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING);
|
| +void InputEventFilter::SendEventToMainThread(
|
| + int routing_id,
|
| + const blink::WebInputEvent* event,
|
| + const ui::LatencyInfo& latency_info,
|
| + InputEventDispatchType dispatch_type) {
|
| + TRACE_EVENT_INSTANT0(
|
| + "input", "InputEventFilter::ForwardToHandler::SendEventToMainThread",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + IPC::Message new_msg =
|
| + InputMsg_HandleInputEvent(routing_id, event, latency_info, dispatch_type);
|
| main_task_runner_->PostTask(FROM_HERE, base::Bind(main_listener_, new_msg));
|
| }
|
|
|
|
|