| 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());
|
|
|