Index: third_party/WebKit/Source/core/workers/WorkerThread.cpp |
diff --git a/third_party/WebKit/Source/core/workers/WorkerThread.cpp b/third_party/WebKit/Source/core/workers/WorkerThread.cpp |
index e98767bbb1badde01a636a3c9a84cbd2c9d6f94d..f78e15e1b3a881a32c8cfc541a6a8a4588925e64 100644 |
--- a/third_party/WebKit/Source/core/workers/WorkerThread.cpp |
+++ b/third_party/WebKit/Source/core/workers/WorkerThread.cpp |
@@ -51,7 +51,7 @@ |
namespace blink { |
-class WorkerMicrotaskRunner : public WebThread::TaskObserver { |
+class WorkerThread::WorkerMicrotaskRunner : public WebThread::TaskObserver { |
public: |
explicit WorkerMicrotaskRunner(WorkerThread* workerThread) |
: m_workerThread(workerThread) |
@@ -238,7 +238,23 @@ void WorkerThread::initialize(PassOwnPtr<WorkerThreadStartupData> startupData) |
postInitialize(); |
} |
-void WorkerThread::performShutdownTask() |
+void WorkerThread::prepareForShutdown() |
+{ |
+ DCHECK(isCurrentThread()); |
+ { |
+ MutexLocker lock(m_threadStateMutex); |
+ if (m_readyToShutdown) |
+ return; |
+ m_readyToShutdown = true; |
+ } |
+ |
+ workerReportingProxy().willDestroyWorkerGlobalScope(); |
+ InspectorInstrumentation::allAsyncTasksCanceled(workerGlobalScope()); |
+ workerGlobalScope()->dispose(); |
+ workerBackingThread().backingThread().removeTaskObserver(m_microtaskRunner.get()); |
+} |
+ |
+void WorkerThread::performShutdown() |
{ |
DCHECK(isCurrentThread()); |
#if DCHECK_IS_ON |
@@ -329,7 +345,7 @@ void WorkerThread::terminate() |
m_inspectorTaskRunner->kill(); |
workerBackingThread().backingThread().postTask(BLINK_FROM_HERE, threadSafeBind(&WorkerThread::prepareForShutdown, AllowCrossThreadAccess(this))); |
- workerBackingThread().backingThread().postTask(BLINK_FROM_HERE, threadSafeBind(&WorkerThread::performShutdownTask, AllowCrossThreadAccess(this))); |
+ workerBackingThread().backingThread().postTask(BLINK_FROM_HERE, threadSafeBind(&WorkerThread::performShutdown, AllowCrossThreadAccess(this))); |
} |
void WorkerThread::terminateAndWait() |
@@ -353,22 +369,6 @@ void WorkerThread::terminateAndWaitForAllWorkers() |
thread->m_shutdownEvent->wait(); |
} |
-void WorkerThread::prepareForShutdown() |
-{ |
- DCHECK(isCurrentThread()); |
- { |
- MutexLocker lock(m_threadStateMutex); |
- if (m_readyToShutdown) |
- return; |
- m_readyToShutdown = true; |
- } |
- |
- workerReportingProxy().willDestroyWorkerGlobalScope(); |
- InspectorInstrumentation::allAsyncTasksCanceled(workerGlobalScope()); |
- workerGlobalScope()->dispose(); |
- workerBackingThread().backingThread().removeTaskObserver(m_microtaskRunner.get()); |
-} |
- |
WorkerGlobalScope* WorkerThread::workerGlobalScope() |
{ |
DCHECK(isCurrentThread()); |