summaryrefslogtreecommitdiffstats
path: root/content/child/shared_worker_devtools_agent.cc
diff options
context:
space:
mode:
authorkozyatinskiy <kozyatinskiy@chromium.org>2015-11-20 21:40:48 -0800
committerCommit bot <commit-bot@chromium.org>2015-11-21 05:41:26 +0000
commit1084bdca601104f8eb99fa4ff11cc1397d8dd1af (patch)
treefa47b8d11142337184697360518eea01b36cc3c1 /content/child/shared_worker_devtools_agent.cc
parent7033604f1c3822f4a73190cf9fef458c7cd66b9b (diff)
downloadchromium_src-1084bdca601104f8eb99fa4ff11cc1397d8dd1af.zip
chromium_src-1084bdca601104f8eb99fa4ff11cc1397d8dd1af.tar.gz
chromium_src-1084bdca601104f8eb99fa4ff11cc1397d8dd1af.tar.bz2
[DevTools] filter any messages from previous session in DevToolsAgentHostImpl
Frontend can receive response for protocol message that was sent by previous session or notification that was produced during previous session. E.g. frontend send protocol message and then reattach and then get response. session_id for protocol message is added in this CL. DevToolsAgentHostImpl store current session_id, RenderFrameDevToolsAgentHost and WorkerDevToolsAgentHost add to each protocol message session id and SendResponseMessageToClient method check it after processing. WebDevToolsAgentImpl get session_id from Attach or Reattach IPC message, clear session_id on Dettach message and use it for notifications. BUG=503875, 503824 TEST=run blink/tools/run_layout_tests.py inspector/sources/debugger-breakpoints/set-conditional-breakpoint.html --repeat-each 2 R=pfeldman@chromium.org, dgozman@chromium.org TBR=jam@chromium.org, tsepez@chromium.org Review URL: https://codereview.chromium.org/1437283003 Cr-Commit-Position: refs/heads/master@{#361008}
Diffstat (limited to 'content/child/shared_worker_devtools_agent.cc')
-rw-r--r--content/child/shared_worker_devtools_agent.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/content/child/shared_worker_devtools_agent.cc b/content/child/shared_worker_devtools_agent.cc
index 26a51ed..9b1996f 100644
--- a/content/child/shared_worker_devtools_agent.cc
+++ b/content/child/shared_worker_devtools_agent.cc
@@ -44,6 +44,7 @@ bool SharedWorkerDevToolsAgent::OnMessageReceived(const IPC::Message& message) {
}
void SharedWorkerDevToolsAgent::SendDevToolsMessage(
+ int session_id,
int call_id,
const blink::WebString& msg,
const blink::WebString& state) {
@@ -55,6 +56,7 @@ void SharedWorkerDevToolsAgent::SendDevToolsMessage(
if (message.length() < kMaxMessageChunkSize) {
chunk.data.swap(message);
+ chunk.session_id = session_id;
chunk.call_id = call_id;
chunk.post_state = post_state;
chunk.is_last = true;
@@ -65,6 +67,7 @@ void SharedWorkerDevToolsAgent::SendDevToolsMessage(
for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) {
chunk.is_last = pos + kMaxMessageChunkSize >= message.length();
+ chunk.session_id = chunk.is_last ? session_id : 0;
chunk.call_id = chunk.is_last ? call_id : 0;
chunk.post_state = chunk.is_last ? post_state : std::string();
chunk.data = message.substr(pos, kMaxMessageChunkSize);
@@ -75,13 +78,15 @@ void SharedWorkerDevToolsAgent::SendDevToolsMessage(
}
}
-void SharedWorkerDevToolsAgent::OnAttach(const std::string& host_id) {
- webworker_->attachDevTools(WebString::fromUTF8(host_id));
+void SharedWorkerDevToolsAgent::OnAttach(const std::string& host_id,
+ int session_id) {
+ webworker_->attachDevTools(WebString::fromUTF8(host_id), session_id);
}
void SharedWorkerDevToolsAgent::OnReattach(const std::string& host_id,
+ int session_id,
const std::string& state) {
- webworker_->reattachDevTools(WebString::fromUTF8(host_id),
+ webworker_->reattachDevTools(WebString::fromUTF8(host_id), session_id,
WebString::fromUTF8(state));
}
@@ -90,8 +95,9 @@ void SharedWorkerDevToolsAgent::OnDetach() {
}
void SharedWorkerDevToolsAgent::OnDispatchOnInspectorBackend(
+ int session_id,
const std::string& message) {
- webworker_->dispatchDevToolsMessage(WebString::fromUTF8(message));
+ webworker_->dispatchDevToolsMessage(session_id, WebString::fromUTF8(message));
}
bool SharedWorkerDevToolsAgent::Send(IPC::Message* message) {