| Index: components/scheduler/base/time_domain.h
|
| diff --git a/components/scheduler/base/time_domain.h b/components/scheduler/base/time_domain.h
|
| index 476a68eb5f4299f78b66d2b069fef24320a1b37a..5cf39b709d11c09c47564c78a3f849565f6e7430 100644
|
| --- a/components/scheduler/base/time_domain.h
|
| +++ b/components/scheduler/base/time_domain.h
|
| @@ -23,9 +23,24 @@ class TaskQueueImpl;
|
| class TaskQueueManager;
|
| class TaskQueueManagerDelegate;
|
|
|
| -class SCHEDULER_EXPORT TimeDomain : public base::RefCounted<TimeDomain> {
|
| +class SCHEDULER_EXPORT TimeDomain {
|
| public:
|
| - TimeDomain();
|
| + class SCHEDULER_EXPORT Observer {
|
| + public:
|
| + virtual ~Observer() {}
|
| +
|
| + // Called when an empty TaskQueue registered with this TimeDomain has a task
|
| + // enqueued.
|
| + virtual void OnTimeDomainHasImmediateWork() = 0;
|
| +
|
| + // Called when a TaskQueue registered with this TimeDomain has a delayed
|
| + // task enqueued and no other delayed tasks associated with this TimeDomain
|
| + // are pending.
|
| + virtual void OnTimeDomainHasDelayedWork() = 0;
|
| + };
|
| +
|
| + explicit TimeDomain(Observer* observer);
|
| + virtual ~TimeDomain();
|
|
|
| // Returns a LazyNow that evaluate this TimeDomain's Now. Can be called from
|
| // any thread.
|
| @@ -46,9 +61,6 @@ class SCHEDULER_EXPORT TimeDomain : public base::RefCounted<TimeDomain> {
|
| protected:
|
| friend class internal::TaskQueueImpl;
|
| friend class TaskQueueManager;
|
| - friend class base::RefCounted<TimeDomain>;
|
| -
|
| - virtual ~TimeDomain();
|
|
|
| void AsValueInto(base::trace_event::TracedValue* state) const;
|
|
|
| @@ -70,6 +82,9 @@ class SCHEDULER_EXPORT TimeDomain : public base::RefCounted<TimeDomain> {
|
| base::TimeTicks delayed_run_time,
|
| LazyNow* lazy_now);
|
|
|
| + // Registers the |queue|.
|
| + void RegisterQueue(internal::TaskQueueImpl* queue);
|
| +
|
| // Removes |queue| from the set of task queues that UpdateWorkQueues calls
|
| // UpdateWorkQueue on.
|
| void UnregisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue);
|
| @@ -115,6 +130,10 @@ class SCHEDULER_EXPORT TimeDomain : public base::RefCounted<TimeDomain> {
|
| // only be accessed from the main thread.
|
| std::set<internal::TaskQueueImpl*> updatable_queue_set_;
|
|
|
| + std::set<internal::TaskQueueImpl*> registered_task_queues_;
|
| +
|
| + Observer* observer_;
|
| +
|
| base::ThreadChecker main_thread_checker_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TimeDomain);
|
|
|