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

Unified Diff: content/browser/devtools/worker_devtools_agent_host.cc

Issue 2864103002: [DevTools] Support multiple DevToolsMessageChunkProcessor instances (Closed)
Patch Set: fix Created 3 years, 7 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
« no previous file with comments | « content/browser/devtools/worker_devtools_agent_host.h ('k') | content/renderer/devtools/devtools_agent.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/devtools/worker_devtools_agent_host.cc
diff --git a/content/browser/devtools/worker_devtools_agent_host.cc b/content/browser/devtools/worker_devtools_agent_host.cc
index c545a57113eccb58241b454df2a49e822d498120..2839937066504a8ba21af4b7e08690b502f77dcb 100644
--- a/content/browser/devtools/worker_devtools_agent_host.cc
+++ b/content/browser/devtools/worker_devtools_agent_host.cc
@@ -30,6 +30,10 @@ void WorkerDevToolsAgentHost::AttachSession(DevToolsSession* session) {
host->Send(new DevToolsAgentMsg_Attach(
worker_id_.second, GetId(), session->session_id()));
}
+ chunk_processors_[session->session_id()].reset(
+ new DevToolsMessageChunkProcessor(
+ base::Bind(&WorkerDevToolsAgentHost::SendChunkedMessage,
+ base::Unretained(this))));
session->SetFallThroughForNotFound(true);
session->AddHandler(base::WrapUnique(new protocol::InspectorHandler()));
session->AddHandler(base::WrapUnique(new protocol::NetworkHandler()));
@@ -40,6 +44,7 @@ void WorkerDevToolsAgentHost::AttachSession(DevToolsSession* session) {
void WorkerDevToolsAgentHost::DetachSession(int session_id) {
if (RenderProcessHost* host = RenderProcessHost::FromID(worker_id_.first))
host->Send(new DevToolsAgentMsg_Detach(worker_id_.second, session_id));
+ chunk_processors_.erase(session_id);
OnAttachedStateChanged(false);
if (state_ == WORKER_INSPECTED) {
state_ = WORKER_UNINSPECTED;
@@ -102,9 +107,12 @@ void WorkerDevToolsAgentHost::WorkerReadyForInspection() {
state_ = WORKER_INSPECTED;
AttachToWorker();
if (RenderProcessHost* host = RenderProcessHost::FromID(worker_id_.first)) {
+ std::string state_cookie;
+ auto it = chunk_processors_.find(session()->session_id());
+ if (it != chunk_processors_.end())
+ state_cookie = it->second->state_cookie();
host->Send(new DevToolsAgentMsg_Reattach(
- worker_id_.second, GetId(), session()->session_id(),
- chunk_processor_.state_cookie()));
+ worker_id_.second, GetId(), session()->session_id(), state_cookie));
}
OnAttachedStateChanged(true);
} else if (state_ == WORKER_PAUSED_FOR_DEBUG_ON_START) {
@@ -137,8 +145,6 @@ bool WorkerDevToolsAgentHost::IsTerminated() {
WorkerDevToolsAgentHost::WorkerDevToolsAgentHost(WorkerId worker_id)
: DevToolsAgentHostImpl(base::GenerateGUID()),
- chunk_processor_(base::Bind(&WorkerDevToolsAgentHost::SendMessageToClient,
- base::Unretained(this))),
state_(WORKER_UNINSPECTED),
worker_id_(worker_id) {
WorkerCreated();
@@ -167,10 +173,15 @@ void WorkerDevToolsAgentHost::WorkerCreated() {
void WorkerDevToolsAgentHost::OnDispatchOnInspectorFrontend(
const DevToolsMessageChunk& message) {
- if (!IsAttached())
- return;
+ auto it = chunk_processors_.find(message.session_id);
+ if (it != chunk_processors_.end())
+ it->second->ProcessChunkedMessageFromAgent(message);
+}
- chunk_processor_.ProcessChunkedMessageFromAgent(message);
+void WorkerDevToolsAgentHost::SendChunkedMessage(int session_id,
+ const std::string& message) {
+ if (session() && session()->session_id() == session_id)
+ session()->SendMessageToClient(message);
}
} // namespace content
« no previous file with comments | « content/browser/devtools/worker_devtools_agent_host.h ('k') | content/renderer/devtools/devtools_agent.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698