| Index: Source/core/workers/WorkerGlobalScope.cpp
|
| diff --git a/Source/core/workers/WorkerGlobalScope.cpp b/Source/core/workers/WorkerGlobalScope.cpp
|
| index d0f3064a5060c908f073f80a5992341dbbdd197d..98b2e8acb527b59722de1a5f6062336dc7414854 100644
|
| --- a/Source/core/workers/WorkerGlobalScope.cpp
|
| +++ b/Source/core/workers/WorkerGlobalScope.cpp
|
| @@ -93,12 +93,9 @@ 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);
|
| +#if !ENABLE(OILPAN)
|
| + dispose();
|
| +#endif
|
| }
|
|
|
| void WorkerGlobalScope::applyContentSecurityPolicyFromString(const String& policy, ContentSecurityPolicyHeaderType contentSecurityPolicyType)
|
| @@ -190,6 +187,24 @@ void WorkerGlobalScope::clearInspector()
|
| m_workerInspectorController.clear();
|
| }
|
|
|
| +void WorkerGlobalScope::dispose()
|
| +{
|
| + 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);
|
| +
|
| + // The thread reference isn't currently cleared, as the execution
|
| + // context's thread is accessed by GCed lifetime objects when
|
| + // they're finalized.
|
| + // FIXME: oilpan: avoid by explicitly removing the WorkerGlobalScope
|
| + // as an observable context right here.
|
| +}
|
| +
|
| void WorkerGlobalScope::importScripts(const Vector<String>& urls, ExceptionState& exceptionState)
|
| {
|
| ASSERT(contentSecurityPolicy());
|
| @@ -281,4 +296,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);
|
| + WillBeHeapSupplementable<WorkerGlobalScope>::trace(visitor);
|
| +}
|
| +
|
| } // namespace WebCore
|
|
|