Chromium Code Reviews| Index: Source/core/workers/WorkerGlobalScope.cpp | 
| diff --git a/Source/core/workers/WorkerGlobalScope.cpp b/Source/core/workers/WorkerGlobalScope.cpp | 
| index a517c8704513d3fd0cbcb0632728b7eb664c560b..b9247270e47ba4bd931cc49470eaa94b216485a7 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() | 
| 
 
Mads Ager (chromium)
2014/02/26 10:22:40
I really like this restructuring, thanks! :)
 
 | 
| +{ | 
| + 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,11 @@ WorkerEventQueue* WorkerGlobalScope::eventQueue() const | 
| return m_eventQueue.get(); | 
| } | 
| +void WorkerGlobalScope::trace(Visitor* visitor) | 
| 
 
Mads Ager (chromium)
2014/02/26 10:22:40
Don't we need an explicit call to WorkerSupplement
 
sof
2014/02/26 12:25:13
Yes, thank you. This is a major oversight when add
 
 | 
| +{ | 
| + visitor->trace(m_console); | 
| + visitor->trace(m_location); | 
| + visitor->trace(m_navigator); | 
| +} | 
| + | 
| } // namespace WebCore |