Chromium Code Reviews| Index: content/renderer/scheduler/task_queue_manager.cc |
| diff --git a/content/renderer/scheduler/task_queue_manager.cc b/content/renderer/scheduler/task_queue_manager.cc |
| index 112a37ca33c120b61319a12d587106335badfaf0..a50b6097b0b3eea97a998b5c47866a36ed14aa7b 100644 |
| --- a/content/renderer/scheduler/task_queue_manager.cc |
| +++ b/content/renderer/scheduler/task_queue_manager.cc |
| @@ -7,6 +7,7 @@ |
| #include <queue> |
| #include "base/bind.h" |
| +#include "base/observer_list.h" |
| #include "base/trace_event/trace_event.h" |
| #include "base/trace_event/trace_event_argument.h" |
| #include "cc/test/test_now_source.h" |
| @@ -413,8 +414,12 @@ void TaskQueueManager::ProcessTaskFromWorkQueue(size_t queue_index) { |
| main_task_runner_->PostNonNestableTask(pending_task.posted_from, |
| pending_task.task); |
| } else { |
| + FOR_EACH_OBSERVER(base::MessageLoop::TaskObserver, task_observers_, |
|
alex clarke (OOO till 29th)
2015/02/13 11:02:07
Aren't we risking a scenario like this:
base::Mes
Sami
2015/02/13 12:09:09
We talked about this offline. It should be fine be
|
| + WillProcessTask(pending_task)); |
| task_annotator_.RunTask("TaskQueueManager::PostTask", |
| "TaskQueueManager::RunTask", pending_task); |
| + FOR_EACH_OBSERVER(base::MessageLoop::TaskObserver, task_observers_, |
| + DidProcessTask(pending_task)); |
| } |
| } |
| @@ -442,6 +447,18 @@ void TaskQueueManager::SetWorkBatchSize(int work_batch_size) { |
| work_batch_size_ = work_batch_size; |
| } |
| +void TaskQueueManager::AddTaskObserver( |
| + base::MessageLoop::TaskObserver* task_observer) { |
| + DCHECK(main_thread_checker_.CalledOnValidThread()); |
| + task_observers_.AddObserver(task_observer); |
| +} |
| + |
| +void TaskQueueManager::RemoveTaskObserver( |
| + base::MessageLoop::TaskObserver* task_observer) { |
| + DCHECK(main_thread_checker_.CalledOnValidThread()); |
| + task_observers_.RemoveObserver(task_observer); |
| +} |
| + |
| void TaskQueueManager::SetTimeSourceForTesting( |
| scoped_refptr<cc::TestNowSource> time_source) { |
| DCHECK(main_thread_checker_.CalledOnValidThread()); |