Index: third_party/WebKit/Source/platform/scheduler/base/work_queue_sets_unittest.cc |
diff --git a/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets_unittest.cc |
index 5b107117250c3069b6fa4339037ba48304c70de7..7dbee0be71c2efafbfa22ba46a1fd9034006deb6 100644 |
--- a/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets_unittest.cc |
+++ b/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets_unittest.cc |
@@ -35,7 +35,8 @@ class WorkQueueSetsTest : public testing::Test { |
}; |
WorkQueue* NewTaskQueue(const char* queue_name) { |
- WorkQueue* queue = new WorkQueue(nullptr, "test"); |
+ WorkQueue* queue = new WorkQueue( |
+ nullptr, "test", TaskQueueImpl::Task::EnqueueOrderComparatorFn); |
work_queues_.push_back(base::WrapUnique(queue)); |
work_queue_sets_->AddQueue(queue, TaskQueue::CONTROL_PRIORITY); |
return queue; |
@@ -119,8 +120,8 @@ TEST_F(WorkQueueSetsTest, OnPopQueue) { |
WorkQueue* queue2 = NewTaskQueue("queue2"); |
WorkQueue* queue3 = NewTaskQueue("queue3"); |
queue1->Push(FakeTaskWithEnqueueOrder(6)); |
- queue2->Push(FakeTaskWithEnqueueOrder(3)); |
queue2->Push(FakeTaskWithEnqueueOrder(1)); |
+ queue2->Push(FakeTaskWithEnqueueOrder(3)); |
queue3->Push(FakeTaskWithEnqueueOrder(4)); |
size_t set = 3; |
work_queue_sets_->ChangeSetIndex(queue1, set); |
@@ -138,6 +139,58 @@ TEST_F(WorkQueueSetsTest, OnPopQueue) { |
EXPECT_EQ(queue2, selected_work_queue); |
} |
+TEST_F(WorkQueueSetsTest, OnQueueHeadChanged_RemoveOldestInSet) { |
+ WorkQueue* queue1 = NewTaskQueue("queue1"); |
+ WorkQueue* queue2 = NewTaskQueue("queue2"); |
+ WorkQueue* queue3 = NewTaskQueue("queue3"); |
+ queue1->Push(FakeTaskWithEnqueueOrder(6)); |
+ queue2->Push(FakeTaskWithEnqueueOrder(1)); |
+ queue3->Push(FakeTaskWithEnqueueOrder(4)); |
+ size_t set = 3; |
+ work_queue_sets_->ChangeSetIndex(queue1, set); |
+ work_queue_sets_->ChangeSetIndex(queue2, set); |
+ work_queue_sets_->ChangeSetIndex(queue3, set); |
+ |
+ WorkQueue* selected_work_queue; |
+ EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(set, &selected_work_queue)); |
+ EXPECT_EQ(queue2, selected_work_queue); |
+ |
+ queue2->PopTaskForTest(); |
+ work_queue_sets_->OnQueueHeadChanged(queue2, 1); |
+ |
+ EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(set, &selected_work_queue)); |
+ EXPECT_EQ(queue3, selected_work_queue); |
+} |
+ |
+TEST_F(WorkQueueSetsTest, OnQueueHeadChanged_RemoveMiddleValueFromSet) { |
+ WorkQueue* queue1 = NewTaskQueue("queue1"); |
+ WorkQueue* queue2 = NewTaskQueue("queue2"); |
+ WorkQueue* queue3 = NewTaskQueue("queue3"); |
+ queue1->Push(FakeTaskWithEnqueueOrder(6)); |
+ queue2->Push(FakeTaskWithEnqueueOrder(1)); |
+ queue3->Push(FakeTaskWithEnqueueOrder(4)); |
+ size_t set = 3; |
+ work_queue_sets_->ChangeSetIndex(queue1, set); |
+ work_queue_sets_->ChangeSetIndex(queue2, set); |
+ work_queue_sets_->ChangeSetIndex(queue3, set); |
+ |
+ WorkQueue* selected_work_queue; |
+ EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(set, &selected_work_queue)); |
+ EXPECT_EQ(queue2, selected_work_queue); |
+ |
+ queue3->PopTaskForTest(); |
+ work_queue_sets_->OnQueueHeadChanged(queue3, 4); |
+ |
+ EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(set, &selected_work_queue)); |
+ EXPECT_EQ(queue2, selected_work_queue); |
+ |
+ queue2->PopTaskForTest(); |
+ work_queue_sets_->OnQueueHeadChanged(queue2, 1); |
+ |
+ EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(set, &selected_work_queue)); |
+ EXPECT_EQ(queue1, selected_work_queue); |
+} |
+ |
TEST_F(WorkQueueSetsTest, OnPopQueue_QueueBecomesEmpty) { |
WorkQueue* queue1 = NewTaskQueue("queue"); |
WorkQueue* queue2 = NewTaskQueue("queue"); |