Index: Source/core/workers/WorkerMessagingProxy.cpp |
diff --git a/Source/core/workers/WorkerMessagingProxy.cpp b/Source/core/workers/WorkerMessagingProxy.cpp |
index d6352bcac522d9e0f59d1b7582d3954e54fb34aa..8935d1144f997f59df403a62bd573fbf15dcd266 100644 |
--- a/Source/core/workers/WorkerMessagingProxy.cpp |
+++ b/Source/core/workers/WorkerMessagingProxy.cpp |
@@ -106,6 +106,8 @@ WorkerMessagingProxy::~WorkerMessagingProxy() |
ASSERT(!m_workerObject); |
ASSERT((m_executionContext->isDocument() && isMainThread()) |
|| (m_executionContext->isWorkerGlobalScope() && toWorkerGlobalScope(m_executionContext.get())->thread()->isCurrentThread())); |
+ if (m_loaderProxy) |
+ m_loaderProxy->detachProvider(this); |
} |
void WorkerMessagingProxy::startWorkerGlobalScope(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode startMode) |
@@ -122,7 +124,8 @@ void WorkerMessagingProxy::startWorkerGlobalScope(const KURL& scriptURL, const S |
OwnPtrWillBeRawPtr<WorkerThreadStartupData> startupData = WorkerThreadStartupData::create(scriptURL, userAgent, sourceCode, startMode, document->contentSecurityPolicy()->deprecatedHeader(), document->contentSecurityPolicy()->deprecatedHeaderType(), starterOrigin, m_workerClients.release()); |
double originTime = document->loader() ? document->loader()->timing()->referenceMonotonicTime() : monotonicallyIncreasingTime(); |
- RefPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::create(*this, *m_workerObjectProxy.get(), originTime, startupData.release()); |
+ m_loaderProxy = WorkerLoaderProxy::create(this); |
+ RefPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::create(m_loaderProxy, *m_workerObjectProxy.get(), originTime, startupData.release()); |
thread->start(); |
workerThreadCreated(thread); |
m_workerInspectorProxy->workerThreadCreated(m_executionContext.get(), m_workerThread.get(), scriptURL); |