| Index: Source/platform/TimerTest.cpp
|
| diff --git a/Source/platform/TimerTest.cpp b/Source/platform/TimerTest.cpp
|
| index 912d1706c44439ecac46b1ede1d40506f63656c4..e42d93d069066a9df5b9fcb76b7b7c2d83fb1010 100644
|
| --- a/Source/platform/TimerTest.cpp
|
| +++ b/Source/platform/TimerTest.cpp
|
| @@ -26,7 +26,7 @@ double currentTime()
|
| // This class exists because gcc doesn't know how to move an OwnPtr.
|
| class RefCountedTaskContainer : public RefCounted<RefCountedTaskContainer> {
|
| public:
|
| - explicit RefCountedTaskContainer(WebThread::Task* task) : m_task(adoptPtr(task)) { }
|
| + explicit RefCountedTaskContainer(WebTaskRunner::Task* task) : m_task(adoptPtr(task)) { }
|
|
|
| ~RefCountedTaskContainer() { }
|
|
|
| @@ -36,12 +36,12 @@ public:
|
| }
|
|
|
| private:
|
| - OwnPtr<WebThread::Task> m_task;
|
| + OwnPtr<WebTaskRunner::Task> m_task;
|
| };
|
|
|
| class DelayedTask {
|
| public:
|
| - DelayedTask(WebThread::Task* task, long long delayMs)
|
| + DelayedTask(WebTaskRunner::Task* task, long long delayMs)
|
| : m_task(adoptRef(new RefCountedTaskContainer(task)))
|
| , m_runTimeSecs(monotonicallyIncreasingTime() + 0.001 * static_cast<double>(delayMs))
|
| , m_delayMs(delayMs) { }
|
| @@ -72,9 +72,27 @@ private:
|
| long long m_delayMs;
|
| };
|
|
|
| +class MockWebTaskRunner : public WebTaskRunner {
|
| +public:
|
| + explicit MockWebTaskRunner(std::priority_queue<DelayedTask>* timerTasks) : m_timerTasks(timerTasks) { }
|
| + ~MockWebTaskRunner() override { }
|
| +
|
| + virtual void postTask(const WebTraceLocation&, Task* task)
|
| + {
|
| + m_timerTasks->push(DelayedTask(task, 0));
|
| + }
|
| +
|
| + void postDelayedTask(const WebTraceLocation&, Task* task, long long delayMs) override
|
| + {
|
| + m_timerTasks->push(DelayedTask(task, delayMs));
|
| + }
|
| +
|
| + std::priority_queue<DelayedTask>* m_timerTasks; // NOT OWNED
|
| +};
|
| +
|
| class MockWebScheduler : public WebScheduler {
|
| public:
|
| - MockWebScheduler() { }
|
| + MockWebScheduler() : m_timerWebTaskRunner(&m_timerTasks) { }
|
| ~MockWebScheduler() override { }
|
|
|
| bool shouldYieldForHighPriorityWork() override
|
| @@ -99,16 +117,18 @@ public:
|
| {
|
| }
|
|
|
| - void postLoadingTask(const WebTraceLocation&, WebThread::Task*) override
|
| + WebTaskRunner* timerTaskRunner() override
|
| {
|
| + return &m_timerWebTaskRunner;
|
| }
|
|
|
| - void postTimerTask(const WebTraceLocation&, WebThread::Task* task, long long delayMs) override
|
| + virtual WebTaskRunner* loadingTaskRunner()
|
| {
|
| - m_timerTasks.push(DelayedTask(task, delayMs));
|
| + ASSERT_NOT_REACHED();
|
| + return nullptr;
|
| }
|
|
|
| - void postTimerTaskAt(const WebTraceLocation&, WebThread::Task* task, double monotonicTime) override
|
| + void postTimerTaskAt(const WebTraceLocation&, WebTaskRunner::Task* task, double monotonicTime) override
|
| {
|
| m_timerTasks.push(DelayedTask(task, (monotonicTime - monotonicallyIncreasingTime()) * 1000));
|
| }
|
| @@ -148,6 +168,7 @@ public:
|
|
|
| private:
|
| std::priority_queue<DelayedTask> m_timerTasks;
|
| + MockWebTaskRunner m_timerWebTaskRunner;
|
| };
|
|
|
| class FakeWebThread : public WebThread {
|
| @@ -155,17 +176,6 @@ public:
|
| FakeWebThread() : m_webScheduler(adoptPtr(new MockWebScheduler())) { }
|
| ~FakeWebThread() override { }
|
|
|
| - // WebThread implementation:
|
| - void postTask(const WebTraceLocation&, Task*)
|
| - {
|
| - ASSERT_NOT_REACHED();
|
| - }
|
| -
|
| - virtual void postDelayedTask(const WebTraceLocation&, Task*, long long)
|
| - {
|
| - ASSERT_NOT_REACHED();
|
| - }
|
| -
|
| virtual bool isCurrentThread() const
|
| {
|
| ASSERT_NOT_REACHED();
|
| @@ -178,6 +188,12 @@ public:
|
| return 0;
|
| }
|
|
|
| + virtual WebTaskRunner* defaultTaskRunner()
|
| + {
|
| + ASSERT_NOT_REACHED();
|
| + return nullptr;
|
| + }
|
| +
|
| WebScheduler* scheduler() const override
|
| {
|
| return m_webScheduler.get();
|
|
|