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; |