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; |