Index: third_party/WebKit/Source/platform/TimerTest.cpp |
diff --git a/third_party/WebKit/Source/platform/TimerTest.cpp b/third_party/WebKit/Source/platform/TimerTest.cpp |
index fe471f0c8600b8618fa1feecbd0ef0b39b85d443..1f8b58d3295f179303f0a59a425d18b0def6169f 100644 |
--- a/third_party/WebKit/Source/platform/TimerTest.cpp |
+++ b/third_party/WebKit/Source/platform/TimerTest.cpp |
@@ -28,8 +28,10 @@ namespace { |
class TimerTest : public testing::Test { |
public: |
void SetUp() override { |
+ m_platform.reset( |
+ WTF::makeUnique<TestingPlatformSupportWithMockScheduler>()); |
m_runTimes.clear(); |
- m_platform.advanceClockSeconds(10.0); |
+ m_platform->advanceClockSeconds(10.0); |
m_startTime = monotonicallyIncreasingTime(); |
} |
@@ -45,7 +47,7 @@ class TimerTest : public testing::Test { |
void runUntilDeadline(double deadline) { |
double period = deadline - monotonicallyIncreasingTime(); |
EXPECT_GE(period, 0.0); |
- m_platform.runForPeriodSeconds(period); |
+ m_platform->runForPeriodSeconds(period); |
} |
// Returns false if there are no pending delayed tasks, otherwise sets |time| |
@@ -53,13 +55,13 @@ class TimerTest : public testing::Test { |
// fire. |
bool timeTillNextDelayedTask(double* time) const { |
base::TimeTicks nextRunTime; |
- if (!m_platform.rendererScheduler() |
+ if (!m_platform->rendererScheduler() |
->TimerTaskRunner() |
->GetTimeDomain() |
->NextScheduledRunTime(&nextRunTime)) |
return false; |
*time = (nextRunTime - |
- m_platform.rendererScheduler() |
+ m_platform->rendererScheduler() |
->TimerTaskRunner() |
->GetTimeDomain() |
->Now()) |
@@ -71,7 +73,8 @@ class TimerTest : public testing::Test { |
double m_startTime; |
WTF::Vector<double> m_runTimes; |
WTF::Vector<double> m_nextFireTimes; |
- TestingPlatformSupportWithMockScheduler m_platform; |
+ ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler> |
+ m_platform; |
}; |
class OnHeapTimerOwner final |
@@ -130,7 +133,7 @@ TEST_F(TimerTest, StartOneShot_Zero) { |
double runTime; |
EXPECT_FALSE(timeTillNextDelayedTask(&runTime)); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime)); |
} |
@@ -143,7 +146,7 @@ TEST_F(TimerTest, StartOneShot_ZeroAndCancel) { |
timer.stop(); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(m_runTimes.size()); |
} |
@@ -156,14 +159,14 @@ TEST_F(TimerTest, StartOneShot_ZeroAndCancelThenRepost) { |
timer.stop(); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(m_runTimes.size()); |
timer.startOneShot(0, BLINK_FROM_HERE); |
EXPECT_FALSE(timeTillNextDelayedTask(&runTime)); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime)); |
} |
@@ -174,14 +177,14 @@ TEST_F(TimerTest, StartOneShot_Zero_RepostingAfterRunning) { |
double runTime; |
EXPECT_FALSE(timeTillNextDelayedTask(&runTime)); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime)); |
timer.startOneShot(0, BLINK_FROM_HERE); |
EXPECT_FALSE(timeTillNextDelayedTask(&runTime)); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime, m_startTime)); |
} |
@@ -193,7 +196,7 @@ TEST_F(TimerTest, StartOneShot_NonZero) { |
EXPECT_TRUE(timeTillNextDelayedTask(&runTime)); |
EXPECT_FLOAT_EQ(10.0, runTime); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 10.0)); |
} |
@@ -208,7 +211,7 @@ TEST_F(TimerTest, StartOneShot_NonZeroAndCancel) { |
timer.stop(); |
EXPECT_TRUE(timeTillNextDelayedTask(&runTime)); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(m_runTimes.size()); |
} |
@@ -223,7 +226,7 @@ TEST_F(TimerTest, StartOneShot_NonZeroAndCancelThenRepost) { |
timer.stop(); |
EXPECT_TRUE(timeTillNextDelayedTask(&runTime)); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(m_runTimes.size()); |
double secondPostTime = monotonicallyIncreasingTime(); |
@@ -232,7 +235,7 @@ TEST_F(TimerTest, StartOneShot_NonZeroAndCancelThenRepost) { |
EXPECT_TRUE(timeTillNextDelayedTask(&runTime)); |
EXPECT_FLOAT_EQ(10.0, runTime); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(secondPostTime + 10.0)); |
} |
@@ -244,7 +247,7 @@ TEST_F(TimerTest, StartOneShot_NonZero_RepostingAfterRunning) { |
EXPECT_TRUE(timeTillNextDelayedTask(&runTime)); |
EXPECT_FLOAT_EQ(10.0, runTime); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 10.0)); |
timer.startOneShot(20, BLINK_FROM_HERE); |
@@ -252,7 +255,7 @@ TEST_F(TimerTest, StartOneShot_NonZero_RepostingAfterRunning) { |
EXPECT_TRUE(timeTillNextDelayedTask(&runTime)); |
EXPECT_FLOAT_EQ(20.0, runTime); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 10.0, m_startTime + 30.0)); |
} |
@@ -265,7 +268,7 @@ TEST_F(TimerTest, PostingTimerTwiceWithSameRunTimeDoesNothing) { |
EXPECT_TRUE(timeTillNextDelayedTask(&runTime)); |
EXPECT_FLOAT_EQ(10.0, runTime); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 10.0)); |
} |
@@ -274,7 +277,7 @@ TEST_F(TimerTest, PostingTimerTwiceWithNewerRunTimeCancelsOriginalTask) { |
timer.startOneShot(10, BLINK_FROM_HERE); |
timer.startOneShot(0, BLINK_FROM_HERE); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 0.0)); |
} |
@@ -283,7 +286,7 @@ TEST_F(TimerTest, PostingTimerTwiceWithLaterRunTimeCancelsOriginalTask) { |
timer.startOneShot(0, BLINK_FROM_HERE); |
timer.startOneShot(10, BLINK_FROM_HERE); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 10.0)); |
} |
@@ -313,7 +316,7 @@ TEST_F(TimerTest, StartRepeatingTask_ThenCancel) { |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 1.0, m_startTime + 2.0)); |
timer.stop(); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 1.0, m_startTime + 2.0)); |
} |
@@ -330,7 +333,7 @@ TEST_F(TimerTest, StartRepeatingTask_ThenPostOneShot) { |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 1.0, m_startTime + 2.0)); |
timer.startOneShot(0, BLINK_FROM_HERE); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(m_startTime + 1.0, m_startTime + 2.0, |
m_startTime + 2.5)); |
@@ -367,7 +370,7 @@ TEST_F(TimerTest, IsActive_AfterRunning_OneShotZero) { |
Timer<TimerTest> timer(this, &TimerTest::countingTask); |
timer.startOneShot(0, BLINK_FROM_HERE); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(timer.isActive()); |
} |
@@ -375,7 +378,7 @@ TEST_F(TimerTest, IsActive_AfterRunning_OneShotNonZero) { |
Timer<TimerTest> timer(this, &TimerTest::countingTask); |
timer.startOneShot(10, BLINK_FROM_HERE); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(timer.isActive()); |
} |
@@ -402,12 +405,12 @@ TEST_F(TimerTest, NextFireInterval_OneShotNonZero) { |
} |
TEST_F(TimerTest, NextFireInterval_OneShotNonZero_AfterAFewSeconds) { |
- m_platform.setAutoAdvanceNowToPendingTasks(false); |
+ m_platform->setAutoAdvanceNowToPendingTasks(false); |
Timer<TimerTest> timer(this, &TimerTest::countingTask); |
timer.startOneShot(10, BLINK_FROM_HERE); |
- m_platform.advanceClockSeconds(2.0); |
+ m_platform->advanceClockSeconds(2.0); |
EXPECT_FLOAT_EQ(8.0, timer.nextFireInterval()); |
} |
@@ -451,7 +454,7 @@ TEST_F(TimerTest, AugmentRepeatInterval) { |
EXPECT_FLOAT_EQ(10.0, timer.repeatInterval()); |
EXPECT_FLOAT_EQ(10.0, timer.nextFireInterval()); |
- m_platform.advanceClockSeconds(2.0); |
+ m_platform->advanceClockSeconds(2.0); |
timer.augmentRepeatInterval(10); |
EXPECT_FLOAT_EQ(20.0, timer.repeatInterval()); |
@@ -466,14 +469,14 @@ TEST_F(TimerTest, AugmentRepeatInterval) { |
} |
TEST_F(TimerTest, AugmentRepeatInterval_TimerFireDelayed) { |
- m_platform.setAutoAdvanceNowToPendingTasks(false); |
+ m_platform->setAutoAdvanceNowToPendingTasks(false); |
Timer<TimerTest> timer(this, &TimerTest::countingTask); |
timer.startRepeating(10, BLINK_FROM_HERE); |
EXPECT_FLOAT_EQ(10.0, timer.repeatInterval()); |
EXPECT_FLOAT_EQ(10.0, timer.nextFireInterval()); |
- m_platform.advanceClockSeconds(123.0); // Make the timer long overdue. |
+ m_platform->advanceClockSeconds(123.0); // Make the timer long overdue. |
timer.augmentRepeatInterval(10); |
EXPECT_FLOAT_EQ(20.0, timer.repeatInterval()); |
@@ -482,7 +485,7 @@ TEST_F(TimerTest, AugmentRepeatInterval_TimerFireDelayed) { |
} |
TEST_F(TimerTest, RepeatingTimerDoesNotDrift) { |
- m_platform.setAutoAdvanceNowToPendingTasks(false); |
+ m_platform->setAutoAdvanceNowToPendingTasks(false); |
Timer<TimerTest> timer(this, &TimerTest::recordNextFireTimeTask); |
timer.startRepeating(2.0, BLINK_FROM_HERE); |
@@ -492,24 +495,24 @@ TEST_F(TimerTest, RepeatingTimerDoesNotDrift) { |
// Simulate timer firing early. Next scheduled task to run at |
// m_startTime + 4.0 |
- m_platform.advanceClockSeconds(1.9); |
+ m_platform->advanceClockSeconds(1.9); |
runUntilDeadline(monotonicallyIncreasingTime() + 0.2); |
// Next scheduled task to run at m_startTime + 6.0 |
- m_platform.runForPeriodSeconds(2.0); |
+ m_platform->runForPeriodSeconds(2.0); |
// Next scheduled task to run at m_startTime + 8.0 |
- m_platform.runForPeriodSeconds(2.1); |
+ m_platform->runForPeriodSeconds(2.1); |
// Next scheduled task to run at m_startTime + 10.0 |
- m_platform.runForPeriodSeconds(2.9); |
+ m_platform->runForPeriodSeconds(2.9); |
// Next scheduled task to run at m_startTime + 14.0 (skips a beat) |
- m_platform.advanceClockSeconds(3.1); |
- m_platform.runUntilIdle(); |
+ m_platform->advanceClockSeconds(3.1); |
+ m_platform->runUntilIdle(); |
// Next scheduled task to run at m_startTime + 18.0 (skips a beat) |
- m_platform.advanceClockSeconds(4.0); |
- m_platform.runUntilIdle(); |
+ m_platform->advanceClockSeconds(4.0); |
+ m_platform->runUntilIdle(); |
// Next scheduled task to run at m_startTime + 28.0 (skips 5 beats) |
- m_platform.advanceClockSeconds(10.0); |
- m_platform.runUntilIdle(); |
+ m_platform->advanceClockSeconds(10.0); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT( |
m_nextFireTimes, |
@@ -536,7 +539,7 @@ class TimerForTest : public TaskRunnerTimer<TimerFiredClass> { |
TEST_F(TimerTest, UserSuppliedWebTaskRunner) { |
scoped_refptr<scheduler::TaskQueue> taskRunner( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner = |
scheduler::WebTaskRunnerImpl::create(taskRunner); |
@@ -554,7 +557,7 @@ TEST_F(TimerTest, RunOnHeapTimer) { |
owner->startOneShot(0, BLINK_FROM_HERE); |
EXPECT_FALSE(record->timerHasFired()); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_TRUE(record->timerHasFired()); |
} |
@@ -571,7 +574,7 @@ TEST_F(TimerTest, DestructOnHeapTimer) { |
EXPECT_TRUE(record->ownerIsDestructed()); |
EXPECT_FALSE(record->timerHasFired()); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(record->timerHasFired()); |
} |
@@ -591,7 +594,7 @@ TEST_F(TimerTest, MarkOnHeapTimerAsUnreachable) { |
{ |
GCForbiddenScope scope; |
EXPECT_FALSE(record->timerHasFired()); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(record->timerHasFired()); |
EXPECT_FALSE(record->ownerIsDestructed()); |
} |
@@ -622,7 +625,7 @@ TEST_F(TimerTest, MoveToNewTaskRunnerOneShot) { |
std::vector<RefPtr<WebTaskRunner>> runOrder; |
scoped_refptr<scheduler::TaskQueue> taskRunner1( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner1 = |
scheduler::WebTaskRunnerImpl::create(taskRunner1); |
@@ -630,7 +633,7 @@ TEST_F(TimerTest, MoveToNewTaskRunnerOneShot) { |
taskRunner1->AddTaskObserver(&taskObserver1); |
scoped_refptr<scheduler::TaskQueue> taskRunner2( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner2 = |
scheduler::WebTaskRunnerImpl::create(taskRunner2); |
@@ -643,11 +646,11 @@ TEST_F(TimerTest, MoveToNewTaskRunnerOneShot) { |
timer.startOneShot(1, BLINK_FROM_HERE); |
- m_platform.runForPeriodSeconds(0.5); |
+ m_platform->runForPeriodSeconds(0.5); |
timer.moveToNewTaskRunner(webTaskRunner2); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_THAT(m_runTimes, ElementsAre(startTime + 1.0)); |
@@ -661,7 +664,7 @@ TEST_F(TimerTest, MoveToNewTaskRunnerRepeating) { |
std::vector<RefPtr<WebTaskRunner>> runOrder; |
scoped_refptr<scheduler::TaskQueue> taskRunner1( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner1 = |
scheduler::WebTaskRunnerImpl::create(taskRunner1); |
@@ -669,7 +672,7 @@ TEST_F(TimerTest, MoveToNewTaskRunnerRepeating) { |
taskRunner1->AddTaskObserver(&taskObserver1); |
scoped_refptr<scheduler::TaskQueue> taskRunner2( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner2 = |
scheduler::WebTaskRunnerImpl::create(taskRunner2); |
@@ -682,11 +685,11 @@ TEST_F(TimerTest, MoveToNewTaskRunnerRepeating) { |
timer.startRepeating(1, BLINK_FROM_HERE); |
- m_platform.runForPeriodSeconds(2.5); |
+ m_platform->runForPeriodSeconds(2.5); |
timer.moveToNewTaskRunner(webTaskRunner2); |
- m_platform.runForPeriodSeconds(2); |
+ m_platform->runForPeriodSeconds(2); |
EXPECT_THAT(m_runTimes, ElementsAre(startTime + 1.0, startTime + 2.0, |
startTime + 3.0, startTime + 4.0)); |
@@ -702,20 +705,20 @@ TEST_F(TimerTest, MoveToNewTaskRunnerRepeating) { |
// runner it isn't activated. |
TEST_F(TimerTest, MoveToNewTaskRunnerWithoutTasks) { |
scoped_refptr<scheduler::TaskQueue> taskRunner1( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner1 = |
scheduler::WebTaskRunnerImpl::create(taskRunner1); |
scoped_refptr<scheduler::TaskQueue> taskRunner2( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner2 = |
scheduler::WebTaskRunnerImpl::create(taskRunner2); |
TimerForTest<TimerTest> timer(webTaskRunner1, this, &TimerTest::countingTask); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_TRUE(!m_runTimes.size()); |
EXPECT_TRUE(taskRunner1->IsEmpty()); |
EXPECT_TRUE(taskRunner2->IsEmpty()); |