Index: components/scheduler/base/task_queue_impl.cc |
diff --git a/components/scheduler/base/task_queue_impl.cc b/components/scheduler/base/task_queue_impl.cc |
index 0ad965b00f774201920becfde5d0fb3b24faf0ae..f40afab2ed01f18474a5f4cacc736015d2907e88 100644 |
--- a/components/scheduler/base/task_queue_impl.cc |
+++ b/components/scheduler/base/task_queue_impl.cc |
@@ -13,7 +13,7 @@ namespace internal { |
TaskQueueImpl::TaskQueueImpl( |
TaskQueueManager* task_queue_manager, |
- const scoped_refptr<TimeDomain>& time_domain, |
+ TimeDomain* time_domain, |
const Spec& spec, |
const char* disabled_by_default_tracing_category, |
const char* disabled_by_default_verbose_tracing_category) |
@@ -28,7 +28,8 @@ TaskQueueImpl::TaskQueueImpl( |
wakeup_policy_(spec.wakeup_policy), |
should_monitor_quiescence_(spec.should_monitor_quiescence), |
should_notify_observers_(spec.should_notify_observers) { |
- DCHECK(time_domain.get()); |
+ DCHECK(time_domain); |
+ time_domain->RegisterQueue(this); |
} |
TaskQueueImpl::~TaskQueueImpl() {} |
Sami
2015/11/26 19:27:50
nit: DCHECK that we no longer have a time domain?
alex clarke (OOO till 29th)
2015/11/27 10:01:59
I added a de-register here too. It was needed in
|
@@ -57,10 +58,9 @@ TaskQueueImpl::Task::Task(const tracked_objects::Location& posted_from, |
sequence_num = sequence_number; |
} |
-TaskQueueImpl::AnyThread::AnyThread( |
- TaskQueueManager* task_queue_manager, |
- PumpPolicy pump_policy, |
- const scoped_refptr<TimeDomain>& time_domain) |
+TaskQueueImpl::AnyThread::AnyThread(TaskQueueManager* task_queue_manager, |
+ PumpPolicy pump_policy, |
+ TimeDomain* time_domain) |
: task_queue_manager(task_queue_manager), |
pump_policy(pump_policy), |
time_domain(time_domain) {} |
@@ -78,7 +78,8 @@ void TaskQueueImpl::UnregisterTaskQueue() { |
base::AutoLock lock(any_thread_lock_); |
if (!any_thread().task_queue_manager) |
return; |
- any_thread().time_domain->UnregisterQueue(this); |
+ if (any_thread().time_domain) |
+ any_thread().time_domain->UnregisterQueue(this); |
any_thread().time_domain = nullptr; |
any_thread().task_queue_manager->UnregisterTaskQueue(this); |
@@ -107,18 +108,6 @@ bool TaskQueueImpl::PostNonNestableDelayedTask( |
return PostDelayedTaskImpl(from_here, task, delay, TaskType::NON_NESTABLE); |
} |
-bool TaskQueueImpl::PostDelayedTaskAt( |
- const tracked_objects::Location& from_here, |
- const base::Closure& task, |
- base::TimeTicks desired_run_time) { |
- base::AutoLock lock(any_thread_lock_); |
- if (!any_thread().task_queue_manager) |
- return false; |
- LazyNow lazy_now(any_thread().time_domain->CreateLazyNow()); |
- return PostDelayedTaskLocked(&lazy_now, from_here, task, desired_run_time, |
- TaskType::NORMAL); |
-} |
- |
bool TaskQueueImpl::PostDelayedTaskImpl( |
const tracked_objects::Location& from_here, |
const base::Closure& task, |
@@ -176,9 +165,8 @@ bool TaskQueueImpl::PostDelayedTaskLocked( |
return true; |
} |
-void TaskQueueImpl::ScheduleDelayedWorkTask( |
- const scoped_refptr<TimeDomain> time_domain, |
- base::TimeTicks desired_run_time) { |
+void TaskQueueImpl::ScheduleDelayedWorkTask(TimeDomain* time_domain, |
+ base::TimeTicks desired_run_time) { |
DCHECK(main_thread_checker_.CalledOnValidThread()); |
LazyNow lazy_now(time_domain->CreateLazyNow()); |
time_domain->ScheduleDelayedWork(this, desired_run_time, &lazy_now); |
@@ -219,13 +207,15 @@ TaskQueue::QueueState TaskQueueImpl::GetQueueState() const { |
{ |
base::AutoLock lock(any_thread_lock_); |
if (any_thread().incoming_queue.empty()) { |
- return QueueState::EMPTY; |
+ if (any_thread().delayed_task_queue.empty()) |
+ return QueueState::EMPTY; |
+ else |
+ return QueueState::NO_IMMEDIATE_WORK; |
} else { |
return QueueState::NEEDS_PUMPING; |
} |
} |
} |
- |
Sami
2015/11/26 19:27:50
Intentional?
alex clarke (OOO till 29th)
2015/11/27 10:01:59
Done.
|
bool TaskQueueImpl::TaskIsOlderThanQueuedTasks(const Task* task) { |
// A null task is passed when UpdateQueue is called before any task is run. |
// In this case we don't want to pump an after_wakeup queue, so return true |
@@ -505,14 +495,14 @@ void TaskQueueImpl::NotifyDidProcessTask( |
DidProcessTask(pending_task)); |
} |
-void TaskQueueImpl::SetTimeDomain( |
- const scoped_refptr<TimeDomain>& time_domain) { |
+void TaskQueueImpl::SetTimeDomain(TimeDomain* time_domain) { |
base::AutoLock lock(any_thread_lock_); |
DCHECK(main_thread_checker_.CalledOnValidThread()); |
if (time_domain == any_thread().time_domain) |
return; |
- any_thread().time_domain->MigrateQueue(this, time_domain.get()); |
+ if (time_domain) |
+ any_thread().time_domain->MigrateQueue(this, time_domain); |
any_thread().time_domain = time_domain; |
} |