 Chromium Code Reviews
 Chromium Code Reviews Issue 2566573002:
  DevTools: Open Elements panel sooner on Inspect Element  (Closed)
    
  
    Issue 2566573002:
  DevTools: Open Elements panel sooner on Inspect Element  (Closed) 
  | Index: chrome/browser/devtools/devtools_window.cc | 
| diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc | 
| index 0b2824f2e8dd29895304ce6cd342cffbf215f29e..4365ffabfd879f402e466b4989301415d6d5b8b4 100644 | 
| --- a/chrome/browser/devtools/devtools_window.cc | 
| +++ b/chrome/browser/devtools/devtools_window.cc | 
| @@ -464,7 +464,8 @@ void DevToolsWindow::OpenDevToolsWindowForWorker( | 
| DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker( | 
| Profile* profile) { | 
| content::RecordAction(base::UserMetricsAction("DevTools_InspectWorker")); | 
| - return Create(profile, GURL(), NULL, true, false, std::string(), false, ""); | 
| + return Create(profile, GURL(), NULL, true, false, std::string(), false, "", | 
| + ""); | 
| } | 
| // static | 
| @@ -524,7 +525,8 @@ void DevToolsWindow::OpenDevToolsWindowForFrame( | 
| DevToolsWindow* window = FindDevToolsWindow(agent_host.get()); | 
| if (!window) { | 
| window = DevToolsWindow::Create(profile, GURL(), nullptr, false, false, | 
| - std::string(), false, std::string()); | 
| + std::string(), false, std::string(), | 
| + std::string()); | 
| 
einbinder
2016/12/09 00:28:56
Do we prefer std::string() over ""? Both seem to g
 
dgozman
2016/12/09 22:19:31
Should not matter.
 | 
| if (!window) | 
| return; | 
| window->bindings_->AttachTo(agent_host); | 
| @@ -558,7 +560,8 @@ void DevToolsWindow::OpenExternalFrontend( | 
| DevToolsWindow* window = FindDevToolsWindow(agent_host.get()); | 
| if (!window) { | 
| window = Create(profile, GURL(), nullptr, is_worker, is_v8_only, | 
| - DevToolsUI::GetProxyURL(frontend_url).spec(), false, std::string()); | 
| + DevToolsUI::GetProxyURL(frontend_url).spec(), false, | 
| + std::string(), std::string()); | 
| if (!window) | 
| return; | 
| window->bindings_->AttachTo(agent_host); | 
| @@ -583,8 +586,28 @@ void DevToolsWindow::ToggleDevToolsWindow( | 
| inspected_web_contents->GetBrowserContext()); | 
| content::RecordAction( | 
| base::UserMetricsAction("DevTools_InspectRenderer")); | 
| - window = Create(profile, GURL(), inspected_web_contents, | 
| - false, false, std::string(), true, settings); | 
| + std::string panel = ""; | 
| + switch (action.type()) { | 
| + case DevToolsToggleAction::kInspect: | 
| + panel = "elements"; | 
| + break; | 
| + case DevToolsToggleAction::kShowSecurityPanel: | 
| + panel = "security"; | 
| + break; | 
| + case DevToolsToggleAction::kShowConsole: | 
| + panel = "console"; | 
| + break; | 
| + case DevToolsToggleAction::kShow: | 
| + case DevToolsToggleAction::kToggle: | 
| + case DevToolsToggleAction::kReveal: | 
| + case DevToolsToggleAction::kNoOp: | 
| + break; | 
| + default: | 
| 
dgozman
2016/12/09 22:19:31
Omit the default clause.
 
einbinder
2016/12/12 22:04:27
Done.
 | 
| + NOTREACHED(); | 
| + break; | 
| + } | 
| + window = Create(profile, GURL(), inspected_web_contents, false, false, | 
| + std::string(), true, settings, panel); | 
| if (!window) | 
| return; | 
| window->bindings_->AttachTo(agent.get()); | 
| @@ -614,7 +637,8 @@ void DevToolsWindow::InspectElement( | 
| // TODO(loislo): we should initiate DevTools window opening from within | 
| // renderer. Otherwise, we still can hit a race condition here. | 
| if (agent->GetType() == content::DevToolsAgentHost::kTypePage) { | 
| - OpenDevToolsWindow(agent->GetWebContents()); | 
| + OpenDevToolsWindow(agent->GetWebContents(), | 
| + DevToolsToggleAction::Inspect()); | 
| 
einbinder
2016/12/09 00:28:56
The Inspect action is for Ctrl+Shift+C. I'm borrow
 
dgozman
2016/12/09 22:19:31
Let's do action ShowElementsPanel, and rename cons
 
einbinder
2016/12/12 22:04:27
Done.
 | 
| } else { | 
| OpenDevToolsWindowForFrame(Profile::FromBrowserContext( | 
| agent->GetBrowserContext()), agent); | 
| @@ -649,7 +673,6 @@ void DevToolsWindow::Show(const DevToolsToggleAction& action) { | 
| if (action.type() == DevToolsToggleAction::kNoOp) | 
| return; | 
| - | 
| if (is_docked_) { | 
| DCHECK(can_dock_); | 
| Browser* inspected_browser = NULL; | 
| @@ -840,7 +863,8 @@ DevToolsWindow* DevToolsWindow::Create( | 
| bool v8_only_frontend, | 
| const std::string& remote_frontend, | 
| bool can_dock, | 
| - const std::string& settings) { | 
| + const std::string& settings, | 
| + const std::string& panel) { | 
| if (profile->GetPrefs()->GetBoolean(prefs::kDevToolsDisabled) || | 
| base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode)) | 
| return nullptr; | 
| @@ -857,11 +881,8 @@ DevToolsWindow* DevToolsWindow::Create( | 
| } | 
| // Create WebContents with devtools. | 
| - GURL url(GetDevToolsURL(profile, frontend_url, | 
| - shared_worker_frontend, | 
| - v8_only_frontend, | 
| - remote_frontend, | 
| - can_dock)); | 
| + GURL url(GetDevToolsURL(profile, frontend_url, shared_worker_frontend, | 
| + v8_only_frontend, remote_frontend, can_dock, panel)); | 
| std::unique_ptr<WebContents> main_web_contents( | 
| WebContents::Create(WebContents::CreateParams(profile))); | 
| main_web_contents->GetController().LoadURL( | 
| @@ -883,7 +904,8 @@ GURL DevToolsWindow::GetDevToolsURL(Profile* profile, | 
| bool shared_worker_frontend, | 
| bool v8_only_frontend, | 
| const std::string& remote_frontend, | 
| - bool can_dock) { | 
| + bool can_dock, | 
| + const std::string& panel) { | 
| // Compatibility errors are encoded with data urls, pass them | 
| // through with no decoration. | 
| if (base_url.SchemeIs("data")) | 
| @@ -907,6 +929,8 @@ GURL DevToolsWindow::GetDevToolsURL(Profile* profile, | 
| } | 
| if (can_dock) | 
| url_string += "&can_dock=true"; | 
| + if (panel.size()) | 
| + url_string += "&panel=" + panel; | 
| 
einbinder
2016/12/09 00:28:56
Concatenating the string here feels dangerous.
 | 
| return DevToolsUI::SanitizeFrontendURL(GURL(url_string)); | 
| } | 
| @@ -1311,8 +1335,8 @@ void DevToolsWindow::DoAction(const DevToolsToggleAction& action) { | 
| break; | 
| } | 
| case DevToolsToggleAction::kInspect: | 
| - bindings_->CallClientFunction( | 
| - "DevToolsAPI.enterInspectElementMode", NULL, NULL, NULL); | 
| + bindings_->CallClientFunction("DevToolsAPI.enterInspectElementMode", NULL, | 
| + NULL, NULL); | 
| break; | 
| case DevToolsToggleAction::kShow: |