| Index: content/child/scheduler/single_thread_idle_task_runner.cc
|
| diff --git a/content/renderer/scheduler/single_thread_idle_task_runner.cc b/content/child/scheduler/single_thread_idle_task_runner.cc
|
| similarity index 71%
|
| rename from content/renderer/scheduler/single_thread_idle_task_runner.cc
|
| rename to content/child/scheduler/single_thread_idle_task_runner.cc
|
| index 9eb2db1263a10b8f521c629eca83260a436c4c50..1b0eb69213bbe3149a4d873e79d94df5cbf1eb79 100644
|
| --- a/content/renderer/scheduler/single_thread_idle_task_runner.cc
|
| +++ b/content/child/scheduler/single_thread_idle_task_runner.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "content/renderer/scheduler/single_thread_idle_task_runner.h"
|
| +#include "content/child/scheduler/single_thread_idle_task_runner.h"
|
|
|
| #include "base/location.h"
|
| #include "base/trace_event/trace_event.h"
|
| @@ -12,14 +12,18 @@ namespace content {
|
| SingleThreadIdleTaskRunner::SingleThreadIdleTaskRunner(
|
| scoped_refptr<base::SingleThreadTaskRunner> idle_priority_task_runner,
|
| scoped_refptr<base::SingleThreadTaskRunner> after_wakeup_task_runner,
|
| - base::Callback<void(base::TimeTicks*)> deadline_supplier)
|
| + base::Callback<void(base::TimeTicks*)> deadline_supplier,
|
| + const char* tracing_category)
|
| : idle_priority_task_runner_(idle_priority_task_runner),
|
| after_wakeup_task_runner_(after_wakeup_task_runner),
|
| - deadline_supplier_(deadline_supplier) {
|
| + deadline_supplier_(deadline_supplier),
|
| + tracing_category_(tracing_category),
|
| + weak_factory_(this) {
|
| DCHECK(!idle_priority_task_runner_ ||
|
| idle_priority_task_runner_->RunsTasksOnCurrentThread());
|
| DCHECK(!after_wakeup_task_runner_ ||
|
| after_wakeup_task_runner_->RunsTasksOnCurrentThread());
|
| + weak_scheduler_ptr_ = weak_factory_.GetWeakPtr();
|
| }
|
|
|
| SingleThreadIdleTaskRunner::~SingleThreadIdleTaskRunner() {
|
| @@ -34,7 +38,8 @@ void SingleThreadIdleTaskRunner::PostIdleTask(
|
| const IdleTask& idle_task) {
|
| idle_priority_task_runner_->PostTask(
|
| from_here,
|
| - base::Bind(&SingleThreadIdleTaskRunner::RunTask, this, idle_task));
|
| + base::Bind(&SingleThreadIdleTaskRunner::RunTask,
|
| + weak_scheduler_ptr_, idle_task));
|
| }
|
|
|
| void SingleThreadIdleTaskRunner::PostNonNestableIdleTask(
|
| @@ -42,28 +47,29 @@ void SingleThreadIdleTaskRunner::PostNonNestableIdleTask(
|
| const IdleTask& idle_task) {
|
| idle_priority_task_runner_->PostNonNestableTask(
|
| from_here,
|
| - base::Bind(&SingleThreadIdleTaskRunner::RunTask, this, idle_task));
|
| + base::Bind(&SingleThreadIdleTaskRunner::RunTask,
|
| + weak_scheduler_ptr_, idle_task));
|
| }
|
|
|
| void SingleThreadIdleTaskRunner::PostIdleTaskAfterWakeup(
|
| const tracked_objects::Location& from_here,
|
| const IdleTask& idle_task) {
|
| after_wakeup_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&SingleThreadIdleTaskRunner::PostIdleTask, this,
|
| - from_here, idle_task));
|
| + FROM_HERE, base::Bind(&SingleThreadIdleTaskRunner::PostIdleTask,
|
| + weak_scheduler_ptr_, from_here, idle_task));
|
| }
|
|
|
| void SingleThreadIdleTaskRunner::RunTask(IdleTask idle_task) {
|
| base::TimeTicks deadline;
|
| deadline_supplier_.Run(&deadline);
|
| - TRACE_EVENT1("renderer.scheduler",
|
| - "SingleThreadIdleTaskRunner::RunTask", "allotted_time_ms",
|
| + TRACE_EVENT1(tracing_category_, "SingleThreadIdleTaskRunner::RunTask",
|
| + "allotted_time_ms",
|
| (deadline - base::TimeTicks::Now()).InMillisecondsF());
|
| idle_task.Run(deadline);
|
| bool is_tracing;
|
| - TRACE_EVENT_CATEGORY_GROUP_ENABLED("renderer.scheduler", &is_tracing);
|
| + TRACE_EVENT_CATEGORY_GROUP_ENABLED(tracing_category_, &is_tracing);
|
| if (is_tracing && base::TimeTicks::Now() > deadline) {
|
| - TRACE_EVENT_INSTANT0("renderer.scheduler",
|
| + TRACE_EVENT_INSTANT0(tracing_category_,
|
| "SingleThreadIdleTaskRunner::DidOverrunDeadline",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| }
|
|
|