Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(969)

Unified Diff: third_party/WebKit/Source/core/svg/graphics/SVGImageTest.cpp

Issue 2266443002: Optimize posting of WTF::Closure and improve scheduler test mocks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cut back to just the WTF::Closure fix plus the scheduler test mock refactor. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
« no previous file with comments | « third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp ('k') | third_party/WebKit/Source/platform/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698