Index: Source/platform/scheduler/Scheduler.cpp |
diff --git a/Source/platform/scheduler/Scheduler.cpp b/Source/platform/scheduler/Scheduler.cpp |
index 535f114114da747340502f20efd830cbf81440d0..98da04f82f8437f02e52a02d9c93af1833736767 100644 |
--- a/Source/platform/scheduler/Scheduler.cpp |
+++ b/Source/platform/scheduler/Scheduler.cpp |
@@ -32,6 +32,25 @@ private: |
OwnPtr<Scheduler::IdleTask> m_task; |
}; |
+class ClosureRunner : public WebThread::Task { |
rmcilroy
2015/01/26 18:09:01
nit - ClosureRunnerTask (if you take my suggestion
alex clarke (OOO till 29th)
2015/01/27 11:41:19
Done.
|
+public: |
jochen (gone - plz use gerrit)
2015/01/26 15:53:31
non-copyable
alex clarke (OOO till 29th)
2015/01/26 17:00:45
Done.
|
+ explicit ClosureRunner(PassOwnPtr<Closure> closure) : m_closure(closure) |
+ { |
+ } |
+ |
+ virtual ~ClosureRunner() |
+ { |
+ } |
+ |
+ // WebThread::Task implementation. |
+ void run() override |
+ { |
+ (*m_closure)(); |
+ } |
+private: |
+ OwnPtr<Closure> m_closure; |
+}; |
+ |
Scheduler* Scheduler::s_sharedScheduler = nullptr; |
void Scheduler::shutdown() |
@@ -64,6 +83,12 @@ void Scheduler::postIdleTask(const TraceLocation& location, PassOwnPtr<IdleTask> |
m_webScheduler->postIdleTask(WebTraceLocation(location), new IdleTaskRunner(idleTask)); |
} |
+void Scheduler::postLoadingTask(const TraceLocation& location, PassOwnPtr<Closure> closure) |
+{ |
+ if (m_webScheduler) |
+ m_webScheduler->postLoadingTask(WebTraceLocation(location), new ClosureRunner(closure)); |
+} |
+ |
bool Scheduler::shouldYieldForHighPriorityWork() const |
{ |
if (m_webScheduler) |