Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(441)

Unified Diff: third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp

Issue 1449963002: Oilpan: move WorkerInspectorController's frontend channel to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix MSVC visibility quibbles Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/inspector/WorkerInspectorController.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « third_party/WebKit/Source/core/inspector/WorkerInspectorController.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698