Index: chrome/browser/devtools/devtools_window.cc |
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
index 8e4fc52d8be4eafc8b2b2bc608ab5222fd11ca06..e4445e3a894187fcd2542249a9bed0e88d1cd725 100644 |
--- a/chrome/browser/devtools/devtools_window.cc |
+++ b/chrome/browser/devtools/devtools_window.cc |
@@ -34,6 +34,8 @@ |
#include "components/pref_registry/pref_registry_syncable.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/devtools_agent_host.h" |
+#include "content/public/browser/devtools_client_host.h" |
+#include "content/public/browser/devtools_manager.h" |
#include "content/public/browser/native_web_keyboard_event.h" |
#include "content/public/browser/navigation_controller.h" |
#include "content/public/browser/navigation_entry.h" |
@@ -423,7 +425,9 @@ |
DevToolsWindow* window = FindDevToolsWindow(worker_agent); |
if (!window) { |
window = DevToolsWindow::CreateDevToolsWindowForWorker(profile); |
- window->bindings_->AttachTo(worker_agent); |
+ // Will disconnect the current client host if there is one. |
+ content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( |
+ worker_agent, window->bindings_); |
} |
window->ScheduleShow(DevToolsToggleAction::Show()); |
return window; |
@@ -475,7 +479,8 @@ |
if (!window) { |
window = Create(profile, DevToolsUI::GetProxyURL(frontend_url), NULL, |
false, true, false, ""); |
- window->bindings_->AttachTo(agent_host); |
+ content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( |
+ agent_host, window->bindings_); |
} |
window->ScheduleShow(DevToolsToggleAction::Show()); |
} |
@@ -488,6 +493,7 @@ |
const std::string& settings) { |
scoped_refptr<DevToolsAgentHost> agent( |
DevToolsAgentHost::GetOrCreateFor(inspected_web_contents)); |
+ content::DevToolsManager* manager = content::DevToolsManager::GetInstance(); |
DevToolsWindow* window = FindDevToolsWindow(agent.get()); |
bool do_open = force_open; |
if (!window) { |
@@ -497,7 +503,7 @@ |
base::UserMetricsAction("DevTools_InspectRenderer")); |
window = Create( |
profile, GURL(), inspected_web_contents, false, false, true, settings); |
- window->bindings_->AttachTo(agent.get()); |
+ manager->RegisterDevToolsClientHostFor(agent.get(), window->bindings_); |
do_open = true; |
} |
@@ -787,9 +793,10 @@ |
if (!agent_host || g_instances == NULL) |
return NULL; |
DevToolsWindows* instances = g_instances.Pointer(); |
+ content::DevToolsManager* manager = content::DevToolsManager::GetInstance(); |
for (DevToolsWindows::iterator it(instances->begin()); it != instances->end(); |
++it) { |
- if ((*it)->bindings_->IsAttachedTo(agent_host)) |
+ if (manager->GetDevToolsAgentHostFor((*it)->bindings_) == agent_host) |
return *it; |
} |
return NULL; |
@@ -819,7 +826,14 @@ |
inspected_web_contents->OpenURL(params) : NULL; |
} |
- bindings_->Reattach(); |
+ content::DevToolsManager* manager = content::DevToolsManager::GetInstance(); |
+ scoped_refptr<DevToolsAgentHost> agent_host( |
+ manager->GetDevToolsAgentHostFor(bindings_)); |
+ if (!agent_host.get()) |
+ return NULL; |
+ manager->ClientHostClosing(bindings_); |
+ manager->RegisterDevToolsClientHostFor(agent_host.get(), |
+ bindings_); |
content::NavigationController::LoadURLParams load_url_params(params.url); |
main_web_contents_->GetController().LoadURLWithParams(load_url_params); |
@@ -896,8 +910,10 @@ |
bool* proceed_to_fire_unload) { |
if (!intercepted_page_beforeunload_) { |
// Docked devtools window closed directly. |
- if (proceed) |
- bindings_->Detach(); |
+ if (proceed) { |
+ content::DevToolsManager::GetInstance()->ClientHostClosing( |
+ bindings_); |
+ } |
*proceed_to_fire_unload = proceed; |
} else { |
// Inspected page is attempting to close. |