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

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

Issue 3011002: Add "Inspect Element" shortcut to browser tabs (Closed)
Patch Set: Added TODO, fixed field setting, merged code Created 10 years, 5 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/extensions/extensions_ui.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 56541e7d631c9a29bd9dc83426373943514379ec..fc74431473821a720b29b9c4dee71a083643b1d5 100644
--- a/chrome/browser/debugger/devtools_window.cc
+++ b/chrome/browser/debugger/devtools_window.cc
@@ -57,11 +57,12 @@ DevToolsWindow::DevToolsWindow(Profile* profile,
browser_(NULL),
docked_(docked),
is_loaded_(false),
- open_console_on_load_(false) {
+ action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE) {
// Create TabContents with devtools.
tab_contents_ = new TabContents(profile, NULL, MSG_ROUTING_NONE, NULL);
tab_contents_->render_view_host()->AllowBindings(BindingsPolicy::DOM_UI);
- tab_contents_->controller().LoadURL(GetDevToolsUrl(), GURL(), PageTransition::START_PAGE);
+ tab_contents_->controller().LoadURL(
+ GetDevToolsUrl(), GURL(), PageTransition::START_PAGE);
// Wipe out page icon so that the default application icon is used.
NavigationEntry* entry = tab_contents_->controller().GetActiveEntry();
@@ -115,7 +116,7 @@ void DevToolsWindow::InspectedTabClosing() {
}
}
-void DevToolsWindow::Show(bool open_console) {
+void DevToolsWindow::Show(DevToolsToggleAction action) {
if (docked_) {
// Just tell inspected browser to update splitter.
BrowserWindow* inspected_window = GetInspectedBrowserWindow();
@@ -124,8 +125,7 @@ void DevToolsWindow::Show(bool open_console) {
inspected_window->UpdateDevTools();
SetAttachedWindow();
tab_contents_->view()->SetInitialFocus();
- if (open_console)
- ScheduleOpenConsole();
+ ScheduleAction(action);
return;
} else {
// Sometimes we don't know where to dock. Stay undocked.
@@ -136,12 +136,17 @@ void DevToolsWindow::Show(bool open_console) {
if (!browser_)
CreateDevToolsBrowser();
- browser_->window()->Show();
+ // Avoid consecutive window switching if the devtools window has been opened
+ // and the Inspect Element shortcut is pressed in the inspected tab.
+ bool should_show_window =
+ !browser_ || action != DEVTOOLS_TOGGLE_ACTION_INSPECT;
+ if (should_show_window)
+ browser_->window()->Show();
SetAttachedWindow();
- tab_contents_->view()->SetInitialFocus();
+ if (should_show_window)
+ tab_contents_->view()->SetInitialFocus();
- if (open_console)
- ScheduleOpenConsole();
+ ScheduleAction(action);
}
void DevToolsWindow::Activate() {
@@ -180,7 +185,7 @@ void DevToolsWindow::SetDocked(bool docked) {
inspected_window = NULL;
}
}
- Show(false);
+ Show(DEVTOOLS_TOGGLE_ACTION_NONE);
}
RenderViewHost* DevToolsWindow::GetRenderViewHost() {
@@ -244,10 +249,7 @@ void DevToolsWindow::Observe(NotificationType type,
SetAttachedWindow();
is_loaded_ = true;
UpdateTheme();
- if (open_console_on_load_) {
- DoOpenConsole();
- open_console_on_load_ = false;
- }
+ DoAction();
} else if (type == NotificationType::TAB_CLOSING) {
if (Source<NavigationController>(source).ptr() ==
&tab_contents_->controller()) {
@@ -263,16 +265,30 @@ void DevToolsWindow::Observe(NotificationType type,
}
}
-void DevToolsWindow::ScheduleOpenConsole() {
+void DevToolsWindow::ScheduleAction(DevToolsToggleAction action) {
+ action_on_load_ = action;
if (is_loaded_)
- DoOpenConsole();
- else
- open_console_on_load_ = true;
+ DoAction();
}
-void DevToolsWindow::DoOpenConsole() {
- tab_contents_->render_view_host()->
- ExecuteJavascriptInWebFrame(L"", L"WebInspector.showConsole();");
+void DevToolsWindow::DoAction() {
+ // TODO: these messages should be pushed through the WebKit API instead.
+ switch (action_on_load_) {
+ case DEVTOOLS_TOGGLE_ACTION_SHOW_CONSOLE:
+ tab_contents_->render_view_host()->
+ ExecuteJavascriptInWebFrame(L"", L"WebInspector.showConsole();");
+ break;
+ case DEVTOOLS_TOGGLE_ACTION_INSPECT:
+ tab_contents_->render_view_host()->
+ ExecuteJavascriptInWebFrame(
+ L"", L"WebInspector.toggleSearchingForNode();");
+ case DEVTOOLS_TOGGLE_ACTION_NONE:
+ // Do nothing.
+ break;
+ default:
+ NOTREACHED();
+ }
+ action_on_load_ = DEVTOOLS_TOGGLE_ACTION_NONE;
}
std::string SkColorToRGBAString(SkColor color) {
« no previous file with comments | « chrome/browser/debugger/devtools_window.h ('k') | chrome/browser/extensions/extensions_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698