Index: Source/platform/scheduler/SchedulerTest.cpp |
diff --git a/Source/platform/scheduler/SchedulerTest.cpp b/Source/platform/scheduler/SchedulerTest.cpp |
index aa708556f5ee3b221c503c5a912dbde5a83681fc..548146e2ce99cf91a3aafc533c660a8f39c217d6 100644 |
--- a/Source/platform/scheduler/SchedulerTest.cpp |
+++ b/Source/platform/scheduler/SchedulerTest.cpp |
@@ -257,6 +257,13 @@ void idleTestTask(bool* taskRun, double expectedDeadline, double deadlineSeconds |
*taskRun = true; |
} |
+void repostingIdleTestTask(Scheduler* scheduler, int* runCount, double deadlineSeconds) |
+{ |
+ if (*runCount == 0) |
+ scheduler->postIdleTask(FROM_HERE, WTF::bind<double>(&repostingIdleTestTask, scheduler, runCount)); |
+ (*runCount)++; |
+} |
+ |
TEST_F(SchedulerTest, TestPostTask) |
{ |
int result = 0; |
@@ -332,6 +339,24 @@ TEST_F(SchedulerTest, TestIdleTask) |
EXPECT_TRUE(taskRun); |
} |
+TEST_F(SchedulerTest, TestRepostingIdleTask) |
+{ |
+ int runCount = 0; |
+ |
+ m_scheduler->postIdleTask(FROM_HERE, WTF::bind<double>(&repostingIdleTestTask, m_scheduler, &runCount)); |
+ |
+ enableIdleTasks(); |
+ runPendingTasks(); |
+ EXPECT_EQ(1, runCount); |
+ |
+ runPendingTasks(); |
+ EXPECT_EQ(1, runCount); // Reposted tasks shouldn't run until next idle period. |
+ |
+ enableIdleTasks(); |
+ runPendingTasks(); |
+ EXPECT_EQ(2, runCount); |
+} |
+ |
TEST_F(SchedulerTest, TestTaskPrioritization_normalPolicy) |
{ |
m_scheduler->postTask(FROM_HERE, WTF::bind(&SchedulerTest::appendToVector, this, std::string("L1"))); |