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 edbff115f8fa4e3d70d4752cd44003dbfbeda8fb..d9ef4887a9ab9823e7fdf784a7528c9f143c7801 100644 |
--- a/third_party/WebKit/Source/platform/TimerTest.cpp |
+++ b/third_party/WebKit/Source/platform/TimerTest.cpp |
@@ -28,8 +28,9 @@ namespace { |
class TimerTest : public testing::Test { |
public: |
void SetUp() override { |
+ m_platform.reset(new TestingPlatformSupportWithMockScheduler); |
m_runTimes.clear(); |
- m_platform.advanceClockSeconds(10.0); |
+ m_platform->advanceClockSeconds(10.0); |
m_startTime = monotonicallyIncreasingTime(); |
} |
@@ -45,7 +46,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 +54,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 +72,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 +132,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 +145,7 @@ TEST_F(TimerTest, StartOneShot_ZeroAndCancel) { |
timer.stop(); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(m_runTimes.size()); |
} |
@@ -156,14 +158,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 +176,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 +195,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 +210,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 +225,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 +234,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 +246,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 +254,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 +267,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 +276,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 +285,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 +315,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 +332,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 +369,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 +377,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 +404,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 +453,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 +468,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 +484,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 +494,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 +538,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)); |
scheduler::WebTaskRunnerImpl webTaskRunner(taskRunner); |
TimerForTest<TimerTest> timer(&webTaskRunner, this, &TimerTest::countingTask); |
@@ -553,7 +555,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()); |
} |
@@ -570,7 +572,7 @@ TEST_F(TimerTest, DestructOnHeapTimer) { |
EXPECT_TRUE(record->ownerIsDestructed()); |
EXPECT_FALSE(record->timerHasFired()); |
- m_platform.runUntilIdle(); |
+ m_platform->runUntilIdle(); |
EXPECT_FALSE(record->timerHasFired()); |
} |
@@ -590,7 +592,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()); |
} |
@@ -621,14 +623,14 @@ TEST_F(TimerTest, MoveToNewTaskRunnerOneShot) { |
std::vector<WebTaskRunner*> runOrder; |
scoped_refptr<scheduler::TaskQueue> taskRunner1( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
scheduler::WebTaskRunnerImpl webTaskRunner1(taskRunner1); |
TaskObserver taskObserver1(&webTaskRunner1, &runOrder); |
taskRunner1->AddTaskObserver(&taskObserver1); |
scoped_refptr<scheduler::TaskQueue> taskRunner2( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
scheduler::WebTaskRunnerImpl webTaskRunner2(taskRunner2); |
TaskObserver taskObserver2(&webTaskRunner2, &runOrder); |
@@ -641,11 +643,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)); |
@@ -659,14 +661,14 @@ TEST_F(TimerTest, MoveToNewTaskRunnerRepeating) { |
std::vector<WebTaskRunner*> runOrder; |
scoped_refptr<scheduler::TaskQueue> taskRunner1( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
scheduler::WebTaskRunnerImpl webTaskRunner1(taskRunner1); |
TaskObserver taskObserver1(&webTaskRunner1, &runOrder); |
taskRunner1->AddTaskObserver(&taskObserver1); |
scoped_refptr<scheduler::TaskQueue> taskRunner2( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
scheduler::WebTaskRunnerImpl webTaskRunner2(taskRunner2); |
TaskObserver taskObserver2(&webTaskRunner2, &runOrder); |
@@ -679,11 +681,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)); |
@@ -699,19 +701,19 @@ 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)); |
scheduler::WebTaskRunnerImpl webTaskRunner1(taskRunner1); |
scoped_refptr<scheduler::TaskQueue> taskRunner2( |
- m_platform.rendererScheduler()->NewTimerTaskRunner( |
+ m_platform->rendererScheduler()->NewTimerTaskRunner( |
scheduler::TaskQueue::QueueType::TEST)); |
scheduler::WebTaskRunnerImpl webTaskRunner2(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()); |