| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "platform/Timer.h" | 6 #include "platform/Timer.h" |
| 7 | 7 |
| 8 #include "platform/testing/TestingPlatformSupport.h" |
| 8 #include "public/platform/Platform.h" | 9 #include "public/platform/Platform.h" |
| 9 #include "public/platform/WebScheduler.h" | 10 #include "public/platform/WebScheduler.h" |
| 10 #include "public/platform/WebThread.h" | 11 #include "public/platform/WebThread.h" |
| 11 #include "public/platform/WebViewScheduler.h" | 12 #include "public/platform/WebViewScheduler.h" |
| 12 #include "testing/gmock/include/gmock/gmock.h" | 13 #include "testing/gmock/include/gmock/gmock.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 14 #include <queue> | 15 #include <queue> |
| 15 | 16 |
| 16 using testing::ElementsAre; | 17 using testing::ElementsAre; |
| 17 | 18 |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 | 230 |
| 230 virtual void exitRunLoop() | 231 virtual void exitRunLoop() |
| 231 { | 232 { |
| 232 ASSERT_NOT_REACHED(); | 233 ASSERT_NOT_REACHED(); |
| 233 } | 234 } |
| 234 | 235 |
| 235 private: | 236 private: |
| 236 OwnPtr<MockWebScheduler> m_webScheduler; | 237 OwnPtr<MockWebScheduler> m_webScheduler; |
| 237 }; | 238 }; |
| 238 | 239 |
| 239 class TimerTestPlatform : public Platform { | 240 class TimerTestPlatform : public TestingPlatformSupport { |
| 240 public: | 241 public: |
| 241 TimerTestPlatform() | 242 TimerTestPlatform() |
| 242 : m_webThread(adoptPtr(new FakeWebThread())) { } | 243 : m_webThread(adoptPtr(new FakeWebThread())) { } |
| 243 ~TimerTestPlatform() override { } | 244 ~TimerTestPlatform() override { } |
| 244 | 245 |
| 245 WebThread* currentThread() override | 246 WebThread* currentThread() override |
| 246 { | 247 { |
| 247 return m_webThread.get(); | 248 return m_webThread.get(); |
| 248 } | 249 } |
| 249 | 250 |
| 250 void cryptographicallyRandomValues(unsigned char*, size_t) override | |
| 251 { | |
| 252 ASSERT_NOT_REACHED(); | |
| 253 } | |
| 254 | |
| 255 const unsigned char* getTraceCategoryEnabledFlag(const char* categoryName) o
verride | |
| 256 { | |
| 257 static const unsigned char enabled[] = {0}; | |
| 258 return enabled; | |
| 259 } | |
| 260 | |
| 261 void runUntilIdle() | 251 void runUntilIdle() |
| 262 { | 252 { |
| 263 mockScheduler()->runUntilIdle(); | 253 mockScheduler()->runUntilIdle(); |
| 264 } | 254 } |
| 265 | 255 |
| 266 void runPendingTasks() | 256 void runPendingTasks() |
| 267 { | 257 { |
| 268 mockScheduler()->runPendingTasks(); | 258 mockScheduler()->runPendingTasks(); |
| 269 } | 259 } |
| 270 | 260 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 289 return static_cast<MockWebScheduler*>(m_webThread->scheduler()); | 279 return static_cast<MockWebScheduler*>(m_webThread->scheduler()); |
| 290 } | 280 } |
| 291 | 281 |
| 292 OwnPtr<FakeWebThread> m_webThread; | 282 OwnPtr<FakeWebThread> m_webThread; |
| 293 }; | 283 }; |
| 294 | 284 |
| 295 class TimerTest : public testing::Test { | 285 class TimerTest : public testing::Test { |
| 296 public: | 286 public: |
| 297 void SetUp() override | 287 void SetUp() override |
| 298 { | 288 { |
| 299 m_platform = adoptPtr(new TimerTestPlatform()); | |
| 300 m_oldPlatform = Platform::current(); | |
| 301 Platform::initialize(m_platform.get()); | |
| 302 WTF::setMonotonicallyIncreasingTimeFunction(currentTime); | 289 WTF::setMonotonicallyIncreasingTimeFunction(currentTime); |
| 303 | 290 |
| 304 m_runTimes.clear(); | 291 m_runTimes.clear(); |
| 305 gCurrentTimeSecs = 10.0; | 292 gCurrentTimeSecs = 10.0; |
| 306 m_startTime = gCurrentTimeSecs; | 293 m_startTime = gCurrentTimeSecs; |
| 307 } | 294 } |
| 308 | 295 |
| 309 void TearDown() override | |
| 310 { | |
| 311 Platform::initialize(m_oldPlatform); | |
| 312 } | |
| 313 | |
| 314 void countingTask(Timer<TimerTest>*) | 296 void countingTask(Timer<TimerTest>*) |
| 315 { | 297 { |
| 316 m_runTimes.append(monotonicallyIncreasingTime()); | 298 m_runTimes.append(monotonicallyIncreasingTime()); |
| 317 } | 299 } |
| 318 | 300 |
| 319 void recordNextFireTimeTask(Timer<TimerTest>* timer) | 301 void recordNextFireTimeTask(Timer<TimerTest>* timer) |
| 320 { | 302 { |
| 321 m_nextFireTimes.append(monotonicallyIncreasingTime() + timer->nextFireIn
terval()); | 303 m_nextFireTimes.append(monotonicallyIncreasingTime() + timer->nextFireIn
terval()); |
| 322 } | 304 } |
| 323 | 305 |
| 324 void advanceTimeBy(double timeSecs) | 306 void advanceTimeBy(double timeSecs) |
| 325 { | 307 { |
| 326 gCurrentTimeSecs += timeSecs; | 308 gCurrentTimeSecs += timeSecs; |
| 327 } | 309 } |
| 328 | 310 |
| 329 void runUntilIdle() | 311 void runUntilIdle() |
| 330 { | 312 { |
| 331 m_platform->runUntilIdle(); | 313 m_platform.runUntilIdle(); |
| 332 } | 314 } |
| 333 | 315 |
| 334 void runPendingTasks() | 316 void runPendingTasks() |
| 335 { | 317 { |
| 336 m_platform->runPendingTasks(); | 318 m_platform.runPendingTasks(); |
| 337 } | 319 } |
| 338 | 320 |
| 339 void runUntilIdleOrDeadlinePassed(double deadline) | 321 void runUntilIdleOrDeadlinePassed(double deadline) |
| 340 { | 322 { |
| 341 m_platform->runUntilIdleOrDeadlinePassed(deadline); | 323 m_platform.runUntilIdleOrDeadlinePassed(deadline); |
| 342 } | 324 } |
| 343 | 325 |
| 344 bool hasOneTimerTask() const | 326 bool hasOneTimerTask() const |
| 345 { | 327 { |
| 346 return m_platform->hasOneTimerTask(); | 328 return m_platform.hasOneTimerTask(); |
| 347 } | 329 } |
| 348 | 330 |
| 349 double nextTimerTaskDelaySecs() const | 331 double nextTimerTaskDelaySecs() const |
| 350 { | 332 { |
| 351 return m_platform->nextTimerTaskDelaySecs(); | 333 return m_platform.nextTimerTaskDelaySecs(); |
| 352 } | 334 } |
| 353 | 335 |
| 354 protected: | 336 protected: |
| 355 double m_startTime; | 337 double m_startTime; |
| 356 WTF::Vector<double> m_runTimes; | 338 WTF::Vector<double> m_runTimes; |
| 357 WTF::Vector<double> m_nextFireTimes; | 339 WTF::Vector<double> m_nextFireTimes; |
| 358 | 340 |
| 359 private: | 341 private: |
| 360 OwnPtr<TimerTestPlatform> m_platform; | 342 TimerTestPlatform m_platform; |
| 361 Platform* m_oldPlatform; | |
| 362 }; | 343 }; |
| 363 | 344 |
| 364 TEST_F(TimerTest, StartOneShot_Zero) | 345 TEST_F(TimerTest, StartOneShot_Zero) |
| 365 { | 346 { |
| 366 Timer<TimerTest> timer(this, &TimerTest::countingTask); | 347 Timer<TimerTest> timer(this, &TimerTest::countingTask); |
| 367 timer.startOneShot(0, BLINK_FROM_HERE); | 348 timer.startOneShot(0, BLINK_FROM_HERE); |
| 368 | 349 |
| 369 ASSERT(hasOneTimerTask()); | 350 ASSERT(hasOneTimerTask()); |
| 370 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs()); | 351 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs()); |
| 371 | 352 |
| (...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 828 m_startTime + 6.0, | 809 m_startTime + 6.0, |
| 829 m_startTime + 8.0, | 810 m_startTime + 8.0, |
| 830 m_startTime + 10.0, | 811 m_startTime + 10.0, |
| 831 m_startTime + 14.0, | 812 m_startTime + 14.0, |
| 832 m_startTime + 18.0, | 813 m_startTime + 18.0, |
| 833 m_startTime + 28.0)); | 814 m_startTime + 28.0)); |
| 834 } | 815 } |
| 835 | 816 |
| 836 } // namespace | 817 } // namespace |
| 837 } // namespace blink | 818 } // namespace blink |
| OLD | NEW |