Index: chrome/browser/devtools/devtools_window.cc |
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
index 0123c053cf61eac1699904e6c08a09a59847df87..a45a1b5336502845d3bc4ff4d8df23051a2c11b3 100644 |
--- a/chrome/browser/devtools/devtools_window.cc |
+++ b/chrome/browser/devtools/devtools_window.cc |
@@ -498,20 +498,28 @@ void DevToolsWindow::AddDevToolsExtensionsToClient() { |
WebContents* DevToolsWindow::OpenURLFromTab(WebContents* source, |
const OpenURLParams& params) { |
- if (params.url.SchemeIs(chrome::kChromeDevToolsScheme)) { |
- chrome::NavigateParams nav_params(profile_, params.url, params.transition); |
- FillNavigateParamsFromOpenURLParams(&nav_params, params); |
- nav_params.source_contents = source; |
- nav_params.tabstrip_add_types = TabStripModel::ADD_NONE; |
- nav_params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
- nav_params.user_gesture = true; |
- chrome::Navigate(&nav_params); |
- return nav_params.target_contents; |
- } |
- |
- if (inspected_web_contents_) |
- return inspected_web_contents_->OpenURL(params); |
- return NULL; |
+ if (!params.url.SchemeIs(chrome::kChromeDevToolsScheme)) { |
+ if (inspected_web_contents_) |
+ return inspected_web_contents_->OpenURL(params); |
+ return NULL; |
+ } |
+ |
+ DevToolsManager* manager = DevToolsManager::GetInstance(); |
+ scoped_refptr<DevToolsAgentHost> agent_host( |
+ manager->GetDevToolsAgentHostFor(frontend_host_.get())); |
+ if (!agent_host) |
+ return NULL; |
+ manager->ClientHostClosing(frontend_host_.get()); |
+ manager->RegisterDevToolsClientHostFor(agent_host, frontend_host_.get()); |
+ |
+ chrome::NavigateParams nav_params(profile_, params.url, params.transition); |
+ FillNavigateParamsFromOpenURLParams(&nav_params, params); |
+ nav_params.source_contents = source; |
+ nav_params.tabstrip_add_types = TabStripModel::ADD_NONE; |
+ nav_params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
+ nav_params.user_gesture = true; |
+ chrome::Navigate(&nav_params); |
+ return nav_params.target_contents; |
} |
void DevToolsWindow::CallClientFunction(const std::string& function_name, |