Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1662)

Unified Diff: Source/platform/scheduler/Scheduler.cpp

Issue 876623002: Adds a CancellableTaskFactory and exposes postLoadingTasks to Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Bundle in the HTML Parser changes too Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698