Chromium Code Reviews| Index: components/scheduler/child/task_queue_manager.cc |
| diff --git a/components/scheduler/child/task_queue_manager.cc b/components/scheduler/child/task_queue_manager.cc |
| index bf1e1565c3be775581bd9f9475a8375f85a2d3d1..a0e3c3affa73d552c7d58937891903206f4008b0 100644 |
| --- a/components/scheduler/child/task_queue_manager.cc |
| +++ b/components/scheduler/child/task_queue_manager.cc |
| @@ -34,6 +34,7 @@ TaskQueueManager::TaskQueueManager( |
| disabled_by_default_tracing_category), |
| disabled_by_default_verbose_tracing_category_( |
| disabled_by_default_verbose_tracing_category), |
| + observer_(nullptr), |
| deletion_sentinel_(new DeletionSentinel()), |
| weak_factory_(this) { |
| DCHECK(main_task_runner->RunsTasksOnCurrentThread()); |
| @@ -73,12 +74,20 @@ scoped_refptr<internal::TaskQueueImpl> TaskQueueManager::NewTaskQueue( |
| return queue; |
| } |
| +void TaskQueueManager::SetObserver(Observer* observer) { |
| + DCHECK(main_thread_checker_.CalledOnValidThread()); |
| + observer_ = observer; |
| +} |
| + |
| void TaskQueueManager::UnregisterTaskQueue( |
| scoped_refptr<internal::TaskQueueImpl> task_queue) { |
| TRACE_EVENT1(disabled_by_default_tracing_category_, |
| "TaskQueueManager::UnregisterTaskQueue", |
| "queue_name", task_queue->GetName()); |
| DCHECK(main_thread_checker_.CalledOnValidThread()); |
| + if (observer_) |
| + observer_->OnUnregisterTaskQueue(task_queue); |
|
rmcilroy
2015/09/18 13:15:46
Rather than adding this observer interface chain,
Sami
2015/09/21 10:52:36
That was the other alternative we thought about. T
rmcilroy
2015/09/23 09:44:25
Ahh, I didn't realize Unregister() was a TaskQueue
|
| + |
| // Add |task_queue| to |queues_to_delete_| so we can prevent it from being |
| // freed while any of our structures hold hold a raw pointer to it. |
| queues_to_delete_.insert(task_queue); |
| @@ -352,7 +361,7 @@ TaskQueueManager::ProcessTaskResult TaskQueueManager::ProcessTaskFromWorkQueue( |
| queue->NotifyWillProcessTask(pending_task); |
| } |
| TRACE_EVENT1(disabled_by_default_tracing_category_, |
| - "Run Task From Queue", "queue", queue->GetName()); |
| + "TaskQueueManager::RunTask", "queue", queue->GetName()); |
| task_annotator_.RunTask("TaskQueueManager::PostTask", pending_task); |
| // Detect if the TaskQueueManager just got deleted. If this happens we must |