Chromium Code Reviews| 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)))); |
| } |