Index: chrome/browser/devtools/devtools_window.cc |
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
index 692c833db1d10befa0d027abb7aaa2a0e88f9d2d..36eb1ce709b7b56a436205ed585ecaaa82c3dc7f 100644 |
--- a/chrome/browser/devtools/devtools_window.cc |
+++ b/chrome/browser/devtools/devtools_window.cc |
@@ -140,9 +140,7 @@ DevToolsWindow* DevToolsWindow::GetDockedInstanceForInspectedTab( |
return NULL; |
scoped_refptr<DevToolsAgentHost> agent(DevToolsAgentHost::GetOrCreateFor( |
inspected_web_contents->GetRenderViewHost())); |
- DevToolsManager* manager = DevToolsManager::GetInstance(); |
- DevToolsClientHost* client_host = manager->GetDevToolsClientHostFor(agent); |
- DevToolsWindow* window = AsDevToolsWindow(client_host); |
+ DevToolsWindow* window = AsDevToolsWindow(agent); |
return window && window->IsDocked() ? window : NULL; |
} |
@@ -155,15 +153,10 @@ bool DevToolsWindow::IsDevToolsWindow(RenderViewHost* window_rvh) { |
DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( |
Profile* profile, |
DevToolsAgentHost* worker_agent) { |
- DevToolsWindow* window; |
- DevToolsClientHost* client = content::DevToolsManager::GetInstance()-> |
- GetDevToolsClientHostFor(worker_agent); |
- if (client) { |
- window = AsDevToolsWindow(client); |
- if (!window) |
- return NULL; |
- } else { |
+ DevToolsWindow* window = AsDevToolsWindow(worker_agent); |
+ if (!window) { |
window = DevToolsWindow::CreateDevToolsWindowForWorker(profile); |
+ // Will disconnect the current client host if there is one. |
DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( |
worker_agent, |
window->frontend_host_.get()); |
@@ -293,6 +286,10 @@ content::WebContents* DevToolsWindow::GetInspectedWebContents() { |
} |
void DevToolsWindow::InspectedContentsClosing() { |
+ Hide(); |
+} |
+ |
+void DevToolsWindow::Hide() { |
pfeldman
2013/03/29 14:59:23
Public method that deletes this is dangerous.
Vladislav Kaznacheev
2013/03/29 15:15:35
Made private
On 2013/03/29 14:59:23, pfeldman wrot
|
if (IsDocked()) { |
// Update dev tools to reflect removed dev tools window. |
BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
@@ -714,20 +711,14 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
scoped_refptr<DevToolsAgentHost> agent( |
DevToolsAgentHost::GetOrCreateFor(inspected_rvh)); |
DevToolsManager* manager = DevToolsManager::GetInstance(); |
- DevToolsClientHost* host = manager->GetDevToolsClientHostFor(agent); |
- DevToolsWindow* window = AsDevToolsWindow(host); |
- if (host && !window) { |
- // Break remote debugging / extension debugging session. |
- host->ReplacedWithAnotherClient(); |
pfeldman
2013/03/29 14:59:23
Why did this go away?
Vladislav Kaznacheev
2013/03/29 15:15:35
Register... now takes care of that.
On 2013/03/29
|
- manager->UnregisterDevToolsClientHostFor(agent); |
- } |
- |
+ DevToolsWindow* window = AsDevToolsWindow(agent); |
bool do_open = force_open; |
if (!window) { |
Profile* profile = Profile::FromBrowserContext( |
inspected_rvh->GetProcess()->GetBrowserContext()); |
DevToolsDockSide dock_side = GetDockSideFromPrefs(profile); |
window = Create(profile, inspected_rvh, dock_side, false); |
+ // Will disconnect the current client host if there is one. |
manager->RegisterDevToolsClientHostFor(agent, window->frontend_host_.get()); |
do_open = true; |
} |
@@ -740,20 +731,20 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
if (!window->IsDocked() || do_open) |
window->Show(action); |
else |
- manager->UnregisterDevToolsClientHostFor(agent); |
+ window->CloseWindow(); |
return window; |
} |
// static |
DevToolsWindow* DevToolsWindow::AsDevToolsWindow( |
- DevToolsClientHost* client_host) { |
- if (!client_host || g_instances == NULL) |
- return NULL; |
+ DevToolsAgentHost* agent_host) { |
+ DevToolsManager* manager = DevToolsManager::GetInstance(); |
DevToolsWindowList& instances = g_instances.Get(); |
for (DevToolsWindowList::iterator it = instances.begin(); |
it != instances.end(); ++it) { |
- if ((*it)->frontend_host_.get() == client_host) |
+ if (manager->GetDevToolsAgentHostFor((*it)->frontend_host_.get()) == |
+ agent_host) |
return *it; |
} |
return NULL; |
@@ -798,7 +789,7 @@ void DevToolsWindow::ChangeAttachedWindowHeight(unsigned height) { |
void DevToolsWindow::CloseWindow() { |
DCHECK(IsDocked()); |
DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_.get()); |
- InspectedContentsClosing(); |
+ Hide(); |
} |
void DevToolsWindow::MoveWindow(int x, int y) { |