summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser.cc21
-rw-r--r--chrome/browser/browser.h6
-rw-r--r--chrome/browser/debugger/devtools_manager.cc13
-rw-r--r--chrome/browser/debugger/devtools_manager.h3
-rw-r--r--chrome/browser/policy/configuration_policy_pref_store.cc4
-rw-r--r--chrome/browser/policy/configuration_policy_store.h1
-rw-r--r--chrome/browser/tab_contents/render_view_context_menu.cc15
-rw-r--r--chrome/common/policy_constants.cc1
-rw-r--r--chrome/common/policy_constants.h1
-rw-r--r--chrome/common/pref_names.cc2
-rw-r--r--chrome/common/pref_names.h1
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[];