| 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 c0895ba4e0103d4d7372b136a8a78adcb8b722e4..d04afa82d96c908e9801a38d520d2e6606db0307 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),
|
| + queue_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::SetQueueObserver(Observer* observer) {
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| + queue_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 (queue_observer_)
|
| + queue_observer_->OnUnregisterTaskQueue(task_queue);
|
| +
|
| // 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);
|
| @@ -341,8 +350,9 @@ bool TaskQueueManager::ProcessTaskFromWorkQueue(
|
| WillProcessTask(pending_task));
|
| queue->NotifyWillProcessTask(pending_task);
|
| }
|
| - TRACE_EVENT1(disabled_by_default_tracing_category_,
|
| - "Run Task From Queue", "queue", queue->GetName());
|
| + TRACE_EVENT2(disabled_by_default_tracing_category_,
|
| + "TaskQueueManager::RunTask", "queue", queue->GetName(),
|
| + "origin", queue->GetOrigin());
|
| task_annotator_.RunTask("TaskQueueManager::PostTask", pending_task);
|
|
|
| // Detect if the TaskQueueManager just got deleted. If this happens we must
|
|
|