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 0a24636c20c8082417c45cf28ef6cf86e92ab559..abddb683d3b47015ebdf67e6bab154bc6cbb1fce 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 |
@@ -170,7 +170,12 @@ bool TaskQueueSelector::PrioritizingSelector:: |
EnqueueOrder delayed_enqueue_order; |
if (delayed_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet( |
priority, &delayed_queue, &delayed_enqueue_order)) { |
- if (immediate_enqueue_order < delayed_enqueue_order) { |
+ // When comparing enqueue orders of immediate and delayed tasks, only look |
+ // at the sequence number because the delay has already been applied. Note |
+ // that the delayed run time is still taken into account by TaskQueueSets |
+ // when comparing tasks across different queues. |
+ if (immediate_enqueue_order.sequence_num < |
+ delayed_enqueue_order.sequence_num) { |
*out_work_queue = immediate_queue; |
} else { |
*out_chose_delayed_over_immediate = true; |