diff options
author | markusheintz@chromium.org <markusheintz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-22 16:32:13 +0000 |
---|---|---|
committer | markusheintz@chromium.org <markusheintz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-22 16:32:13 +0000 |
commit | 543432ee19b7d54e79a3726756eec8593f0b8022 (patch) | |
tree | 8f7905f43203a553a4af52bcf0c4e93ea2ae276f /chrome/browser | |
parent | 71ad9c6f69f69396f230e210a16ac5adeb6d180e (diff) | |
download | chromium_src-543432ee19b7d54e79a3726756eec8593f0b8022.zip chromium_src-543432ee19b7d54e79a3726756eec8593f0b8022.tar.gz chromium_src-543432ee19b7d54e79a3726756eec8593f0b8022.tar.bz2 |
Add policy to disable Developer-Tools.
BUG=49600
TEST=none
Review URL: http://codereview.chromium.org/3965003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63520 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/browser.cc | 21 | ||||
-rw-r--r-- | chrome/browser/browser.h | 6 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_manager.cc | 13 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_manager.h | 3 | ||||
-rw-r--r-- | chrome/browser/policy/configuration_policy_pref_store.cc | 4 | ||||
-rw-r--r-- | chrome/browser/policy/configuration_policy_store.h | 1 | ||||
-rw-r--r-- | chrome/browser/tab_contents/render_view_context_menu.cc | 15 |
7 files changed, 58 insertions, 5 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index aaded8a..85e63cc 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -233,6 +233,8 @@ Browser::Browser(Type type, Profile* profile) PrefService* local_state = g_browser_process->local_state(); if (local_state) printing_enabled_.Init(prefs::kPrintingEnabled, local_state, this); + dev_tools_disabled_.Init(prefs::kDevToolsDisabled, + profile_->GetPrefs(), this); InitCommandState(); BrowserList::AddBrowser(this); @@ -2044,6 +2046,7 @@ void Browser::RegisterUserPrefs(PrefService* prefs) { prefs->RegisterBooleanPref(prefs::kEnableTranslate, true); prefs->RegisterBooleanPref(prefs::kRemotingHasSetupCompleted, false); prefs->RegisterStringPref(prefs::kCloudPrintEmail, std::string()); + prefs->RegisterBooleanPref(prefs::kDevToolsDisabled, false); } // static @@ -3358,6 +3361,10 @@ void Browser::Observe(NotificationType type, } else { CreateInstantIfNecessary(); } + } else if (pref_name == prefs::kDevToolsDisabled) { + UpdateCommandsForDevTools(); + if (dev_tools_disabled_.GetValue()) + g_browser_process->devtools_manager()->CloseAllClientHosts(); } else { NOTREACHED(); } @@ -3490,9 +3497,7 @@ void Browser::InitCommandState() { // Show various bits of UI command_updater_.UpdateCommandEnabled(IDC_OPEN_FILE, true); command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, false); - command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS, true); - command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS_CONSOLE, true); - command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS_INSPECT, true); + UpdateCommandsForDevTools(); command_updater_.UpdateCommandEnabled(IDC_TASK_MANAGER, true); command_updater_.UpdateCommandEnabled(IDC_SHOW_HISTORY, true); command_updater_.UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, @@ -3662,6 +3667,16 @@ void Browser::UpdateReloadStopState(bool is_loading, bool force) { command_updater_.UpdateCommandEnabled(IDC_STOP, is_loading); } +void Browser::UpdateCommandsForDevTools() { + bool dev_tools_enabled = !dev_tools_disabled_.GetValue(); + command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS, + dev_tools_enabled); + command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS_CONSOLE, + dev_tools_enabled); + command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS_INSPECT, + dev_tools_enabled); +} + /////////////////////////////////////////////////////////////////////////////// // Browser, UI update coalescing and handling (private): diff --git a/chrome/browser/browser.h b/chrome/browser/browser.h index a040498..f0e8783 100644 --- a/chrome/browser/browser.h +++ b/chrome/browser/browser.h @@ -823,6 +823,9 @@ class Browser : public TabHandlerDelegate, // Updates commands when the content's restrictions change. void UpdateCommandsForContentRestrictionState(); + // Updates commands for enabling developer tools. + void UpdateCommandsForDevTools(); + // Updates the printing command state. void UpdatePrintingState(int content_restrictions); @@ -1093,6 +1096,9 @@ class Browser : public TabHandlerDelegate, // Keep track of the printing enabled pref. BooleanPrefMember printing_enabled_; + // Keep track of the development tools disabled pref. + BooleanPrefMember dev_tools_disabled_; + // Keep track of when instant enabled changes. BooleanPrefMember instant_enabled_; diff --git a/chrome/browser/debugger/devtools_manager.cc b/chrome/browser/debugger/devtools_manager.cc index e141baf..3015bb0 100644 --- a/chrome/browser/debugger/devtools_manager.cc +++ b/chrome/browser/debugger/devtools_manager.cc @@ -415,3 +415,16 @@ void DevToolsManager::UnbindClientHost(RenderViewHost* inspected_rvh, // We've disconnected from the last renderer -> revoke cookie permissions. ChildProcessSecurityPolicy::GetInstance()->RevokeReadRawCookies(process_id); } + +void DevToolsManager::CloseAllClientHosts() { + std::vector<RenderViewHost*> rhvs; + for (InspectedRvhToClientHostMap::iterator it = + inspected_rvh_to_client_host_.begin(); + it != inspected_rvh_to_client_host_.end(); ++it) { + rhvs.push_back(it->first); + } + for (std::vector<RenderViewHost*>::iterator it = rhvs.begin(); + it != rhvs.end(); ++it) { + UnregisterDevToolsClientHostFor(*it); + } +} diff --git a/chrome/browser/debugger/devtools_manager.h b/chrome/browser/debugger/devtools_manager.h index 2012d36..db63782 100644 --- a/chrome/browser/debugger/devtools_manager.h +++ b/chrome/browser/debugger/devtools_manager.h @@ -85,6 +85,9 @@ class DevToolsManager : public DevToolsClientHost::CloseListener, void AttachClientHost(int client_host_cookie, RenderViewHost* to_rvh); + // Closes all open developer tools windows. + void CloseAllClientHosts(); + private: friend class base::RefCounted<DevToolsManager>; diff --git a/chrome/browser/policy/configuration_policy_pref_store.cc b/chrome/browser/policy/configuration_policy_pref_store.cc index c496348..74c4e51 100644 --- a/chrome/browser/policy/configuration_policy_pref_store.cc +++ b/chrome/browser/policy/configuration_policy_pref_store.cc @@ -131,6 +131,8 @@ const ConfigurationPolicyPrefStore::PolicyToPreferenceMapEntry prefs::kWebKitJavascriptEnabled }, { Value::TYPE_BOOLEAN, kPolicySavingBrowserHistoryDisabled, prefs::kSavingBrowserHistoryDisabled }, + { Value::TYPE_BOOLEAN, kPolicyDeveloperToolsDisabled, + prefs::kDevToolsDisabled }, #if defined(OS_CHROMEOS) { Value::TYPE_BOOLEAN, kPolicyChromeOsLockOnIdleSuspend, @@ -233,6 +235,8 @@ ConfigurationPolicyPrefStore::GetChromePolicyValueMap() { Value::TYPE_BOOLEAN, key::kJavascriptEnabled }, { ConfigurationPolicyStore::kPolicySavingBrowserHistoryDisabled, Value::TYPE_BOOLEAN, key::kSavingBrowserHistoryDisabled }, + { ConfigurationPolicyStore::kPolicyDeveloperToolsDisabled, + Value::TYPE_BOOLEAN, key::kDeveloperToolsDisabled }, #if defined(OS_CHROMEOS) { ConfigurationPolicyStore::kPolicyChromeOsLockOnIdleSuspend, diff --git a/chrome/browser/policy/configuration_policy_store.h b/chrome/browser/policy/configuration_policy_store.h index fb21d0e..d4a64d2 100644 --- a/chrome/browser/policy/configuration_policy_store.h +++ b/chrome/browser/policy/configuration_policy_store.h @@ -56,6 +56,7 @@ class ConfigurationPolicyStore { kPolicyRenderInHostList, kPolicyJavascriptEnabled, kPolicySavingBrowserHistoryDisabled, + kPolicyDeveloperToolsDisabled, kPolicyChromeOsLockOnIdleSuspend, }; diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc index 68041ec..03d8223 100644 --- a/chrome/browser/tab_contents/render_view_context_menu.cc +++ b/chrome/browser/tab_contents/render_view_context_menu.cc @@ -64,7 +64,8 @@ const size_t RenderViewContextMenu::kMaxSelectionTextLength = 50; // static bool RenderViewContextMenu::IsDevToolsURL(const GURL& url) { - return url.SchemeIs(chrome::kChromeDevToolsScheme); + return url.SchemeIs(chrome::kChromeDevToolsScheme) && + url.host() == chrome::kChromeUIDevToolsHost; } // static @@ -1406,7 +1407,8 @@ bool RenderViewContextMenu::IsDevCommandEnabled(int id) const { bool debug_mode = true; #endif // Don't inspect new tab UI, etc. - if (active_entry->url().SchemeIs(chrome::kChromeUIScheme) && !debug_mode) + if (active_entry->url().SchemeIs(chrome::kChromeUIScheme) && !debug_mode && + active_entry->url().host() != chrome::kChromeUIDevToolsHost) return false; // Don't inspect about:network, about:memory, etc. @@ -1421,6 +1423,15 @@ bool RenderViewContextMenu::IsDevCommandEnabled(int id) const { if (!profile_->GetPrefs()->GetBoolean(prefs::kWebKitJavascriptEnabled) || command_line.HasSwitch(switches::kDisableJavaScript)) return false; + // Don't enable the web inspector on web inspector if there is no process + // per tab flag set. + if (IsDevToolsURL(active_entry->url()) && + !command_line.HasSwitch(switches::kProcessPerTab)) + return false; + // Don't enable the web inspector if the developer tools are disabled via + // the preference dev-tools-disabled. + if (profile_->GetPrefs()->GetBoolean(prefs::kDevToolsDisabled)) + return false; } return true; |