Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3677)

Unified Diff: chrome/browser/devtools/devtools_window.cc

Issue 12528011: Rebind frontend host when frontend renderer navigates to devtools url. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added new line Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698