| Index: Source/core/workers/WorkerGlobalScope.cpp
|
| diff --git a/Source/core/workers/WorkerGlobalScope.cpp b/Source/core/workers/WorkerGlobalScope.cpp
|
| index a517c8704513d3fd0cbcb0632728b7eb664c560b..ce2b8b5c153cf0c3d0bed9dd606594f97ec67952 100644
|
| --- a/Source/core/workers/WorkerGlobalScope.cpp
|
| +++ b/Source/core/workers/WorkerGlobalScope.cpp
|
| @@ -92,12 +92,7 @@ WorkerGlobalScope::WorkerGlobalScope(const KURL& url, const String& userAgent, W
|
|
|
| WorkerGlobalScope::~WorkerGlobalScope()
|
| {
|
| - ASSERT(thread()->isCurrentThread());
|
| -
|
| - // Notify proxy that we are going away. This can free the WorkerThread object, so do not access it after this.
|
| - thread()->workerReportingProxy().workerGlobalScopeDestroyed();
|
| -
|
| - setClient(0);
|
| + ASSERT(!m_thread);
|
| }
|
|
|
| void WorkerGlobalScope::applyContentSecurityPolicyFromString(const String& policy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType)
|
| @@ -189,6 +184,19 @@ void WorkerGlobalScope::clearInspector()
|
| m_workerInspectorController.clear();
|
| }
|
|
|
| +void WorkerGlobalScope::detach()
|
| +{
|
| + ASSERT(thread()->isCurrentThread());
|
| +
|
| + // Notify proxy that we are going away. This can free the WorkerThread object, so do not access it after this.
|
| + thread()->workerReportingProxy().workerGlobalScopeDestroyed();
|
| +
|
| + clearScript();
|
| + clearInspector();
|
| + setClient(0);
|
| + clearThread();
|
| +}
|
| +
|
| void WorkerGlobalScope::importScripts(const Vector<String>& urls, ExceptionState& exceptionState)
|
| {
|
| ASSERT(contentSecurityPolicy());
|
| @@ -280,4 +288,12 @@ WorkerEventQueue* WorkerGlobalScope::eventQueue() const
|
| return m_eventQueue.get();
|
| }
|
|
|
| +void WorkerGlobalScope::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_console);
|
| + visitor->trace(m_location);
|
| + visitor->trace(m_navigator);
|
| + WorkerSupplementable::trace(visitor);
|
| +}
|
| +
|
| } // namespace WebCore
|
|
|