| Index: Source/platform/scheduler/SchedulerTest.cpp
|
| diff --git a/Source/platform/scheduler/SchedulerTest.cpp b/Source/platform/scheduler/SchedulerTest.cpp
|
| index b2f468c265dce763949d97653afef9b091ddd71d..0e9e61b1496d49d4813e1f37ac044ee934c966a3 100644
|
| --- a/Source/platform/scheduler/SchedulerTest.cpp
|
| +++ b/Source/platform/scheduler/SchedulerTest.cpp
|
| @@ -176,6 +176,13 @@ public:
|
| m_scheduler->enterSchedulerPolicy(SchedulerForTest::Normal);
|
| }
|
|
|
| + virtual void TearDown() OVERRIDE
|
| + {
|
| + // If the Scheduler hasn't been shut down then explicitly flush the tasks.
|
| + if (Scheduler::shared())
|
| + runPendingTasks();
|
| + }
|
| +
|
| void runPendingTasks()
|
| {
|
| m_platformSupport.runPendingTasks();
|
| @@ -467,6 +474,13 @@ TEST_F(SchedulerTest, TestInputEventDoesNotTriggerShouldYield_InNormalMode)
|
| EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork());
|
| }
|
|
|
| +TEST_F(SchedulerTest, TestDidReceiveInputEventDoesNotTriggerShouldYield)
|
| +{
|
| + m_scheduler->didReceiveInputEvent();
|
| +
|
| + EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork());
|
| +}
|
| +
|
| TEST_F(SchedulerTest, TestCompositorEventDoesNotTriggerShouldYield_InNormalMode)
|
| {
|
| m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask));
|
| @@ -474,7 +488,17 @@ TEST_F(SchedulerTest, TestCompositorEventDoesNotTriggerShouldYield_InNormalMode)
|
| EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork());
|
| }
|
|
|
| -TEST_F(SchedulerTest, TestInputEventDoesTriggerShouldYield_InLowSchedulerPolicy)
|
| +TEST_F(SchedulerTest, TestCompositorEventDoesTriggerShouldYieldAfterDidReceiveInputEvent)
|
| +{
|
| + m_scheduler->didReceiveInputEvent();
|
| +
|
| + ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork());
|
| + m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask));
|
| +
|
| + EXPECT_TRUE(m_scheduler->shouldYieldForHighPriorityWork());
|
| +}
|
| +
|
| +TEST_F(SchedulerTest, TestInputEventDoesTriggerShouldYield_InCompositorPriorityMode)
|
| {
|
| m_scheduler->enterSchedulerPolicy(SchedulerForTest::CompositorPriority);
|
| m_scheduler->postInputTask(FROM_HERE, WTF::bind(&dummyTask));
|
| @@ -482,7 +506,7 @@ TEST_F(SchedulerTest, TestInputEventDoesTriggerShouldYield_InLowSchedulerPolicy)
|
| EXPECT_TRUE(m_scheduler->shouldYieldForHighPriorityWork());
|
| }
|
|
|
| -TEST_F(SchedulerTest, TestCompositorEventDoesTriggerShouldYield_InLowSchedulerPolicy)
|
| +TEST_F(SchedulerTest, TestCompositorEventDoesTriggerShouldYield_InCompositorPriorityMode)
|
| {
|
| m_scheduler->enterSchedulerPolicy(SchedulerForTest::CompositorPriority);
|
| m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask));
|
| @@ -505,4 +529,21 @@ TEST_F(SchedulerTest, TestCompositorEvent_LowSchedulerPolicyDoesntLastLong)
|
| EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork());
|
| }
|
|
|
| +TEST_F(SchedulerTest, testDidReceiveInputEvent_DoesntTriggerLowLatencyModeForLong)
|
| +{
|
| + m_platformSupport.setMonotonicTimeForTest(1000.0);
|
| +
|
| + // Note the latency mode gets reset by executeHighPriorityTasks, so we need a dummy task here
|
| + // to make sure runPendingTasks triggers executeHighPriorityTasks.
|
| + m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask));
|
| + m_scheduler->didReceiveInputEvent();
|
| + m_platformSupport.setMonotonicTimeForTest(1000.5);
|
| + runPendingTasks();
|
| +
|
| + ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork());
|
| + m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask));
|
| +
|
| + EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork());
|
| +}
|
| +
|
| } // namespace
|
|
|