Chromium Code Reviews| Index: chrome/browser/debugger/devtools_window.cc |
| diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc |
| index e1a282b96bb56574ab9679a322cc590866fd3fc1..026e1dd94906587c0228cb22f5a8d391358f3568 100644 |
| --- a/chrome/browser/debugger/devtools_window.cc |
| +++ b/chrome/browser/debugger/devtools_window.cc |
| @@ -103,15 +103,7 @@ TabContents* DevToolsWindow::GetDevToolsContents(WebContents* inspected_tab) { |
| // static |
| bool DevToolsWindow::IsDevToolsWindow(RenderViewHost* window_rvh) { |
| - if (g_instances == NULL) |
| - return false; |
| - DevToolsWindowList& instances = g_instances.Get(); |
| - for (DevToolsWindowList::iterator it = instances.begin(); |
| - it != instances.end(); ++it) { |
| - if ((*it)->tab_contents_->web_contents()->GetRenderViewHost() == window_rvh) |
| - return true; |
| - } |
| - return false; |
| + return AsDevToolsWindow(window_rvh); |
| } |
| // static |
| @@ -131,7 +123,7 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( |
| worker_agent, |
| window->frontend_host_); |
| } |
| - window->Show(DEVTOOLS_TOGGLE_ACTION_NONE); |
| + window->Show(DEVTOOLS_TOGGLE_ACTION_SHOW); |
| return window; |
| } |
| @@ -145,16 +137,23 @@ DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker( |
| DevToolsWindow* DevToolsWindow::OpenDevToolsWindow( |
| RenderViewHost* inspected_rvh) { |
| return ToggleDevToolsWindow(inspected_rvh, true, |
| - DEVTOOLS_TOGGLE_ACTION_NONE); |
| + DEVTOOLS_TOGGLE_ACTION_SHOW); |
| } |
| // static |
| DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| - RenderViewHost* inspected_rvh, |
| + Browser* browser, |
| DevToolsToggleAction action) { |
| + if (action == DEVTOOLS_TOGGLE_ACTION_TOGGLE && browser->is_devtools()) { |
| + chrome::CloseAllTabs(browser); |
| + return NULL; |
| + } |
| + RenderViewHost* inspected_rvh = |
| + chrome::GetActiveWebContents(browser)->GetRenderViewHost(); |
| + |
| return ToggleDevToolsWindow(inspected_rvh, |
| - action == DEVTOOLS_TOGGLE_ACTION_INSPECT, |
| - action); |
| + action == DEVTOOLS_TOGGLE_ACTION_INSPECT, |
| + action); |
| } |
| void DevToolsWindow::InspectElement(RenderViewHost* inspected_rvh, |
| @@ -197,7 +196,7 @@ DevToolsWindow::DevToolsWindow(TabContents* tab_contents, |
| browser_(NULL), |
| docked_(docked), |
| is_loaded_(false), |
| - action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE) { |
| + action_on_load_(DEVTOOLS_TOGGLE_ACTION_SHOW) { |
| frontend_host_ = DevToolsClientHost::CreateDevToolsFrontendHost( |
| tab_contents->web_contents(), |
| this); |
| @@ -349,7 +348,7 @@ void DevToolsWindow::RequestSetDocked(bool docked) { |
| inspected_window = NULL; |
| } |
| } |
| - Show(DEVTOOLS_TOGGLE_ACTION_NONE); |
| + Show(DEVTOOLS_TOGGLE_ACTION_SHOW); |
| } |
| RenderViewHost* DevToolsWindow::GetRenderViewHost() { |
| @@ -514,13 +513,14 @@ void DevToolsWindow::DoAction() { |
| break; |
| case DEVTOOLS_TOGGLE_ACTION_INSPECT: |
| CallClientFunction("InspectorFrontendAPI.enterInspectElementMode", NULL); |
| - case DEVTOOLS_TOGGLE_ACTION_NONE: |
| + case DEVTOOLS_TOGGLE_ACTION_SHOW: |
| + case DEVTOOLS_TOGGLE_ACTION_TOGGLE: |
| // Do nothing. |
| break; |
| default: |
| NOTREACHED(); |
| } |
| - action_on_load_ = DEVTOOLS_TOGGLE_ACTION_NONE; |
| + action_on_load_ = DEVTOOLS_TOGGLE_ACTION_SHOW; |
| } |
| std::string SkColorToRGBAString(SkColor color) { |
| @@ -623,7 +623,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| DevToolsManager* manager = DevToolsManager::GetInstance(); |
| DevToolsClientHost* host = manager->GetDevToolsClientHostFor(agent); |
| DevToolsWindow* window = AsDevToolsWindow(host); |
| - if (host != NULL && window == NULL) { |
| + if (host && window) { |
|
pfeldman
2012/08/27 09:21:33
!window
|
| // Break remote debugging / extension debugging session. |
| manager->UnregisterDevToolsClientHostFor(agent); |
| } |
| @@ -665,6 +665,19 @@ DevToolsWindow* DevToolsWindow::AsDevToolsWindow( |
| return NULL; |
| } |
| +// static |
| +DevToolsWindow* DevToolsWindow::AsDevToolsWindow(RenderViewHost* rvh) { |
|
pfeldman
2012/08/27 09:21:33
window_rvh
|
| + if (g_instances == NULL) |
|
pfeldman
2012/08/27 09:21:33
if (!g_instance)
|
| + return NULL; |
| + DevToolsWindowList& instances = g_instances.Get(); |
| + for (DevToolsWindowList::iterator it = instances.begin(); |
| + it != instances.end(); ++it) { |
| + if ((*it)->tab_contents_->web_contents()->GetRenderViewHost() == rvh) |
| + return *it; |
| + } |
| + return NULL; |
| +} |
| + |
| void DevToolsWindow::ActivateWindow() { |
| if (!docked_) { |
| if (!browser_->window()->IsActive()) { |