| Index: components/scheduler/base/task_queue_manager.cc
|
| diff --git a/components/scheduler/base/task_queue_manager.cc b/components/scheduler/base/task_queue_manager.cc
|
| index 099edd3f29082216b91a56fe839ffcf28041861e..64414b0466c86f8c9d461fcf9482591bf6c14397 100644
|
| --- a/components/scheduler/base/task_queue_manager.cc
|
| +++ b/components/scheduler/base/task_queue_manager.cc
|
| @@ -8,7 +8,6 @@
|
| #include <set>
|
|
|
| #include "base/bind.h"
|
| -#include "base/time/default_tick_clock.h"
|
| #include "components/scheduler/base/lazy_now.h"
|
| #include "components/scheduler/base/nestable_single_thread_task_runner.h"
|
| #include "components/scheduler/base/task_queue_impl.h"
|
| @@ -30,7 +29,6 @@ TaskQueueManager::TaskQueueManager(
|
| task_was_run_on_quiescence_monitored_queue_(false),
|
| pending_dowork_count_(0),
|
| work_batch_size_(1),
|
| - time_source_(new base::DefaultTickClock),
|
| tracing_category_(tracing_category),
|
| disabled_by_default_tracing_category_(
|
| disabled_by_default_tracing_category),
|
| @@ -175,7 +173,7 @@ void TaskQueueManager::UpdateWorkQueues(
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
| TRACE_EVENT0(disabled_by_default_tracing_category_,
|
| "TaskQueueManager::UpdateWorkQueues");
|
| - internal::LazyNow lazy_now(this);
|
| + internal::LazyNow lazy_now(tick_clock());
|
|
|
| // Move any ready delayed tasks into the incomming queues.
|
| WakeupReadyDelayedQueues(&lazy_now);
|
| @@ -196,7 +194,7 @@ void TaskQueueManager::UpdateWorkQueues(
|
| void TaskQueueManager::ScheduleDelayedWorkTask(
|
| scoped_refptr<internal::TaskQueueImpl> queue,
|
| base::TimeTicks delayed_run_time) {
|
| - internal::LazyNow lazy_now(this);
|
| + internal::LazyNow lazy_now(tick_clock());
|
| ScheduleDelayedWork(queue.get(), delayed_run_time, &lazy_now);
|
| }
|
|
|
| @@ -232,7 +230,7 @@ void TaskQueueManager::DelayedDoWork() {
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
|
|
| {
|
| - internal::LazyNow lazy_now(this);
|
| + internal::LazyNow lazy_now(tick_clock());
|
| WakeupReadyDelayedQueues(&lazy_now);
|
| }
|
|
|
| @@ -319,8 +317,12 @@ void TaskQueueManager::DoWork(bool decrement_pending_dowork_count) {
|
| // TODO(alexclarke): Consider refactoring the above loop to terminate only
|
| // when there's no more work left to be done, rather than posting a
|
| // continuation task.
|
| - if (!selector_.EnabledWorkQueuesEmpty())
|
| + if (!selector_.EnabledWorkQueuesEmpty()) {
|
| MaybePostDoWorkOnMainRunner();
|
| + } else {
|
| + // Tell the task runner we have no more work.
|
| + main_task_runner_->OnNoMoreWork();
|
| + }
|
| }
|
|
|
| bool TaskQueueManager::SelectQueueToService(
|
| @@ -415,20 +417,14 @@ void TaskQueueManager::RemoveTaskObserver(
|
| task_observers_.RemoveObserver(task_observer);
|
| }
|
|
|
| -void TaskQueueManager::SetTimeSourceForTesting(
|
| - scoped_ptr<base::TickClock> time_source) {
|
| - DCHECK(main_thread_checker_.CalledOnValidThread());
|
| - time_source_ = time_source.Pass();
|
| -}
|
| -
|
| bool TaskQueueManager::GetAndClearSystemIsQuiescentBit() {
|
| bool task_was_run = task_was_run_on_quiescence_monitored_queue_;
|
| task_was_run_on_quiescence_monitored_queue_ = false;
|
| return !task_was_run;
|
| }
|
|
|
| -base::TimeTicks TaskQueueManager::Now() const {
|
| - return time_source_->NowTicks();
|
| +base::TickClock* TaskQueueManager::tick_clock() const {
|
| + return main_task_runner_.get();
|
| }
|
|
|
| int TaskQueueManager::GetNextSequenceNumber() {
|
|
|