Chromium Code Reviews| 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 31adb7257af790faa8ed72b0ed0487afd98a3768..889fcbb803e79cd2f7417945ae44cd65fa13ac24 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 |
| @@ -128,10 +128,7 @@ void TaskQueueManager::UnregisterTaskQueue( |
| selector_.RemoveQueue(task_queue.get()); |
| } |
| -void TaskQueueManager::UpdateWorkQueues( |
| - bool should_trigger_wakeup, |
| - const internal::TaskQueueImpl::Task* previous_task, |
| - LazyNow lazy_now) { |
| +void TaskQueueManager::UpdateWorkQueues(LazyNow lazy_now) { |
| TRACE_EVENT0(disabled_by_default_tracing_category_, |
| "TaskQueueManager::UpdateWorkQueues"); |
| @@ -139,8 +136,7 @@ void TaskQueueManager::UpdateWorkQueues( |
| LazyNow lazy_now_in_domain = time_domain == real_time_domain_.get() |
| ? lazy_now |
| : time_domain->CreateLazyNow(); |
| - time_domain->UpdateWorkQueues(should_trigger_wakeup, previous_task, |
| - lazy_now_in_domain); |
| + time_domain->UpdateWorkQueues(lazy_now_in_domain); |
| } |
| } |
| @@ -200,26 +196,17 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) { |
| if (!delegate_->IsNested() && task_time_tracker_) |
| task_start_time = lazy_now.Now(); |
| - // Pass false and nullptr to UpdateWorkQueues here to prevent waking up a |
| - // pump-after-wakeup queue. |
| - UpdateWorkQueues(false, nullptr, lazy_now); |
| - |
| - internal::TaskQueueImpl::Task previous_task; |
| + // TODO(alexclarke): Get rid of this and call oncer per loop iteration. |
|
Sami
2016/08/25 15:54:12
typo: once
alex clarke (OOO till 29th)
2016/08/26 13:29:08
Done.
|
| + UpdateWorkQueues(lazy_now); |
| for (int i = 0; i < work_batch_size_; i++) { |
| internal::WorkQueue* work_queue; |
| - if (!SelectWorkQueueToService(&work_queue)) { |
| + if (!SelectWorkQueueToService(&work_queue)) |
| break; |
| - } |
| - |
| - bool should_trigger_wakeup = work_queue->task_queue()->wakeup_policy() == |
| - TaskQueue::WakeupPolicy::CAN_WAKE_OTHER_QUEUES; |
| - switch (ProcessTaskFromWorkQueue(work_queue, &previous_task)) { |
| + switch (ProcessTaskFromWorkQueue(work_queue)) { |
| case ProcessTaskResult::DEFERRED: |
| - // If a task was deferred, try again with another task. Note that this |
| - // means deferred tasks (i.e. non-nestable tasks) will never trigger |
| - // queue wake-ups. |
| + // If a task was deferred, try again with another task. |
| continue; |
| case ProcessTaskResult::EXECUTED: |
| break; |
| @@ -237,7 +224,7 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) { |
| work_queue = nullptr; // The queue may have been unregistered. |
| - UpdateWorkQueues(should_trigger_wakeup, &previous_task, lazy_now); |
| + UpdateWorkQueues(lazy_now); |
| // Only run a single task per batch in nested run loops so that we can |
| // properly exit the nested loop when someone calls RunLoop::Quit(). |
| @@ -275,8 +262,7 @@ void TaskQueueManager::DidQueueTask( |
| } |
| TaskQueueManager::ProcessTaskResult TaskQueueManager::ProcessTaskFromWorkQueue( |
| - internal::WorkQueue* work_queue, |
| - internal::TaskQueueImpl::Task* out_previous_task) { |
| + internal::WorkQueue* work_queue) { |
| DCHECK(main_thread_checker_.CalledOnValidThread()); |
| scoped_refptr<DeletionSentinel> protect(deletion_sentinel_); |
| internal::TaskQueueImpl* queue = work_queue->task_queue(); |
| @@ -327,8 +313,6 @@ TaskQueueManager::ProcessTaskResult TaskQueueManager::ProcessTaskFromWorkQueue( |
| queue->NotifyDidProcessTask(pending_task); |
| } |
| - pending_task.task.Reset(); |
| - *out_previous_task = std::move(pending_task); |
| return ProcessTaskResult::EXECUTED; |
| } |
| @@ -341,14 +325,12 @@ void TaskQueueManager::MaybeRecordTaskDelayHistograms( |
| // Record delayed task lateness and immediate task queueing durations, but |
|
Sami
2016/08/25 15:54:12
Looks like this comment needs updating.
alex clarke (OOO till 29th)
2016/08/26 13:29:08
Done.
|
| // only for auto-pumped queues. Manually pumped and after wakeup queues can |
| // have arbitarially large delayes, which would cloud any analysis. |
| - if (queue->GetPumpPolicy() == TaskQueue::PumpPolicy::AUTO) { |
| - if (!pending_task.delayed_run_time.is_null()) { |
| - RecordDelayedTaskLateness(delegate_->NowTicks() - |
| - pending_task.delayed_run_time); |
| - } else if (!pending_task.time_posted.is_null()) { |
| - RecordImmediateTaskQueueingDuration(tracked_objects::TrackedTime::Now() - |
| - pending_task.time_posted); |
| - } |
| + if (!pending_task.delayed_run_time.is_null()) { |
| + RecordDelayedTaskLateness(delegate_->NowTicks() - |
| + pending_task.delayed_run_time); |
| + } else if (!pending_task.time_posted.is_null()) { |
| + RecordImmediateTaskQueueingDuration(tracked_objects::TrackedTime::Now() - |
| + pending_task.time_posted); |
| } |
| } |