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 2de9c7d6ec244b00e3495549b1aecb17810ad0dd..97846860bf2f408a6ff87a7a538045b46e312843 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) != NULL; |
| } |
| // static |
| @@ -618,6 +610,18 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| RenderViewHost* inspected_rvh, |
| bool force_open, |
| DevToolsToggleAction action) { |
| + if (action == DEVTOOLS_TOGGLE_ACTION_TOGGLE_INSPECTOR) { |
|
pfeldman
2012/08/14 11:04:11
You should add event source browser here. Then you
|
| + DevToolsWindow* currentDevToolsWindow = AsDevToolsWindow(inspected_rvh); |
| + if (currentDevToolsWindow) { |
| + chrome::CloseAllTabs(currentDevToolsWindow->browser()); |
| + return currentDevToolsWindow; |
| + } |
| + |
| + // If invoked not on a DevTools window, behave as if it were a normal |
| + // "Open DevTools window" shortcut. |
| + action = DEVTOOLS_TOGGLE_ACTION_NONE; |
| + } |
| + |
| DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( |
| inspected_rvh); |
| DevToolsManager* manager = DevToolsManager::GetInstance(); |
| @@ -665,6 +669,19 @@ DevToolsWindow* DevToolsWindow::AsDevToolsWindow( |
| return NULL; |
| } |
| +// static |
| +DevToolsWindow* DevToolsWindow::AsDevToolsWindow(RenderViewHost* rvh) { |
| + if (g_instances == NULL) |
| + 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()) { |