summaryrefslogtreecommitdiff
path: root/chromium/content/browser/devtools/render_frame_devtools_agent_host.cc
diff options
context:
space:
mode:
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.cc31
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() {