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

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

Issue 1883193004: [DevTools] Destroy agents on detach. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 8 months 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
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 6ce7c814b9a56fc7c71438522fdc3ccc7e3221db..6a02c5c647b23928930223f45a9ac437e085b8fe 100644
--- a/third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp
+++ b/third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp
@@ -55,41 +55,44 @@ namespace blink {
WorkerInspectorController* WorkerInspectorController::create(WorkerGlobalScope* workerGlobalScope)
{
WorkerThreadDebugger* debugger = WorkerThreadDebugger::from(workerGlobalScope->thread()->isolate());
- if (!debugger)
- return nullptr;
- OwnPtr<V8InspectorSession> session = debugger->debugger()->connect(debugger->contextGroupId());
- return new WorkerInspectorController(workerGlobalScope, session.release());
+ return debugger ? new WorkerInspectorController(workerGlobalScope, debugger) : nullptr;
}
-WorkerInspectorController::WorkerInspectorController(WorkerGlobalScope* workerGlobalScope, PassOwnPtr<V8InspectorSession> session)
- : m_workerGlobalScope(workerGlobalScope)
+WorkerInspectorController::WorkerInspectorController(WorkerGlobalScope* workerGlobalScope, WorkerThreadDebugger* debugger)
+ : m_debugger(debugger)
+ , m_workerGlobalScope(workerGlobalScope)
, m_instrumentingAgents(InstrumentingAgents::create())
, m_agents(m_instrumentingAgents.get())
- , m_v8Session(session)
{
- WorkerRuntimeAgent* workerRuntimeAgent = WorkerRuntimeAgent::create(m_v8Session->runtimeAgent(), workerGlobalScope, this);
- m_workerRuntimeAgent = workerRuntimeAgent;
- m_agents.append(workerRuntimeAgent);
+}
- WorkerDebuggerAgent* workerDebuggerAgent = WorkerDebuggerAgent::create(m_v8Session->debuggerAgent(), workerGlobalScope);
- m_workerDebuggerAgent = workerDebuggerAgent;
- m_agents.append(workerDebuggerAgent);
+WorkerInspectorController::~WorkerInspectorController()
+{
+}
+void WorkerInspectorController::initializeAgents()
+{
+ m_v8Session = m_debugger->debugger()->connect(m_debugger->contextGroupId());
+ m_agents.append(WorkerRuntimeAgent::create(m_v8Session->runtimeAgent(), m_workerGlobalScope, this));
+ m_agents.append(WorkerDebuggerAgent::create(m_v8Session->debuggerAgent(), m_workerGlobalScope));
m_agents.append(InspectorProfilerAgent::create(m_v8Session->profilerAgent(), nullptr));
- m_agents.append(InspectorHeapProfilerAgent::create(workerGlobalScope->thread()->isolate(), m_v8Session->heapProfilerAgent()));
+ m_agents.append(InspectorHeapProfilerAgent::create(m_workerGlobalScope->thread()->isolate(), m_v8Session->heapProfilerAgent()));
- WorkerConsoleAgent* workerConsoleAgent = WorkerConsoleAgent::create(m_v8Session->runtimeAgent(), m_v8Session->debuggerAgent(), workerGlobalScope);
+ WorkerConsoleAgent* workerConsoleAgent = WorkerConsoleAgent::create(m_v8Session->runtimeAgent(), m_v8Session->debuggerAgent(), m_workerGlobalScope);
m_agents.append(workerConsoleAgent);
-
m_v8Session->runtimeAgent()->setClearConsoleCallback(bind<>(&InspectorConsoleAgent::clearAllMessages, workerConsoleAgent));
}
-WorkerInspectorController::~WorkerInspectorController()
+void WorkerInspectorController::destroyAgents()
{
+ m_agents.discardAgents();
+ m_instrumentingAgents->reset();
+ m_v8Session.clear();
}
void WorkerInspectorController::connectFrontend()
{
+ initializeAgents();
ASSERT(!m_frontend);
m_frontend = adoptPtr(new protocol::Frontend(this));
m_backendDispatcher = protocol::Dispatcher::create(this);
@@ -106,6 +109,7 @@ void WorkerInspectorController::disconnectFrontend()
m_backendDispatcher.clear();
m_agents.clearFrontend();
m_frontend.clear();
+ destroyAgents();
InspectorInstrumentation::frontendDeleted();
}
@@ -120,9 +124,6 @@ void WorkerInspectorController::dispatchMessageFromFrontend(const String& messag
void WorkerInspectorController::dispose()
{
disconnectFrontend();
- m_instrumentingAgents->reset();
- m_agents.discardAgents();
- m_v8Session.clear();
}
void WorkerInspectorController::resumeStartup()
@@ -150,8 +151,6 @@ DEFINE_TRACE(WorkerInspectorController)
visitor->trace(m_workerGlobalScope);
visitor->trace(m_instrumentingAgents);
visitor->trace(m_agents);
- visitor->trace(m_workerDebuggerAgent);
- visitor->trace(m_workerRuntimeAgent);
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698