Index: chrome/browser/devtools/devtools_ui_bindings.cc |
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc |
index 97fd7941a846c731941d44d7d27f64985427f1b7..59a073bc488ac71a55eda9ef76516119bbadcf10 100644 |
--- a/chrome/browser/devtools/devtools_ui_bindings.cc |
+++ b/chrome/browser/devtools/devtools_ui_bindings.cc |
@@ -471,6 +471,10 @@ GURL DevToolsUIBindings::SanitizeFrontendURL(const GURL& url) { |
chrome::kChromeUIDevToolsHost, SanitizeFrontendPath(url.path()), true); |
} |
+bool DevToolsUIBindings::IsValidFrontendURL(const GURL& url) { |
+ return SanitizeFrontendURL(url).spec() == url.spec(); |
+} |
+ |
void DevToolsUIBindings::FrontendWebContentsObserver::RenderProcessGone( |
base::TerminationStatus status) { |
bool crashed = true; |
@@ -495,7 +499,7 @@ void DevToolsUIBindings::FrontendWebContentsObserver::RenderProcessGone( |
void DevToolsUIBindings::FrontendWebContentsObserver:: |
DidStartNavigationToPendingEntry(const GURL& url, |
content::ReloadType reload_type) { |
- devtools_bindings_->UpdateFrontendHost(); |
+ devtools_bindings_->UpdateFrontendHost(url); |
} |
void DevToolsUIBindings::FrontendWebContentsObserver:: |
@@ -550,7 +554,7 @@ DevToolsUIBindings::DevToolsUIBindings(content::WebContents* web_contents) |
// Register on-load actions. |
embedder_message_dispatcher_.reset( |
DevToolsEmbedderMessageDispatcher::CreateForDevToolsFrontend(this)); |
- UpdateFrontendHost(); |
+ UpdateFrontendHost(web_contents_->GetVisibleURL()); |
pfeldman
2017/01/10 22:31:51
I don't think you need this call - navigation shou
|
} |
DevToolsUIBindings::~DevToolsUIBindings() { |
@@ -1198,16 +1202,15 @@ void DevToolsUIBindings::ShowDevToolsConfirmInfoBar( |
GlobalConfirmInfoBar::Show(std::move(delegate)); |
} |
-void DevToolsUIBindings::UpdateFrontendHost() { |
- GURL url = web_contents_->GetVisibleURL(); |
- if (url.spec() != SanitizeFrontendURL(url).spec()) { |
+void DevToolsUIBindings::UpdateFrontendHost(const GURL& url) { |
+ if (!IsValidFrontendURL(url)) { |
LOG(ERROR) << "Attempt to navigate to an invalid DevTools front-end URL: " |
<< url.spec(); |
frontend_host_.reset(); |
return; |
} |
frontend_host_.reset(content::DevToolsFrontendHost::Create( |
- web_contents_->GetMainFrame(), |
+ web_contents_, |
base::Bind(&DevToolsUIBindings::HandleMessageFromDevToolsFrontend, |
base::Unretained(this)))); |
} |