diff options
author | rmcilroy <rmcilroy@chromium.org> | 2015-05-29 08:52:17 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-29 15:52:48 +0000 |
commit | 87a18b3e0f3c8d939d3096d262acec8b7d06c869 (patch) | |
tree | 9a711dce892be1a1c9d19785a4cd412b68d0a509 | |
parent | 88da63664e112a412cee277f459b27a05d16a657 (diff) | |
download | chromium_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}
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); } |