Chromium Code Reviews| Index: components/scheduler/base/time_domain.cc |
| diff --git a/components/scheduler/base/time_domain.cc b/components/scheduler/base/time_domain.cc |
| index 2abfb522ce86f0d788285b03eb3127d4f1f56de9..40a330a56d5f70056a305de1d244c742dca69eae 100644 |
| --- a/components/scheduler/base/time_domain.cc |
| +++ b/components/scheduler/base/time_domain.cc |
| @@ -12,7 +12,7 @@ |
| namespace scheduler { |
| -TimeDomain::TimeDomain() {} |
| +TimeDomain::TimeDomain() : observer_(nullptr) {} |
| TimeDomain::~TimeDomain() {} |
| @@ -72,13 +72,19 @@ void TimeDomain::ScheduleDelayedWork(internal::TaskQueueImpl* queue, |
| base::TimeDelta delay = |
| std::max(base::TimeDelta(), delayed_run_time - lazy_now->Now()); |
| RequestWakeup(lazy_now, delay); |
| + if (observer_) |
| + observer_->OnRequestWakeup(); |
| } |
| delayed_wakeup_multimap_.insert(std::make_pair(delayed_run_time, queue)); |
| } |
| void TimeDomain::RegisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue) { |
| - base::AutoLock lock(newly_updatable_lock_); |
| - newly_updatable_.push_back(queue); |
| + { |
| + base::AutoLock lock(newly_updatable_lock_); |
| + newly_updatable_.push_back(queue); |
| + } |
| + if (observer_) |
| + observer_->OnRegisterAsUpdatableTaskQueue(); |
| } |
| void TimeDomain::UnregisterAsUpdatableTaskQueue( |
| @@ -148,6 +154,10 @@ void TimeDomain::WakeupReadyDelayedQueues(LazyNow* lazy_now) { |
| } |
| } |
| +void TimeDomain::SetObserver(Observer* observer) { |
|
Sami
2015/11/24 12:48:48
Can we require this to be passed in at constructio
alex clarke (OOO till 29th)
2015/11/25 12:29:36
Agreed this is a bit subtle thanks to the ownershi
|
| + observer_ = observer; |
| +} |
| + |
| bool TimeDomain::NextScheduledRunTime(base::TimeTicks* out_time) const { |
| if (delayed_wakeup_multimap_.empty()) |
| return false; |