| Index: Source/platform/scheduler/Scheduler.cpp
|
| diff --git a/Source/platform/scheduler/Scheduler.cpp b/Source/platform/scheduler/Scheduler.cpp
|
| index 535f114114da747340502f20efd830cbf81440d0..c914eba7fb06acf6e09e1553dbb7838349f3d59b 100644
|
| --- a/Source/platform/scheduler/Scheduler.cpp
|
| +++ b/Source/platform/scheduler/Scheduler.cpp
|
| @@ -13,13 +13,13 @@
|
| namespace blink {
|
|
|
| class IdleTaskRunner : public WebScheduler::IdleTask {
|
| + WTF_MAKE_NONCOPYABLE(IdleTaskRunner);
|
| public:
|
| - explicit IdleTaskRunner(PassOwnPtr<Scheduler::IdleTask> task)
|
| - : m_task(task)
|
| + explicit IdleTaskRunner(PassOwnPtr<Scheduler::IdleTask> task) : m_task(task)
|
| {
|
| }
|
|
|
| - virtual ~IdleTaskRunner()
|
| + ~IdleTaskRunner() override
|
| {
|
| }
|
|
|
| @@ -32,6 +32,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)
|
| + {
|
| + }
|
| +
|
| + ~ClosureRunner() override
|
| + {
|
| + }
|
| +
|
| + // WebThread::Task implementation.
|
| + void run() override
|
| + {
|
| + (*m_closure)();
|
| + }
|
| +private:
|
| + OwnPtr<Closure> m_closure;
|
| +};
|
| +
|
| Scheduler* Scheduler::s_sharedScheduler = nullptr;
|
|
|
| void Scheduler::shutdown()
|
| @@ -64,6 +84,18 @@ 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));
|
| +}
|
| +
|
| +void Scheduler::postLoadingTask(const TraceLocation& location, WebThread::Task* task)
|
| +{
|
| + if (m_webScheduler)
|
| + m_webScheduler->postLoadingTask(WebTraceLocation(location), task);
|
| +}
|
| +
|
| bool Scheduler::shouldYieldForHighPriorityWork() const
|
| {
|
| if (m_webScheduler)
|
|
|