Index: Source/platform/scheduler/Scheduler.cpp |
diff --git a/Source/platform/scheduler/Scheduler.cpp b/Source/platform/scheduler/Scheduler.cpp |
index 535f114114da747340502f20efd830cbf81440d0..6e41f73ba52e941b5c3bf053e7af6fabf7fbc576 100644 |
--- a/Source/platform/scheduler/Scheduler.cpp |
+++ b/Source/platform/scheduler/Scheduler.cpp |
@@ -13,6 +13,7 @@ |
namespace blink { |
class IdleTaskRunner : public WebScheduler::IdleTask { |
+ WTF_MAKE_NONCOPYABLE(IdleTaskRunner); |
public: |
explicit IdleTaskRunner(PassOwnPtr<Scheduler::IdleTask> task) |
: m_task(task) |
@@ -32,6 +33,26 @@ private: |
OwnPtr<Scheduler::IdleTask> m_task; |
}; |
+class ClosureRunner : public WebThread::Task { |
+ WTF_MAKE_NONCOPYABLE(ClosureRunner); |
+public: |
+ explicit ClosureRunner(PassOwnPtr<Closure> closure) : m_closure(closure) |
+ { |
+ } |
+ |
+ virtual ~ClosureRunner() |
Sami
2015/01/26 17:18:34
s/virtual/override/
alex clarke (OOO till 29th)
2015/01/26 17:31:35
Done.
|
+ { |
+ } |
+ |
+ // WebThread::Task implementation. |
+ void run() override |
+ { |
+ (*m_closure)(); |
+ } |
+private: |
+ OwnPtr<Closure> m_closure; |
+}; |
+ |
Scheduler* Scheduler::s_sharedScheduler = nullptr; |
void Scheduler::shutdown() |
@@ -64,6 +85,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) |