diff options
Diffstat (limited to 'chromium/content/browser/devtools/render_frame_devtools_agent_host.cc')
-rw-r--r-- | chromium/content/browser/devtools/render_frame_devtools_agent_host.cc | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/chromium/content/browser/devtools/render_frame_devtools_agent_host.cc b/chromium/content/browser/devtools/render_frame_devtools_agent_host.cc index 85f51815313..ec0bfc836a6 100644 --- a/chromium/content/browser/devtools/render_frame_devtools_agent_host.cc +++ b/chromium/content/browser/devtools/render_frame_devtools_agent_host.cc @@ -601,6 +601,19 @@ void RenderFrameDevToolsAgentHost::OnPageScaleFactorChanged( input->OnPageScaleFactorChanged(page_scale_factor); } +void RenderFrameDevToolsAgentHost::OnNavigationRequestWillBeSent( + const NavigationRequest& navigation_request) { + const auto& url = navigation_request.common_params().url; + std::vector<DevToolsSession*> restricted_sessions; + bool is_webui = frame_host_ && frame_host_->web_ui(); + for (DevToolsSession* session : sessions()) { + if (!session->client()->MayAttachToURL(url, is_webui)) + restricted_sessions.push_back(session); + } + if (!restricted_sessions.empty()) + ForceDetachRestrictedSessions(restricted_sessions); +} + void RenderFrameDevToolsAgentHost::DisconnectWebContents() { navigation_handles_.clear(); SetFrameTreeNode(nullptr); @@ -786,16 +799,18 @@ bool RenderFrameDevToolsAgentHost::IsChildFrame() { bool RenderFrameDevToolsAgentHost::ShouldAllowSession( DevToolsSession* session) { + // There's not much we can say if there's not host yet, but we'll + // check again when host is updated. + if (!frame_host_) + return true; DevToolsManager* manager = DevToolsManager::GetInstance(); - if (manager->delegate() && frame_host_) { - if (!manager->delegate()->AllowInspectingRenderFrameHost(frame_host_)) - return false; - } - const bool is_webui = - frame_host_ && (frame_host_->web_ui() || frame_host_->pending_web_ui()); - if (!session->client()->MayAttachToRenderer(frame_host_, is_webui)) + if (manager->delegate() && + !manager->delegate()->AllowInspectingRenderFrameHost(frame_host_)) { return false; - return true; + } + // Note this may be called before navigation is committed. + return session->client()->MayAttachToURL( + frame_host_->GetSiteInstance()->GetSiteURL(), frame_host_->web_ui()); } void RenderFrameDevToolsAgentHost::UpdateResourceLoaderFactories() { |