| Index: third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc
|
| index d7c5c297dc55d40a2499d483b0d382a3ea604c96..0a24636c20c8082417c45cf28ef6cf86e92ab559 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc
|
| @@ -163,12 +163,14 @@ bool TaskQueueSelector::PrioritizingSelector::
|
| WorkQueue** out_work_queue) const {
|
| WorkQueue* immediate_queue;
|
| DCHECK_EQ(*out_chose_delayed_over_immediate, false);
|
| - if (immediate_work_queue_sets_.GetOldestQueueInSet(priority,
|
| - &immediate_queue)) {
|
| + EnqueueOrder immediate_enqueue_order;
|
| + if (immediate_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet(
|
| + priority, &immediate_queue, &immediate_enqueue_order)) {
|
| WorkQueue* delayed_queue;
|
| - if (delayed_work_queue_sets_.GetOldestQueueInSet(priority,
|
| - &delayed_queue)) {
|
| - if (immediate_queue->ShouldRunBefore(delayed_queue)) {
|
| + EnqueueOrder delayed_enqueue_order;
|
| + if (delayed_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet(
|
| + priority, &delayed_queue, &delayed_enqueue_order)) {
|
| + if (immediate_enqueue_order < delayed_enqueue_order) {
|
| *out_work_queue = immediate_queue;
|
| } else {
|
| *out_chose_delayed_over_immediate = true;
|
| @@ -189,13 +191,9 @@ bool TaskQueueSelector::PrioritizingSelector::ChooseOldestWithPriority(
|
| // Select an immediate work queue if we are starving immediate tasks.
|
| if (task_queue_selector_->immediate_starvation_count_ >=
|
| kMaxDelayedStarvationTasks) {
|
| - if (ChooseOldestImmediateTaskWithPriority(priority, out_work_queue)) {
|
| + if (ChooseOldestImmediateTaskWithPriority(priority, out_work_queue))
|
| return true;
|
| - }
|
| - if (ChooseOldestDelayedTaskWithPriority(priority, out_work_queue)) {
|
| - return true;
|
| - }
|
| - return false;
|
| + return ChooseOldestDelayedTaskWithPriority(priority, out_work_queue);
|
| }
|
| return ChooseOldestImmediateOrDelayedTaskWithPriority(
|
| priority, out_chose_delayed_over_immediate, out_work_queue);
|
|
|