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..b2fd4994ad121db9e40fb10905ef708e7188055a 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,20 @@ 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. |
+ // Note |observer| is expected to outlive the SchedulerHelper. |
+ void SetQueueObserver(Observer* observer); |
+ |
// Accessor methods. |
base::TimeTicks Now() const; |
base::TimeTicks NextPendingDelayedTaskRunTime() const; |
@@ -84,6 +102,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_; |