| 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 d470e8e2ae8eb902d49d06c57b54888fed418dac..37c77d3b6f633184bff0e95685da6bb0d76c0519 100644
|
| --- a/third_party/WebKit/Source/core/workers/WorkerThread.cpp
|
| +++ b/third_party/WebKit/Source/core/workers/WorkerThread.cpp
|
| @@ -154,6 +154,24 @@ static HashSet<WorkerThread*>& workerThreads()
|
| return threads;
|
| }
|
|
|
| +WorkerThreadContext::WorkerThreadContext()
|
| +{
|
| + DCHECK(isMainThread());
|
| +}
|
| +
|
| +WorkerThreadContext::~WorkerThreadContext()
|
| +{
|
| + DCHECK(isMainThread());
|
| +}
|
| +
|
| +void WorkerThreadContext::notifyContextDestroyed()
|
| +{
|
| + DCHECK(isMainThread());
|
| + DCHECK(!m_wasContextDestroyed);
|
| + m_wasContextDestroyed = true;
|
| + LifecycleNotifier::notifyContextDestroyed();
|
| +}
|
| +
|
| WorkerThread::~WorkerThread()
|
| {
|
| DCHECK(isMainThread());
|
| @@ -307,7 +325,9 @@ WorkerThread::WorkerThread(PassRefPtr<WorkerLoaderProxy> workerLoaderProxy, Work
|
| , m_shutdownEvent(adoptPtr(new WaitableEvent(
|
| WaitableEvent::ResetPolicy::Manual,
|
| WaitableEvent::InitialState::NonSignaled)))
|
| + , m_workerThreadContext(new WorkerThreadContext)
|
| {
|
| + DCHECK(isMainThread());
|
| MutexLocker lock(threadSetMutex());
|
| workerThreads().add(this);
|
| }
|
| @@ -354,6 +374,8 @@ void WorkerThread::terminateInternal(TerminationMode mode)
|
| if (m_terminationEvent)
|
| m_terminationEvent->signal();
|
|
|
| + m_workerThreadContext->notifyContextDestroyed();
|
| +
|
| // If the worker thread was never initialized, don't start another
|
| // shutdown, but still wait for the thread to signal when shutdown has
|
| // completed on initializeOnWorkerThread().
|
|
|