Index: third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp |
diff --git a/third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp b/third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp |
index 6e1493d99a8c68133dcd112305ca1a9bdb85e9d9..13101ccf9b30788fb875fda70c98dbd5ada63037 100644 |
--- a/third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp |
+++ b/third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp |
@@ -59,25 +59,6 @@ namespace blink { |
namespace { |
-class PageInspectorProxy final : public InspectorFrontendChannel { |
- USING_FAST_MALLOC(PageInspectorProxy); |
-public: |
- explicit PageInspectorProxy(WorkerGlobalScope* workerGlobalScope) : m_workerGlobalScope(workerGlobalScope) { } |
- ~PageInspectorProxy() override { } |
-private: |
- void sendProtocolResponse(int callId, PassRefPtr<JSONObject> message) override |
- { |
- // Worker messages are wrapped, no need to handle callId. |
- m_workerGlobalScope->thread()->workerReportingProxy().postMessageToPageInspector(message->toJSONString()); |
- } |
- void sendProtocolNotification(PassRefPtr<JSONObject> message) override |
- { |
- m_workerGlobalScope->thread()->workerReportingProxy().postMessageToPageInspector(message->toJSONString()); |
- } |
- void flush() override { } |
- WorkerGlobalScope* m_workerGlobalScope; |
-}; |
- |
class WorkerStateClient final : public InspectorStateClient { |
USING_FAST_MALLOC(WorkerStateClient); |
public: |
@@ -108,6 +89,40 @@ private: |
} |
+class WorkerInspectorController::PageInspectorProxy final : public NoBaseWillBeGarbageCollectedFinalized<WorkerInspectorController::PageInspectorProxy>, public InspectorFrontendChannel { |
+ USING_FAST_MALLOC_WILL_BE_REMOVED(PageInspectorProxy); |
+public: |
+ static PassOwnPtrWillBeRawPtr<PageInspectorProxy> create(WorkerGlobalScope* workerGlobalScope) |
+ { |
+ return adoptPtrWillBeNoop(new PageInspectorProxy(workerGlobalScope)); |
+ } |
+ ~PageInspectorProxy() override { } |
+ |
+ DEFINE_INLINE_TRACE() |
+ { |
+ visitor->trace(m_workerGlobalScope); |
+ } |
+ |
+private: |
+ explicit PageInspectorProxy(WorkerGlobalScope* workerGlobalScope) |
+ : m_workerGlobalScope(workerGlobalScope) |
+ { |
+ } |
+ |
+ void sendProtocolResponse(int callId, PassRefPtr<JSONObject> message) override |
+ { |
+ // Worker messages are wrapped, no need to handle callId. |
+ m_workerGlobalScope->thread()->workerReportingProxy().postMessageToPageInspector(message->toJSONString()); |
+ } |
+ void sendProtocolNotification(PassRefPtr<JSONObject> message) override |
+ { |
+ m_workerGlobalScope->thread()->workerReportingProxy().postMessageToPageInspector(message->toJSONString()); |
+ } |
+ void flush() override { } |
+ |
+ RawPtrWillBeMember<WorkerGlobalScope> m_workerGlobalScope; |
+}; |
+ |
class WorkerInjectedScriptHostClient: public InjectedScriptHostClient { |
public: |
WorkerInjectedScriptHostClient() { } |
@@ -162,9 +177,9 @@ void WorkerInspectorController::connectFrontend() |
{ |
ASSERT(!m_frontend); |
m_state->unmute(); |
- m_frontendChannel = adoptPtr(new PageInspectorProxy(m_workerGlobalScope)); |
- m_frontend = adoptPtr(new InspectorFrontend(m_frontendChannel.get())); |
- m_backendDispatcher = InspectorBackendDispatcher::create(m_frontendChannel.get()); |
+ m_pageInspectorProxy = PageInspectorProxy::create(m_workerGlobalScope); |
+ m_frontend = adoptPtr(new InspectorFrontend(frontendChannel())); |
+ m_backendDispatcher = InspectorBackendDispatcher::create(frontendChannel()); |
m_agents.registerInDispatcher(m_backendDispatcher.get()); |
m_agents.setFrontend(m_frontend.get()); |
InspectorInstrumentation::frontendCreated(); |
@@ -182,7 +197,7 @@ void WorkerInspectorController::disconnectFrontend() |
m_agents.clearFrontend(); |
m_frontend.clear(); |
InspectorInstrumentation::frontendDeleted(); |
- m_frontendChannel.clear(); |
+ m_pageInspectorProxy.clear(); |
} |
void WorkerInspectorController::restoreInspectorStateFromCookie(const String& inspectorCookie) |
@@ -223,6 +238,11 @@ bool WorkerInspectorController::isRunRequired() |
return m_paused; |
} |
+InspectorFrontendChannel* WorkerInspectorController::frontendChannel() const |
+{ |
+ return static_cast<InspectorFrontendChannel*>(m_pageInspectorProxy.get()); |
+} |
+ |
void WorkerInspectorController::workerContextInitialized(bool shouldPauseOnStart) |
{ |
m_beforeInitlizedScope.clear(); |
@@ -245,6 +265,7 @@ DEFINE_TRACE(WorkerInspectorController) |
visitor->trace(m_injectedScriptManager); |
visitor->trace(m_backendDispatcher); |
visitor->trace(m_agents); |
+ visitor->trace(m_pageInspectorProxy); |
visitor->trace(m_workerDebuggerAgent); |
visitor->trace(m_workerRuntimeAgent); |
} |