diff options
-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 | ||||
-rw-r--r-- | chrome/common/policy_constants.cc | 1 | ||||
-rw-r--r-- | chrome/common/policy_constants.h | 1 | ||||
-rw-r--r-- | chrome/common/pref_names.cc | 2 | ||||
-rw-r--r-- | chrome/common/pref_names.h | 1 |
11 files changed, 63 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; diff --git a/chrome/common/policy_constants.cc b/chrome/common/policy_constants.cc index ffe93b4..5d141d9 100644 --- a/chrome/common/policy_constants.cc +++ b/chrome/common/policy_constants.cc @@ -60,6 +60,7 @@ const char kChromeFrameRendererSettings[] = "ChromeFrameRendererSettings"; const char kRenderInChromeFrameList[] = "RenderInChromeFrameList"; const char kRenderInHostList[] = "RenderInHostList"; const char kChromeFrameContentTypes[] = "ChromeFrameContentTypes"; +const char kDeveloperToolsDisabled[] = "DeveloperToolsDisabled"; #if defined(OS_CHROMEOS) // ChromeOS policy constants diff --git a/chrome/common/policy_constants.h b/chrome/common/policy_constants.h index cebf36b..93daa21 100644 --- a/chrome/common/policy_constants.h +++ b/chrome/common/policy_constants.h @@ -51,6 +51,7 @@ extern const char kShowHomeButton[]; extern const char kPrintingEnabled[]; extern const char kJavascriptEnabled[]; extern const char kSavingBrowserHistoryDisabled[]; +extern const char kDeveloperToolsDisabled[]; // Chrome Frame specific policy constants extern const char kChromeFrameRendererSettings[]; diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index a26a4d8..5657449 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -942,6 +942,8 @@ const char kNTPPrefVersion[] = "ntp.pref_version"; const char kNTPCustomLogoStart[] = "ntp.alt_logo_start"; const char kNTPCustomLogoEnd[] = "ntp.alt_logo_end"; +const char kDevToolsDisabled[] = "devtools.disabled"; + // A boolean specifying whether dev tools window should be opened docked. const char kDevToolsOpenDocked[] = "devtools.open_docked"; diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 52adbc36..8d4f9c1 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -341,6 +341,7 @@ extern const char kNTPPrefVersion[]; extern const char kNTPCustomLogoStart[]; extern const char kNTPCustomLogoEnd[]; +extern const char kDevToolsDisabled[]; extern const char kDevToolsOpenDocked[]; extern const char kDevToolsSplitLocation[]; extern const char kSyncSessions[]; |