Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(508)

Unified Diff: components/scheduler/base/time_domain.cc

Issue 1441073006: Move throttling of background timers into the renderer scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed various dchecks Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698