Index: Source/platform/scheduler/SchedulerTest.cpp |
diff --git a/Source/platform/scheduler/SchedulerTest.cpp b/Source/platform/scheduler/SchedulerTest.cpp |
index 75789407a196a6030bd9164a5e2ecf4d62205cf9..7822ccefde52d74cc75379e4cec3a55403bdb1a3 100644 |
--- a/Source/platform/scheduler/SchedulerTest.cpp |
+++ b/Source/platform/scheduler/SchedulerTest.cpp |
@@ -239,9 +239,11 @@ void unorderedTestTask(int value, int* result) |
*result += value; |
} |
-void idleTestTask(int value, int* result, double allottedTime) |
+void idleTestTask(bool* taskRun, double expectedDeadline, double deadlineSeconds) |
{ |
- *result += value; |
+ EXPECT_EQ(false, *taskRun); |
+ EXPECT_EQ(expectedDeadline, deadlineSeconds); |
+ *taskRun = true; |
} |
TEST_F(SchedulerTest, TestPostTask) |
@@ -293,14 +295,30 @@ TEST_F(SchedulerTest, TestSharedTimer) |
TEST_F(SchedulerTest, TestIdleTask) |
{ |
- // TODO: Check task allottedTime when implemented in the scheduler. |
- int result = 0; |
- m_scheduler->postIdleTask(FROM_HERE, WTF::bind<double>(&idleTestTask, 1, &result)); |
- m_scheduler->postIdleTask(FROM_HERE, WTF::bind<double>(&idleTestTask, 1, &result)); |
- m_scheduler->postIdleTask(FROM_HERE, WTF::bind<double>(&idleTestTask, 1, &result)); |
- m_scheduler->postIdleTask(FROM_HERE, WTF::bind<double>(&idleTestTask, 1, &result)); |
+ bool taskRun = false; |
+ double firstDeadline = 1.1; |
+ double secondDeadline = 2.3; |
+ m_platformSupport.setMonotonicTimeForTest(0.1); |
+ |
+ m_scheduler->postIdleTask(FROM_HERE, WTF::bind<double>(&idleTestTask, &taskRun, secondDeadline)); |
+ |
+ runPendingTasks(); |
+ EXPECT_FALSE(taskRun); // Shouldn't run yet as no willBeginFrame. |
+ |
+ m_scheduler->willBeginFrame(firstDeadline); |
+ runPendingTasks(); |
+ EXPECT_FALSE(taskRun); // Shouldn't run yet as no didCommitFrameToCompositor. |
+ |
+ m_platformSupport.setMonotonicTimeForTest(firstDeadline + 0.1); |
+ m_scheduler->didCommitFrameToCompositor(); |
+ runPendingTasks(); |
+ EXPECT_FALSE(taskRun); // We missed the deadline. |
+ |
+ m_scheduler->willBeginFrame(secondDeadline); |
+ m_platformSupport.setMonotonicTimeForTest(secondDeadline - 0.1); |
+ m_scheduler->didCommitFrameToCompositor(); |
runPendingTasks(); |
- EXPECT_EQ(4, result); |
+ EXPECT_TRUE(taskRun); |
} |
TEST_F(SchedulerTest, TestTaskPrioritization_normalPolicy) |