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

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/time_domain.cc

Issue 2812703002: Revert of [scheduler] Add TaskQueue::Observer (Closed)
Patch Set: Manual Revert Created 3 years, 8 months 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: third_party/WebKit/Source/platform/scheduler/base/time_domain.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc b/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc
index bdf885b5da186342be32f72947d9259b9edfdcdf..23750b27a84bb881d76c8244a644f0e4edbc98ca 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc
@@ -13,7 +13,7 @@
namespace blink {
namespace scheduler {
-TimeDomain::TimeDomain() {}
+TimeDomain::TimeDomain(Observer* observer) : observer_(observer) {}
TimeDomain::~TimeDomain() {
DCHECK(main_thread_checker_.CalledOnValidThread());
@@ -38,96 +38,103 @@ void TimeDomain::ScheduleDelayedWork(
DCHECK(main_thread_checker_.CalledOnValidThread());
DCHECK_EQ(queue->GetTimeDomain(), this);
DCHECK(queue->IsQueueEnabled());
- // We only want to store a single wake-up per queue, so we need to remove any
+ // We only want to store a single wakeup per queue, so we need to remove any
// previously registered wake up for |queue|.
if (queue->heap_handle().IsValid()) {
- DCHECK_NE(queue->scheduled_time_domain_wake_up(), base::TimeTicks());
+ DCHECK_NE(queue->scheduled_time_domain_wakeup(), base::TimeTicks());
// O(log n)
- delayed_wake_up_queue_.ChangeKey(queue->heap_handle(), {wake_up, queue});
+ delayed_wakeup_queue_.ChangeKey(queue->heap_handle(), {wake_up, queue});
} else {
// O(log n)
- delayed_wake_up_queue_.insert({wake_up, queue});
+ delayed_wakeup_queue_.insert({wake_up, queue});
}
- queue->set_scheduled_time_domain_wake_up(wake_up.time);
+ queue->set_scheduled_time_domain_wakeup(wake_up.time);
- // If |queue| is the first wake-up then request the wake-up.
- if (delayed_wake_up_queue_.Min().queue == queue)
- RequestWakeUpAt(now, wake_up.time);
+ // If |queue| is the first wakeup then request the wakeup.
+ if (delayed_wakeup_queue_.Min().queue == queue)
+ RequestWakeupAt(now, wake_up.time);
+
+ if (observer_)
+ observer_->OnTimeDomainHasDelayedWork(queue);
+}
+
+void TimeDomain::OnQueueHasImmediateWork(internal::TaskQueueImpl* queue) {
+ if (observer_)
+ observer_->OnTimeDomainHasImmediateWork(queue);
}
void TimeDomain::CancelDelayedWork(internal::TaskQueueImpl* queue) {
DCHECK(main_thread_checker_.CalledOnValidThread());
DCHECK_EQ(queue->GetTimeDomain(), this);
- // If no wake-up has been requested then bail out.
+ // If no wakeup has been requested then bail out.
if (!queue->heap_handle().IsValid())
return;
- DCHECK_NE(queue->scheduled_time_domain_wake_up(), base::TimeTicks());
- DCHECK(!delayed_wake_up_queue_.empty());
- base::TimeTicks prev_first_wake_up =
- delayed_wake_up_queue_.Min().wake_up.time;
+ DCHECK_NE(queue->scheduled_time_domain_wakeup(), base::TimeTicks());
+ DCHECK(!delayed_wakeup_queue_.empty());
+ base::TimeTicks prev_first_wakeup = delayed_wakeup_queue_.Min().wake_up.time;
// O(log n)
- delayed_wake_up_queue_.erase(queue->heap_handle());
+ delayed_wakeup_queue_.erase(queue->heap_handle());
- if (delayed_wake_up_queue_.empty()) {
- CancelWakeUpAt(prev_first_wake_up);
- } else if (prev_first_wake_up != delayed_wake_up_queue_.Min().wake_up.time) {
- CancelWakeUpAt(prev_first_wake_up);
- RequestWakeUpAt(Now(), delayed_wake_up_queue_.Min().wake_up.time);
+ if (delayed_wakeup_queue_.empty()) {
+ CancelWakeupAt(prev_first_wakeup);
+ } else if (prev_first_wakeup != delayed_wakeup_queue_.Min().wake_up.time) {
+ CancelWakeupAt(prev_first_wakeup);
+ RequestWakeupAt(Now(), delayed_wakeup_queue_.Min().wake_up.time);
}
}
-void TimeDomain::WakeUpReadyDelayedQueues(LazyNow* lazy_now) {
+void TimeDomain::WakeupReadyDelayedQueues(LazyNow* lazy_now) {
DCHECK(main_thread_checker_.CalledOnValidThread());
// Wake up any queues with pending delayed work. Note std::multimap stores
// the elements sorted by key, so the begin() iterator points to the earliest
- // queue to wake-up.
- while (!delayed_wake_up_queue_.empty() &&
- delayed_wake_up_queue_.Min().wake_up.time <= lazy_now->Now()) {
- internal::TaskQueueImpl* queue = delayed_wake_up_queue_.Min().queue;
+ // queue to wakeup.
+ while (!delayed_wakeup_queue_.empty() &&
+ delayed_wakeup_queue_.Min().wake_up.time <= lazy_now->Now()) {
+ internal::TaskQueueImpl* queue = delayed_wakeup_queue_.Min().queue;
base::Optional<internal::TaskQueueImpl::DelayedWakeUp> next_wake_up =
queue->WakeUpForDelayedWork(lazy_now);
if (next_wake_up) {
// O(log n)
- delayed_wake_up_queue_.ReplaceMin({*next_wake_up, queue});
- queue->set_scheduled_time_domain_wake_up(next_wake_up->time);
+ delayed_wakeup_queue_.ReplaceMin({*next_wake_up, queue});
+ queue->set_scheduled_time_domain_wakeup(next_wake_up->time);
} else {
// O(log n)
- delayed_wake_up_queue_.Pop();
- DCHECK_EQ(queue->scheduled_time_domain_wake_up(), base::TimeTicks());
+ delayed_wakeup_queue_.Pop();
+ DCHECK_EQ(queue->scheduled_time_domain_wakeup(), base::TimeTicks());
}
}
}
bool TimeDomain::NextScheduledRunTime(base::TimeTicks* out_time) const {
DCHECK(main_thread_checker_.CalledOnValidThread());
- if (delayed_wake_up_queue_.empty())
+ if (delayed_wakeup_queue_.empty())
return false;
- *out_time = delayed_wake_up_queue_.Min().wake_up.time;
+ *out_time = delayed_wakeup_queue_.Min().wake_up.time;
return true;
}
bool TimeDomain::NextScheduledTaskQueue(TaskQueue** out_task_queue) const {
DCHECK(main_thread_checker_.CalledOnValidThread());
- if (delayed_wake_up_queue_.empty())
+ if (delayed_wakeup_queue_.empty())
return false;
- *out_task_queue = delayed_wake_up_queue_.Min().queue;
+ *out_task_queue = delayed_wakeup_queue_.Min().queue;
return true;
}
void TimeDomain::AsValueInto(base::trace_event::TracedValue* state) const {
state->BeginDictionary();
state->SetString("name", GetName());
- state->SetInteger("registered_delay_count", delayed_wake_up_queue_.size());
- if (!delayed_wake_up_queue_.empty()) {
- base::TimeDelta delay = delayed_wake_up_queue_.Min().wake_up.time - Now();
+ state->SetInteger("registered_delay_count", delayed_wakeup_queue_.size());
+ if (!delayed_wakeup_queue_.empty()) {
+ base::TimeDelta delay = delayed_wakeup_queue_.Min().wake_up.time - Now();
state->SetDouble("next_delay_ms", delay.InMillisecondsF());
}
AsValueIntoInternal(state);

Powered by Google App Engine
This is Rietveld 408576698