Chromium Code Reviews| Index: chrome/browser/devtools/devtools_window.cc |
| diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
| index e7df5db09306f69a05b55d33ff77849d65d1cdd6..b97787fc36cd4db1432e3e58ad380f214d683a6a 100644 |
| --- a/chrome/browser/devtools/devtools_window.cc |
| +++ b/chrome/browser/devtools/devtools_window.cc |
| @@ -172,6 +172,14 @@ BrowserWindow* DevToolsToolboxDelegate::GetInspectedBrowserWindow() { |
| return NULL; |
| } |
| +bool AreDeveloperToolsDisabled( |
| + const WebContents* const inspected_web_contents) { |
| + if (!inspected_web_contents) return false; |
| + Profile* profile = |
| + Profile::FromBrowserContext(inspected_web_contents->GetBrowserContext()); |
| + return profile->GetPrefs()->GetBoolean(prefs::kDevToolsDisabled); |
| +} |
| + |
| } // namespace |
| // DevToolsEventForwarder ----------------------------------------------------- |
| @@ -388,17 +396,20 @@ bool DevToolsWindow::IsDevToolsWindow(content::WebContents* web_contents) { |
| } |
| // static |
| -DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( |
| +void DevToolsWindow::OpenDevToolsWindowForWorker( |
| Profile* profile, |
| const scoped_refptr<DevToolsAgentHost>& worker_agent) { |
| DevToolsWindow* window = FindDevToolsWindow(worker_agent.get()); |
| if (!window) { |
| window = DevToolsWindow::CreateDevToolsWindowForWorker(profile); |
| + |
| DCHECK(window); |
|
dgozman
2015/03/10 19:36:34
Remove DCHECK.
|
| + if (!window) |
| + return; |
| + |
| window->bindings_->AttachTo(worker_agent); |
| } |
| window->ScheduleShow(DevToolsToggleAction::Show()); |
| - return window; |
| } |
| // static |
| @@ -409,45 +420,48 @@ DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker( |
| } |
| // static |
| -DevToolsWindow* DevToolsWindow::OpenDevToolsWindow( |
| +void DevToolsWindow::OpenDevToolsWindow( |
| content::WebContents* inspected_web_contents) { |
| - return ToggleDevToolsWindow( |
| - inspected_web_contents, true, DevToolsToggleAction::Show(), ""); |
| + DevToolsWindow::OpenDevToolsWindow(inspected_web_contents, |
|
dgozman
2015/03/10 19:36:34
nit: let's revert back to ToggleDevToolsWindow
|
| + DevToolsToggleAction::Show()); |
| } |
| // static |
| -DevToolsWindow* DevToolsWindow::OpenDevToolsWindow( |
| +void DevToolsWindow::OpenDevToolsWindow( |
| content::WebContents* inspected_web_contents, |
| const DevToolsToggleAction& action) { |
| - return ToggleDevToolsWindow(inspected_web_contents, true, action, ""); |
| + ToggleDevToolsWindow(inspected_web_contents, true, action, ""); |
| } |
| // static |
| -DevToolsWindow* DevToolsWindow::OpenDevToolsWindow( |
| +void DevToolsWindow::OpenDevToolsWindow( |
| Profile* profile, |
| const scoped_refptr<content::DevToolsAgentHost>& agent_host) { |
| DevToolsWindow* window = FindDevToolsWindow(agent_host.get()); |
| if (!window) { |
| window = DevToolsWindow::Create( |
| profile, GURL(), nullptr, false, std::string(), false, std::string()); |
| + |
| DCHECK(window); |
|
dgozman
2015/03/10 19:36:34
remove DCHECK
|
| + if (!window) |
| + return; |
| + |
| window->bindings_->AttachTo(agent_host); |
| } |
| window->ScheduleShow(DevToolsToggleAction::Show()); |
| - return window; |
| } |
| // static |
| -DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| +void DevToolsWindow::ToggleDevToolsWindow( |
| Browser* browser, |
| const DevToolsToggleAction& action) { |
| if (action.type() == DevToolsToggleAction::kToggle && |
| browser->is_devtools()) { |
| browser->tab_strip_model()->CloseAllTabs(); |
| - return NULL; |
| + return; |
| } |
| - return ToggleDevToolsWindow( |
| + ToggleDevToolsWindow( |
| browser->tab_strip_model()->GetActiveWebContents(), |
| action.type() == DevToolsToggleAction::kInspect, |
| action, ""); |
| @@ -463,15 +477,18 @@ void DevToolsWindow::OpenExternalFrontend( |
| if (!window) { |
| window = Create(profile, GURL(), nullptr, isWorker, |
| DevToolsUI::GetProxyURL(frontend_url).spec(), false, std::string()); |
| - if (window) |
| - window->bindings_->AttachTo(agent_host); |
| + |
| + if (!window) |
| + return; |
| + |
| + window->bindings_->AttachTo(agent_host); |
| } |
| - if (window) |
| - window->ScheduleShow(DevToolsToggleAction::Show()); |
| + |
| + window->ScheduleShow(DevToolsToggleAction::Show()); |
| } |
| // static |
| -DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| +void DevToolsWindow::ToggleDevToolsWindow( |
| content::WebContents* inspected_web_contents, |
| bool force_open, |
| const DevToolsToggleAction& action, |
| @@ -487,7 +504,11 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| base::UserMetricsAction("DevTools_InspectRenderer")); |
| window = Create(profile, GURL(), inspected_web_contents, |
| false, std::string(), true, settings); |
| + |
| DCHECK(window); |
|
dgozman
2015/03/10 19:36:34
remove DCHECK
|
| + if (!window) |
| + return; |
| + |
| window->bindings_->AttachTo(agent.get()); |
| do_open = true; |
| } |
| @@ -501,8 +522,6 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| window->ScheduleShow(action); |
| else |
| window->CloseWindow(); |
| - |
| - return window; |
| } |
| // static |
| @@ -517,8 +536,10 @@ void DevToolsWindow::InspectElement( |
| base::TimeTicks start_time = base::TimeTicks::Now(); |
| // TODO(loislo): we should initiate DevTools window opening from within |
| // renderer. Otherwise, we still can hit a race condition here. |
| - DevToolsWindow* window = OpenDevToolsWindow(inspected_web_contents); |
| - if (should_measure_time) |
| + OpenDevToolsWindow(inspected_web_contents); |
| + |
| + DevToolsWindow* window = FindDevToolsWindow(agent.get()); |
| + if (should_measure_time && window) |
| window->inspect_element_start_time_ = start_time; |
| } |
| @@ -722,6 +743,9 @@ DevToolsWindow* DevToolsWindow::Create( |
| const std::string& remote_frontend, |
| bool can_dock, |
| const std::string& settings) { |
| + // If development tools disabled by policy don't open the window. |
| + if (AreDeveloperToolsDisabled(inspected_web_contents)) |
|
dgozman
2015/03/10 19:36:34
I'd just inline the function here. Note that |prof
|
| + return nullptr; |
| if (inspected_web_contents) { |
| // Check for a place to dock. |
| Browser* browser = NULL; |