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 6a02c5c647b23928930223f45a9ac437e085b8fe..86023f1af75e73a61c9b297fedf4dba56c810679 100644 |
--- a/third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp |
+++ b/third_party/WebKit/Source/core/inspector/WorkerInspectorController.cpp |
@@ -62,7 +62,6 @@ WorkerInspectorController::WorkerInspectorController(WorkerGlobalScope* workerGl |
: m_debugger(debugger) |
, m_workerGlobalScope(workerGlobalScope) |
, m_instrumentingAgents(InstrumentingAgents::create()) |
- , m_agents(m_instrumentingAgents.get()) |
{ |
} |
@@ -70,55 +69,40 @@ WorkerInspectorController::~WorkerInspectorController() |
{ |
} |
-void WorkerInspectorController::initializeAgents() |
+void WorkerInspectorController::connectFrontend() |
{ |
+ if (m_session) |
+ return; |
+ |
+ // sessionId will be overwritten by WebDevToolsAgent::sendProtocolNotifications call. |
+ m_session = new InspectorSession(this, 0, m_instrumentingAgents.get(), true /* autoFlush */); |
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(m_workerGlobalScope->thread()->isolate(), m_v8Session->heapProfilerAgent())); |
+ |
+ m_session->append(WorkerRuntimeAgent::create(m_v8Session->runtimeAgent(), m_workerGlobalScope, this)); |
+ m_session->append(WorkerDebuggerAgent::create(m_v8Session->debuggerAgent(), m_workerGlobalScope)); |
+ m_session->append(InspectorProfilerAgent::create(m_v8Session->profilerAgent(), nullptr)); |
+ m_session->append(InspectorHeapProfilerAgent::create(m_workerGlobalScope->thread()->isolate(), m_v8Session->heapProfilerAgent())); |
WorkerConsoleAgent* workerConsoleAgent = WorkerConsoleAgent::create(m_v8Session->runtimeAgent(), m_v8Session->debuggerAgent(), m_workerGlobalScope); |
- m_agents.append(workerConsoleAgent); |
+ m_session->append(workerConsoleAgent); |
m_v8Session->runtimeAgent()->setClearConsoleCallback(bind<>(&InspectorConsoleAgent::clearAllMessages, workerConsoleAgent)); |
-} |
- |
-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); |
- m_agents.registerInDispatcher(m_backendDispatcher.get()); |
- m_agents.setFrontend(m_frontend.get()); |
- InspectorInstrumentation::frontendCreated(); |
+ m_session->attach(nullptr); |
} |
void WorkerInspectorController::disconnectFrontend() |
{ |
- if (!m_frontend) |
+ if (!m_session) |
return; |
- m_backendDispatcher->clearFrontend(); |
- m_backendDispatcher.clear(); |
- m_agents.clearFrontend(); |
- m_frontend.clear(); |
- destroyAgents(); |
- InspectorInstrumentation::frontendDeleted(); |
+ m_session->detach(); |
+ m_v8Session.clear(); |
+ m_session.clear(); |
} |
void WorkerInspectorController::dispatchMessageFromFrontend(const String& message) |
{ |
- if (m_backendDispatcher) { |
- // sessionId will be overwritten by WebDevToolsAgent::sendProtocolNotifications call. |
- m_backendDispatcher->dispatch(0, message); |
- } |
+ if (m_session) |
+ m_session->dispatchProtocolMessage(message); |
} |
void WorkerInspectorController::dispose() |
@@ -131,26 +115,17 @@ void WorkerInspectorController::resumeStartup() |
m_workerGlobalScope->thread()->stopRunningDebuggerTasksOnPause(); |
} |
-void WorkerInspectorController::sendProtocolResponse(int sessionId, int callId, PassOwnPtr<protocol::DictionaryValue> message) |
-{ |
- // Worker messages are wrapped, no need to handle callId. |
- m_workerGlobalScope->thread()->workerReportingProxy().postMessageToPageInspector(message->toJSONString()); |
-} |
- |
-void WorkerInspectorController::sendProtocolNotification(PassOwnPtr<protocol::DictionaryValue> message) |
-{ |
- m_workerGlobalScope->thread()->workerReportingProxy().postMessageToPageInspector(message->toJSONString()); |
-} |
- |
-void WorkerInspectorController::flush() |
+void WorkerInspectorController::sendProtocolMessage(int sessionId, int callId, const String& response, const String& state) |
{ |
+ // Worker messages are wrapped, no need to handle callId or state. |
+ m_workerGlobalScope->thread()->workerReportingProxy().postMessageToPageInspector(response); |
} |
DEFINE_TRACE(WorkerInspectorController) |
{ |
visitor->trace(m_workerGlobalScope); |
visitor->trace(m_instrumentingAgents); |
- visitor->trace(m_agents); |
+ visitor->trace(m_session); |
} |
} // namespace blink |