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

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

Issue 10823233: Close detached DevTools window (rather than open a new instance) when it receives an F12 keypress (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Return NULL as the ToggleDevToolsWindow() result for DevTools windows Created 8 years, 4 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 | « chrome/browser/debugger/devtools_window.h ('k') | chrome/browser/ui/browser_command_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()) {
« no previous file with comments | « chrome/browser/debugger/devtools_window.h ('k') | chrome/browser/ui/browser_command_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698