| Index: third_party/WebKit/Source/core/svg/graphics/SVGImageTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/svg/graphics/SVGImageTest.cpp b/third_party/WebKit/Source/core/svg/graphics/SVGImageTest.cpp
|
| index a173e77092d31ae512dea3e257d205fcc4235cbf..a93d44b3daea386fd61ce88c7c6888aa0e05819f 100644
|
| --- a/third_party/WebKit/Source/core/svg/graphics/SVGImageTest.cpp
|
| +++ b/third_party/WebKit/Source/core/svg/graphics/SVGImageTest.cpp
|
| @@ -8,74 +8,14 @@
|
| #include "platform/SharedBuffer.h"
|
| #include "platform/Timer.h"
|
| #include "platform/geometry/FloatRect.h"
|
| +#include "platform/testing/UnitTestHelpers.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/skia/include/core/SkCanvas.h"
|
| #include "third_party/skia/include/utils/SkNullCanvas.h"
|
| #include "wtf/PtrUtil.h"
|
|
|
| namespace blink {
|
| -namespace {
|
| -
|
| -class MockTaskRunner : public WebTaskRunner {
|
| -public:
|
| - void setTime(double newTime) { m_time = newTime; }
|
| -
|
| - MockTaskRunner()
|
| - : WebTaskRunner(), m_time(0.0), m_currentTask(nullptr)
|
| - { }
|
| -
|
| - virtual ~MockTaskRunner()
|
| - {
|
| - if (m_currentTask)
|
| - delete m_currentTask;
|
| - }
|
| -
|
| -private:
|
| - void postTask(const WebTraceLocation&, Task*) override { }
|
| - void postDelayedTask(const WebTraceLocation&, Task* task, double) override
|
| - {
|
| - if (m_currentTask)
|
| - delete m_currentTask;
|
| - m_currentTask = task;
|
| -
|
| - }
|
| - bool runsTasksOnCurrentThread() override { return true; }
|
| - std::unique_ptr<WebTaskRunner> clone() override { return nullptr; }
|
| - double virtualTimeSeconds() const override { return 0.0; }
|
| - double monotonicallyIncreasingVirtualTimeSeconds() const override { return m_time; }
|
| - SingleThreadTaskRunner* taskRunner() override { return nullptr; }
|
| -
|
| - double m_time;
|
| - Task* m_currentTask;
|
| -};
|
| -
|
| -class MockTimer : public TaskRunnerTimer<SVGImageChromeClient> {
|
| -public:
|
| - using TimerFiredFunction = typename TaskRunnerTimer<SVGImageChromeClient>::TimerFiredFunction;
|
| -
|
| - MockTimer(SVGImageChromeClient* o, TimerFiredFunction f)
|
| - : TaskRunnerTimer(&m_taskRunner, o, f)
|
| - {
|
| - }
|
| -
|
| - void fire()
|
| - {
|
| - fired();
|
| - stop();
|
| - }
|
| -
|
| - void setTime(double newTime)
|
| - {
|
| - m_taskRunner.setTime(newTime);
|
| - }
|
| -
|
| -private:
|
| - MockTaskRunner m_taskRunner;
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -class SVGImageTest : public testing::Test {
|
| +class SVGImageTest : public ::testing::Test {
|
| public:
|
| SVGImage& image() { return *m_image; }
|
|
|
| @@ -143,7 +83,7 @@ TEST_F(SVGImageTest, TimelineSuspendAndResume)
|
| const bool shouldPause = true;
|
| load(kAnimatedDocument, shouldPause);
|
| SVGImageChromeClient& chromeClient = image().chromeClientForTesting();
|
| - MockTimer* timer = new MockTimer(&chromeClient, &SVGImageChromeClient::animationTimerFired);
|
| + Timer<SVGImageChromeClient>* timer = new Timer<SVGImageChromeClient>(&chromeClient, &SVGImageChromeClient::animationTimerFired);
|
| chromeClient.setTimer(wrapUnique(timer));
|
|
|
| // Simulate a draw. Cause a frame (timer) to be scheduled.
|
| @@ -154,7 +94,8 @@ TEST_F(SVGImageTest, TimelineSuspendAndResume)
|
| // Fire the timer/trigger a frame update. Since the observer always returns
|
| // true for shouldPauseAnimation, this will result in the timeline being
|
| // suspended.
|
| - timer->fire();
|
| + // TODO(alexclarke): Move over to using base::TimeDelta and base::TimeTicks so we can avoid computations like this.
|
| + testing::runDelayedTasks(1.0 + timer->nextFireInterval() * 1000.0);
|
| EXPECT_TRUE(chromeClient.isSuspended());
|
| EXPECT_FALSE(timer->isActive());
|
|
|
| @@ -169,7 +110,7 @@ TEST_F(SVGImageTest, ResetAnimation)
|
| const bool shouldPause = false;
|
| load(kAnimatedDocument, shouldPause);
|
| SVGImageChromeClient& chromeClient = image().chromeClientForTesting();
|
| - MockTimer* timer = new MockTimer(&chromeClient, &SVGImageChromeClient::animationTimerFired);
|
| + Timer<SVGImageChromeClient>* timer = new Timer<SVGImageChromeClient>(&chromeClient, &SVGImageChromeClient::animationTimerFired);
|
| chromeClient.setTimer(wrapUnique(timer));
|
|
|
| // Simulate a draw. Cause a frame (timer) to be scheduled.
|
| @@ -185,7 +126,8 @@ TEST_F(SVGImageTest, ResetAnimation)
|
|
|
| // Fire the timer/trigger a frame update. The timeline will remain
|
| // suspended and no frame will be scheduled.
|
| - timer->fire();
|
| + // TODO(alexclarke): Move over to using base::TimeDelta and base::TimeTicks so we can avoid computations like this.
|
| + testing::runDelayedTasks(1.0 + timer->nextFireInterval() * 1000.0);
|
| EXPECT_TRUE(chromeClient.isSuspended());
|
| EXPECT_FALSE(timer->isActive());
|
|
|
|
|