Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1185)

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/work_queue_sets_unittest.cc

Issue 2258713004: Make tasks cancellable inside the blink scheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Various comment nits addressed Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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");

Powered by Google App Engine
This is Rietveld 408576698