| Index: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
|
| index 0ebf0ab05dbc9b287384c6ef5b41bd3683e7e720..dabe30ae8cf37d2be9070c136f7b2f5474a2a99f 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
|
| @@ -247,9 +247,20 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) {
|
| // when we are in DoWork (but WorkQueue may be deleted).
|
| internal::TaskQueueImpl* task_queue = work_queue->task_queue();
|
|
|
| + if (!delegate_->IsNested()) {
|
| + for (auto& observer : task_time_observers_)
|
| + observer.ReportTaskStartTime(MonotonicTimeInSeconds(task_start_time));
|
| + }
|
| +
|
| switch (ProcessTaskFromWorkQueue(work_queue)) {
|
| case ProcessTaskResult::DEFERRED:
|
| + // TODO - test this case.
|
| // If a task was deferred, try again with another task.
|
| + for (auto& observer : task_time_observers_) {
|
| + observer.ReportTaskEndTime(task_queue,
|
| + MonotonicTimeInSeconds(task_start_time),
|
| + MonotonicTimeInSeconds(task_start_time));
|
| + }
|
| continue;
|
| case ProcessTaskResult::EXECUTED:
|
| break;
|
| @@ -262,9 +273,9 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) {
|
| // Only report top level task durations.
|
| base::TimeTicks task_end_time = lazy_now.Now();
|
| for (auto& observer : task_time_observers_) {
|
| - observer.ReportTaskTime(task_queue,
|
| - MonotonicTimeInSeconds(task_start_time),
|
| - MonotonicTimeInSeconds(task_end_time));
|
| + observer.ReportTaskEndTime(task_queue,
|
| + MonotonicTimeInSeconds(task_start_time),
|
| + MonotonicTimeInSeconds(task_end_time));
|
| }
|
| task_start_time = task_end_time;
|
| }
|
|
|