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); |