diff options
author | kozyatinskiy <kozyatinskiy@chromium.org> | 2015-11-20 21:40:48 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-21 05:41:26 +0000 |
commit | 1084bdca601104f8eb99fa4ff11cc1397d8dd1af (patch) | |
tree | fa47b8d11142337184697360518eea01b36cc3c1 /content/child/shared_worker_devtools_agent.cc | |
parent | 7033604f1c3822f4a73190cf9fef458c7cd66b9b (diff) | |
download | chromium_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.cc | 14 |
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) { |