summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrmcilroy <rmcilroy@chromium.org>2015-05-29 08:52:17 -0700
committerCommit bot <commit-bot@chromium.org>2015-05-29 15:52:48 +0000
commit87a18b3e0f3c8d939d3096d262acec8b7d06c869 (patch)
tree9a711dce892be1a1c9d19785a4cd412b68d0a509
parent88da63664e112a412cee277f459b27a05d16a657 (diff)
downloadchromium_src-87a18b3e0f3c8d939d3096d262acec8b7d06c869.zip
chromium_src-87a18b3e0f3c8d939d3096d262acec8b7d06c869.tar.gz
chromium_src-87a18b3e0f3c8d939d3096d262acec8b7d06c869.tar.bz2
[scheduler]: Add Add/RemoveTaskObserver to NestableSingleThreadTaskRunner interface.
Adds the Add/RemoveTaskObserver functions to the NestableSingleThreadTaskRunner interface such that they can be implemented by the SchedulerMessageLoopDelegate and mocked out for the NestableTaskRunnerForTest. This avoids calling base::MessageLoop::current() in task queue manager. BUG=485371 Review URL: https://codereview.chromium.org/1160083003 Cr-Commit-Position: refs/heads/master@{#331978}
-rw-r--r--components/scheduler/child/nestable_single_thread_task_runner.h7
-rw-r--r--components/scheduler/child/nestable_task_runner_for_test.cc8
-rw-r--r--components/scheduler/child/nestable_task_runner_for_test.h4
-rw-r--r--components/scheduler/child/scheduler_message_loop_delegate.cc10
-rw-r--r--components/scheduler/child/scheduler_message_loop_delegate.h4
-rw-r--r--components/scheduler/child/task_queue_manager.cc4
6 files changed, 35 insertions, 2 deletions
diff --git a/components/scheduler/child/nestable_single_thread_task_runner.h b/components/scheduler/child/nestable_single_thread_task_runner.h
index e1bf990..0b507a2 100644
--- a/components/scheduler/child/nestable_single_thread_task_runner.h
+++ b/components/scheduler/child/nestable_single_thread_task_runner.h
@@ -6,6 +6,7 @@
#define COMPONENTS_SCHEDULER_CHILD_NESTABLE_SINGLE_THREAD_TASK_RUNNER_H_
#include "base/single_thread_task_runner.h"
+#include "base/message_loop/message_loop.h"
#include "components/scheduler/scheduler_export.h"
namespace scheduler {
@@ -20,6 +21,12 @@ class SCHEDULER_EXPORT NestableSingleThreadTaskRunner
// a nested task).
virtual bool IsNested() const = 0;
+ // Adds and removes MessageLoop::TaskObservers to the task runner.
+ virtual void AddTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) = 0;
+ virtual void RemoveTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) = 0;
+
protected:
~NestableSingleThreadTaskRunner() override {}
diff --git a/components/scheduler/child/nestable_task_runner_for_test.cc b/components/scheduler/child/nestable_task_runner_for_test.cc
index 42e1264..8a7a341 100644
--- a/components/scheduler/child/nestable_task_runner_for_test.cc
+++ b/components/scheduler/child/nestable_task_runner_for_test.cc
@@ -46,4 +46,12 @@ void NestableTaskRunnerForTest::SetNested(bool is_nested) {
is_nested_ = is_nested;
}
+void NestableTaskRunnerForTest::AddTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) {
+}
+
+void NestableTaskRunnerForTest::RemoveTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) {
+}
+
} // namespace scheduler
diff --git a/components/scheduler/child/nestable_task_runner_for_test.h b/components/scheduler/child/nestable_task_runner_for_test.h
index 6905620..5ef4eec 100644
--- a/components/scheduler/child/nestable_task_runner_for_test.h
+++ b/components/scheduler/child/nestable_task_runner_for_test.h
@@ -25,6 +25,10 @@ class NestableTaskRunnerForTest : public NestableSingleThreadTaskRunner {
base::TimeDelta delay) override;
bool RunsTasksOnCurrentThread() const override;
bool IsNested() const override;
+ void AddTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) override;
+ void RemoveTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) override;
protected:
~NestableTaskRunnerForTest() override;
diff --git a/components/scheduler/child/scheduler_message_loop_delegate.cc b/components/scheduler/child/scheduler_message_loop_delegate.cc
index 8c06e30..ba0d6b4 100644
--- a/components/scheduler/child/scheduler_message_loop_delegate.cc
+++ b/components/scheduler/child/scheduler_message_loop_delegate.cc
@@ -43,4 +43,14 @@ bool SchedulerMessageLoopDelegate::IsNested() const {
return message_loop_->IsNested();
}
+void SchedulerMessageLoopDelegate::AddTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) {
+ return message_loop_->AddTaskObserver(task_observer);
+}
+
+void SchedulerMessageLoopDelegate::RemoveTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) {
+ return message_loop_->RemoveTaskObserver(task_observer);
+}
+
} // namespace scheduler
diff --git a/components/scheduler/child/scheduler_message_loop_delegate.h b/components/scheduler/child/scheduler_message_loop_delegate.h
index 2fce4b6..ce2ad48 100644
--- a/components/scheduler/child/scheduler_message_loop_delegate.h
+++ b/components/scheduler/child/scheduler_message_loop_delegate.h
@@ -27,6 +27,10 @@ class SCHEDULER_EXPORT SchedulerMessageLoopDelegate
base::TimeDelta delay) override;
bool RunsTasksOnCurrentThread() const override;
bool IsNested() const override;
+ void AddTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) override;
+ void RemoveTaskObserver(
+ base::MessageLoop::TaskObserver* task_observer) override;
protected:
~SchedulerMessageLoopDelegate() override;
diff --git a/components/scheduler/child/task_queue_manager.cc b/components/scheduler/child/task_queue_manager.cc
index 366c682..d9fa47c 100644
--- a/components/scheduler/child/task_queue_manager.cc
+++ b/components/scheduler/child/task_queue_manager.cc
@@ -712,14 +712,14 @@ void TaskQueueManager::SetWorkBatchSize(int work_batch_size) {
void TaskQueueManager::AddTaskObserver(
base::MessageLoop::TaskObserver* task_observer) {
DCHECK(main_thread_checker_.CalledOnValidThread());
- base::MessageLoop::current()->AddTaskObserver(task_observer);
+ main_task_runner_->AddTaskObserver(task_observer);
task_observers_.AddObserver(task_observer);
}
void TaskQueueManager::RemoveTaskObserver(
base::MessageLoop::TaskObserver* task_observer) {
DCHECK(main_thread_checker_.CalledOnValidThread());
- base::MessageLoop::current()->RemoveTaskObserver(task_observer);
+ main_task_runner_->RemoveTaskObserver(task_observer);
task_observers_.RemoveObserver(task_observer);
}