| 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 cd5a8cd36c7b383a3145b213c1745c33ef68a3c7..6d9883234a7c8cf4dcb906551dfc48145be5d94d 100644
|
| --- a/content/renderer/input/input_event_filter.cc
|
| +++ b/content/renderer/input/input_event_filter.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/command_line.h"
|
| #include "base/debug/trace_event.h"
|
| #include "base/location.h"
|
| +#include "base/message_loop/high_priority_task_runner.h"
|
| #include "base/message_loop/message_loop_proxy.h"
|
| #include "cc/input/input_handler.h"
|
| #include "content/common/input/did_overscroll_params.h"
|
| @@ -134,14 +135,25 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message) {
|
| "message_type", GetInputMessageTypeName(message));
|
|
|
| if (message.type() != InputMsg_HandleInputEvent::ID) {
|
| - TRACE_EVENT_INSTANT0(
|
| - "input",
|
| - "InputEventFilter::ForwardToHandler::ForwardToMainListener",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| - main_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&InputEventFilter::ForwardToMainListener,
|
| - this, message));
|
| + if (high_priority_task_runner_.get()) {
|
| + TRACE_EVENT_INSTANT0(
|
| + "input",
|
| + "InputEventFilter::ForwardToHandler::ForwardToMainListenerHigh",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + high_priority_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&InputEventFilter::ForwardToMainListener,
|
| + this, message));
|
| + } else {
|
| + TRACE_EVENT_INSTANT0(
|
| + "input",
|
| + "InputEventFilter::ForwardToHandler::ForwardToMainListener",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + main_loop_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&InputEventFilter::ForwardToMainListener,
|
| + this, message));
|
| + }
|
| return;
|
| }
|
|
|
| @@ -157,16 +169,27 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message) {
|
| InputEventAckState ack = handler_.Run(routing_id, event, &latency_info);
|
|
|
| if (ack == INPUT_EVENT_ACK_STATE_NOT_CONSUMED) {
|
| - TRACE_EVENT_INSTANT0(
|
| - "input",
|
| - "InputEventFilter::ForwardToHandler::ForwardToMainListener",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| IPC::Message new_msg = InputMsg_HandleInputEvent(
|
| routing_id, event, latency_info, is_keyboard_shortcut);
|
| - main_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&InputEventFilter::ForwardToMainListener,
|
| - this, new_msg));
|
| + if (high_priority_task_runner_.get()) {
|
| + TRACE_EVENT_INSTANT0(
|
| + "input",
|
| + "InputEventFilter::ForwardToHandler::ForwardToMainListenerHigh",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + high_priority_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&InputEventFilter::ForwardToMainListener,
|
| + this, new_msg));
|
| + } else {
|
| + TRACE_EVENT_INSTANT0(
|
| + "input",
|
| + "InputEventFilter::ForwardToHandler::ForwardToMainListener",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + main_loop_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&InputEventFilter::ForwardToMainListener,
|
| + this, new_msg));
|
| + }
|
| return;
|
| }
|
|
|
| @@ -199,4 +222,9 @@ void InputEventFilter::SendMessageOnIOThread(const IPC::Message& message) {
|
| sender_->Send(new IPC::Message(message));
|
| }
|
|
|
| +void InputEventFilter::SetHighPriorityTaskRunner(
|
| + scoped_refptr<base::HighPriorityTaskRunner> high_priority_task_runner) {
|
| + high_priority_task_runner_ = high_priority_task_runner;
|
| +}
|
| +
|
| } // namespace content
|
|
|