Chromium Code Reviews| Index: components/scheduler/child/scheduler_helper.h |
| diff --git a/components/scheduler/child/scheduler_helper.h b/components/scheduler/child/scheduler_helper.h |
| index 16dc77a40daf70dcb6c4076d5c68c8a2eb4b4f8f..c49bff8b58bd32a6a009bfc4581439e59245ee6d 100644 |
| --- a/components/scheduler/child/scheduler_helper.h |
| +++ b/components/scheduler/child/scheduler_helper.h |
| @@ -18,7 +18,7 @@ namespace scheduler { |
| class SchedulerTaskRunnerDelegate; |
| // Common scheduler functionality for default tasks. |
| -class SCHEDULER_EXPORT SchedulerHelper { |
| +class SCHEDULER_EXPORT SchedulerHelper : public TaskQueueManager::Observer { |
| public: |
| // Category strings must have application lifetime (statics or |
| // literals). They may not include " chars. |
| @@ -26,7 +26,11 @@ class SCHEDULER_EXPORT SchedulerHelper { |
| const char* tracing_category, |
| const char* disabled_by_default_tracing_category, |
| const char* disabled_by_default_verbose_tracing_category); |
| - ~SchedulerHelper(); |
| + ~SchedulerHelper() override; |
| + |
| + // TaskQueueManager::Observer implementation: |
| + void OnUnregisterTaskQueue( |
| + const scoped_refptr<internal::TaskQueueImpl>& queue) override; |
| // Returns the default task runner. |
| scoped_refptr<TaskQueue> DefaultTaskRunner(); |
| @@ -62,6 +66,19 @@ class SCHEDULER_EXPORT SchedulerHelper { |
| // Creates a new TaskQueue with the given |spec|. |
| scoped_refptr<TaskQueue> NewTaskQueue(const TaskQueue::Spec& spec); |
| + class SCHEDULER_EXPORT Observer { |
| + public: |
| + virtual ~Observer() {} |
| + |
| + // Called when |queue| is unregistered. |
| + virtual void OnUnregisterTaskQueue( |
| + const scoped_refptr<TaskQueue>& queue) = 0; |
| + }; |
| + |
| + // Called once to set the Observer. This function is called on the main |
| + // thread. If |observer| is null, then no callbacks will occur. |
|
Sami
2015/09/10 15:10:23
nit: mention that the observer should outlive this
alex clarke (OOO till 29th)
2015/09/10 15:56:24
Done.
|
| + void SetQueueObserver(Observer* observer); |
| + |
| // Accessor methods. |
| base::TimeTicks Now() const; |
| base::TimeTicks NextPendingDelayedTaskRunTime() const; |
| @@ -84,6 +101,7 @@ class SCHEDULER_EXPORT SchedulerHelper { |
| scoped_ptr<base::TickClock> time_source_; |
| + Observer* queue_observer_; // NOT OWNED |
| const char* tracing_category_; |
| const char* disabled_by_default_tracing_category_; |