Commit db286946 authored by Andrey Lushnikov's avatar Andrey Lushnikov Committed by Commit Bot

DevTools: force-detach worker sessions on navigation

When renderer navigates, all worker agent hosts will be eventually
disposed. In order to keep protocol determenistic, this patch proactively
detaches all worker sessions on renderer navigation.

R=dgozman

Change-Id: Ief0fe3db90eade9e12baa3cbe4f6b78785c60e4f
Reviewed-on: https://chromium-review.googlesource.com/c/1345529
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609886}
parent b5d22b70
......@@ -59,6 +59,11 @@ void DevToolsRendererChannel::SetRendererInternal(
blink::mojom::DevToolsAgent* agent,
int process_id,
RenderFrameHostImpl* frame_host) {
// Child workers will eventually disconnect, but timing depends on the
// renderer process. To ensure consistent view over protocol, disconnect them
// right now.
for (WorkerDevToolsAgentHost* host : child_workers_)
host->ForceDetachAllSessions();
process_id_ = process_id;
frame_host_ = frame_host;
if (agent && !report_attachers_.empty()) {
......
......@@ -22,6 +22,7 @@ namespace content {
class DevToolsAgentHostImpl;
class DevToolsSession;
class RenderFrameHostImpl;
class WorkerDevToolsAgentHost;
namespace protocol {
class TargetAutoAttacher;
......@@ -81,7 +82,7 @@ class CONTENT_EXPORT DevToolsRendererChannel
RenderFrameHostImpl* frame_host_ = nullptr;
base::flat_set<protocol::TargetAutoAttacher*> report_attachers_;
base::flat_set<protocol::TargetAutoAttacher*> wait_for_debugger_attachers_;
base::flat_set<DevToolsAgentHostImpl*> child_workers_;
base::flat_set<WorkerDevToolsAgentHost*> child_workers_;
base::WeakPtrFactory<DevToolsRendererChannel> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(DevToolsRendererChannel);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment