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

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

Issue 1437283003: [DevTools] filter any messages from previous session in DevToolsAgentHostImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
Index: content/browser/devtools/devtools_agent_host_impl.cc
diff --git a/content/browser/devtools/devtools_agent_host_impl.cc b/content/browser/devtools/devtools_agent_host_impl.cc
index 4d935519c07e0fa2ee919e11ee9ec83bf5e751c8..28318e043b921197a4a015d29883f6dfdbc4fd92 100644
--- a/content/browser/devtools/devtools_agent_host_impl.cc
+++ b/content/browser/devtools/devtools_agent_host_impl.cc
@@ -76,8 +76,7 @@ scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::GetForWorker(
}
DevToolsAgentHostImpl::DevToolsAgentHostImpl()
- : id_(base::GenerateGUID()),
- client_(NULL) {
+ : id_(base::GenerateGUID()), session_id_(0), client_(NULL) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
g_instances.Get()[id_] = this;
}
@@ -106,6 +105,7 @@ scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::Create(
void DevToolsAgentHostImpl::AttachClient(DevToolsAgentHostClient* client) {
scoped_refptr<DevToolsAgentHostImpl> protect(this);
+ ++session_id_;
if (client_) {
client_->AgentHostClosed(this, true);
InnerDetach();
@@ -153,6 +153,16 @@ void DevToolsAgentHostImpl::DisconnectWebContents() {
void DevToolsAgentHostImpl::ConnectWebContents(WebContents* wc) {
}
+void DevToolsAgentHostImpl::SendProtocolResponse(int session_id,
+ const std::string& message) {
+ SendMessageToClient(session_id, message);
+}
+
+void DevToolsAgentHostImpl::SendProtocolNotification(
+ const std::string& message) {
+ SendMessageToClient(session_id(), message);
dgozman 2015/11/20 20:25:07 seesion_id_
kozy 2015/11/21 00:49:00 Done.
+}
+
void DevToolsAgentHostImpl::HostClosed() {
if (!client_)
return;
@@ -164,9 +174,13 @@ void DevToolsAgentHostImpl::HostClosed() {
client->AgentHostClosed(this, false);
}
-void DevToolsAgentHostImpl::SendMessageToClient(const std::string& message) {
+void DevToolsAgentHostImpl::SendMessageToClient(int session_id,
+ const std::string& message) {
if (!client_)
return;
+ // Filter any messages from previous sessions.
+ if (session_id != session_id_)
+ return;
client_->DispatchProtocolMessage(this, message);
}
@@ -249,7 +263,7 @@ void DevToolsMessageChunkProcessor::ProcessChunkedMessageFromAgent(
if (chunk.is_first && chunk.is_last) {
CHECK(message_buffer_size_ == 0);
- callback_.Run(chunk.data);
+ callback_.Run(chunk.session_id, chunk.data);
return;
}
@@ -265,7 +279,7 @@ void DevToolsMessageChunkProcessor::ProcessChunkedMessageFromAgent(
if (chunk.is_last) {
CHECK(message_buffer_.size() == message_buffer_size_);
- callback_.Run(message_buffer_);
+ callback_.Run(chunk.session_id, message_buffer_);
message_buffer_ = std::string();
message_buffer_size_ = 0;
}

Powered by Google App Engine
This is Rietveld 408576698