Index: third_party/WebKit/Source/platform/testing/TestingPlatformSupport.h |
diff --git a/third_party/WebKit/Source/platform/testing/TestingPlatformSupport.h b/third_party/WebKit/Source/platform/testing/TestingPlatformSupport.h |
index 0421cc0cc4c7d63ce7384e69d29c73a21650e9ed..78a32bf75162f75254b0e19635292ce72bf466ad 100644 |
--- a/third_party/WebKit/Source/platform/testing/TestingPlatformSupport.h |
+++ b/third_party/WebKit/Source/platform/testing/TestingPlatformSupport.h |
@@ -40,15 +40,23 @@ |
#include <memory> |
namespace base { |
+class SimpleTestTickClock; |
class TestDiscardableMemoryAllocator; |
-} // namespace base |
+} |
+ |
+namespace cc { |
+class OrderedSimpleTaskRunner; |
+} |
namespace cc_blink { |
class WebCompositorSupportImpl; |
} // namespace cc_blink |
namespace blink { |
- |
+namespace scheduler { |
+class RendererScheduler; |
+class RendererSchedulerImpl; |
+} |
class TestingPlatformMockWebTaskRunner; |
class TestingPlatformMockWebThread; |
class WebCompositorSupport; |
@@ -57,36 +65,6 @@ class WebThread; |
class TestingCompositorSupport : public WebCompositorSupport { |
}; |
-class TestingPlatformMockScheduler : public WebScheduler { |
- WTF_MAKE_NONCOPYABLE(TestingPlatformMockScheduler); |
-public: |
- TestingPlatformMockScheduler(); |
- ~TestingPlatformMockScheduler() override; |
- |
- void runSingleTask(); |
- void runAllTasks(); |
- |
- // WebScheduler implementation: |
- WebTaskRunner* loadingTaskRunner() override; |
- WebTaskRunner* timerTaskRunner() override; |
- void shutdown() override {} |
- bool shouldYieldForHighPriorityWork() override { return false; } |
- bool canExceedIdleDeadlineIfRequired() override { return false; } |
- void postIdleTask(const WebTraceLocation&, WebThread::IdleTask*) override { } |
- void postNonNestableIdleTask(const WebTraceLocation&, WebThread::IdleTask*) override { } |
- void postIdleTaskAfterWakeup(const WebTraceLocation&, WebThread::IdleTask*) override { } |
- std::unique_ptr<WebViewScheduler> createWebViewScheduler(InterventionReporter*) override { return nullptr; } |
- void suspendTimerQueue() override { } |
- void resumeTimerQueue() override { } |
- void addPendingNavigation(WebScheduler::NavigatingFrameType) override { } |
- void removePendingNavigation(WebScheduler::NavigatingFrameType) override { } |
- void onNavigationStarted() override { } |
- |
-private: |
- WTF::Deque<std::unique_ptr<WebTaskRunner::Task>> m_tasks; |
- std::unique_ptr<TestingPlatformMockWebTaskRunner> m_mockWebTaskRunner; |
-}; |
- |
class TestingPlatformSupport : public Platform { |
WTF_MAKE_NONCOPYABLE(TestingPlatformSupport); |
public: |
@@ -103,6 +81,16 @@ public: |
WebString defaultLocale() override; |
WebCompositorSupport* compositorSupport() override; |
WebThread* currentThread() override; |
+ WebBlobRegistry* blobRegistry() override; |
+ WebClipboard* clipboard() override; |
+ WebFileUtilities* fileUtilities() override; |
+ WebIDBFactory* idbFactory() override; |
+ WebMimeRegistry* mimeRegistry() override; |
+ WebURLLoaderMockFactory* getURLLoaderMockFactory() override; |
+ blink::WebURLLoader* createURLLoader() override; |
+ |
+ WebData loadResource(const char* name) override; |
+ WebURLError cancelledError(const WebURL&) const override; |
protected: |
const Config m_config; |
@@ -118,10 +106,36 @@ public: |
// Platform: |
WebThread* currentThread() override; |
- TestingPlatformMockScheduler* mockWebScheduler(); |
+ |
+ // Runs a single task. |
+ void runSingleTask(); |
+ |
+ // Runs all currently queued immediate tasks and delayed tasks whose delay has expired |
+ // plus any immediate tasks that are posted as a result of running those tasks. |
+ // |
+ // This function ignores future delayed tasks when deciding if the system is idle. |
+ // If you need to ensure delayed tasks run, try runForPeriodSeconds() instead. |
+ void runUntilIdle(); |
+ |
+ // Runs for |seconds|. Note we use a testing clock rather than the wall clock here. |
+ void runForPeriodSeconds(double seconds); |
+ |
+ // Advances |m_clock| by |seconds|. |
+ void advanceClockSeconds(double seconds); |
+ |
+ scheduler::RendererScheduler* rendererScheduler() const; |
+ |
+ // Controls the behavior of |m_mockTaskRunner| if true, then |m_clock| will |
+ // be advanced to the next timer when there's no more immediate work to do. |
+ void setAutoAdvanceNowToPendingTasks(bool); |
protected: |
- std::unique_ptr<TestingPlatformMockWebThread> m_mockWebThread; |
+ static double getTestTime(); |
+ |
+ std::unique_ptr<base::SimpleTestTickClock> m_clock; |
+ scoped_refptr<cc::OrderedSimpleTaskRunner> m_mockTaskRunner; |
+ std::unique_ptr<scheduler::RendererSchedulerImpl> m_scheduler; |
+ std::unique_ptr<WebThread> m_thread; |
}; |
class ScopedUnittestsEnvironmentSetup { |