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

Unified Diff: Source/core/workers/WorkerThread.cpp

Issue 897523002: Handle rejected promises better for workers. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: tidying Created 5 years, 10 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
« no previous file with comments | « Source/bindings/core/v8/v8.gypi ('k') | Source/web/WebKit.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/workers/WorkerThread.cpp
diff --git a/Source/core/workers/WorkerThread.cpp b/Source/core/workers/WorkerThread.cpp
index 228856e5957f732bfe6791e5eb0ea4aefc040447..cc0c0c2130bc61d14f9bc98fff3e5f28e485e15b 100644
--- a/Source/core/workers/WorkerThread.cpp
+++ b/Source/core/workers/WorkerThread.cpp
@@ -60,12 +60,25 @@ const int64_t kLongIdleHandlerDelayMs = 10*1000;
class MicrotaskRunner : public WebThread::TaskObserver {
public:
+ explicit MicrotaskRunner(WorkerThread* workerThread)
+ : m_workerThread(workerThread)
+ {
+ }
+
virtual void willProcessTask() override { }
virtual void didProcessTask() override
{
Microtask::performCheckpoint();
- V8Initializer::reportRejectedPromises();
+ if (WorkerGlobalScope* globalScope = m_workerThread->workerGlobalScope()) {
+ if (WorkerScriptController* scriptController = globalScope->script())
+ scriptController->rejectedPromises()->processQueue();
+ }
}
+
+private:
+ // Thread owns the microtask runner; reference remains
+ // valid for the lifetime of this object.
+ WorkerThread* m_workerThread;
};
} // namespace
@@ -310,7 +323,7 @@ void WorkerThread::initialize()
return;
}
- m_microtaskRunner = adoptPtr(new MicrotaskRunner);
+ m_microtaskRunner = adoptPtr(new MicrotaskRunner(this));
m_thread->addTaskObserver(m_microtaskRunner.get());
m_thread->attachGC();
m_workerGlobalScope = createWorkerGlobalScope(m_startupData.release());
« no previous file with comments | « Source/bindings/core/v8/v8.gypi ('k') | Source/web/WebKit.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698