Index: chrome/browser/policy/configuration_policy_pref_store.cc |
diff --git a/chrome/browser/policy/configuration_policy_pref_store.cc b/chrome/browser/policy/configuration_policy_pref_store.cc |
index 99a15aeadfacf6ff84d8462a7e56f8bea89f77da..ff913b3e587059a9dae9ca1ac2d262c641e94ca8 100644 |
--- a/chrome/browser/policy/configuration_policy_pref_store.cc |
+++ b/chrome/browser/policy/configuration_policy_pref_store.cc |
@@ -112,6 +112,10 @@ class ConfigurationPolicyPrefKeeper |
// the function takes ownership of |value|. |
bool ApplyIncognitoModePolicy(ConfigurationPolicyType policy, Value* value); |
+ // Processes a policy that can disable the bookmarks bar. It can also affect |
+ // other preferences. |
+ bool ApplyBookmarksPolicy(ConfigurationPolicyType policy, Value* value); |
+ |
// Make sure that the |path| if present in |prefs_|. If not, set it to |
// a blank string. |
void EnsureStringPrefExists(const std::string& path); |
@@ -283,15 +287,12 @@ const ConfigurationPolicyPrefKeeper::PolicyToPreferenceMapEntry |
{ Value::TYPE_BOOLEAN, kPolicyCloudPrintProxyEnabled, |
prefs::kCloudPrintProxyEnabled }, |
{ Value::TYPE_BOOLEAN, kPolicyTranslateEnabled, prefs::kEnableTranslate }, |
- { Value::TYPE_BOOLEAN, kPolicyBookmarkBarEnabled, prefs::kEnableBookmarkBar }, |
{ Value::TYPE_BOOLEAN, kPolicyAllowOutdatedPlugins, |
prefs::kPluginsAllowOutdated }, |
{ Value::TYPE_BOOLEAN, kPolicyAlwaysAuthorizePlugins, |
prefs::kPluginsAlwaysAuthorize }, |
{ Value::TYPE_BOOLEAN, kPolicyEditBookmarksEnabled, |
prefs::kEditBookmarksEnabled }, |
- { Value::TYPE_BOOLEAN, kPolicyAllowFileSelectionDialogs, |
- prefs::kAllowFileSelectionDialogs }, |
{ Value::TYPE_INTEGER, kPolicyMaxConnectionsPerProxy, |
prefs::kMaxConnectionsPerProxy }, |
@@ -361,31 +362,16 @@ void ConfigurationPolicyPrefKeeper::GetDifferingPrefPaths( |
void ConfigurationPolicyPrefKeeper::Apply(ConfigurationPolicyType policy, |
Value* value) { |
- if (ApplyProxyPolicy(policy, value)) |
- return; |
- |
- if (ApplySyncPolicy(policy, value)) |
- return; |
- |
- if (ApplyAutofillPolicy(policy, value)) |
- return; |
- |
- if (ApplyDownloadDirPolicy(policy, value)) |
- return; |
- |
- if (ApplyDiskCacheDirPolicy(policy, value)) |
- return; |
- |
- if (ApplyFileSelectionDialogsPolicy(policy, value)) |
- return; |
- |
- if (ApplyDefaultSearchPolicy(policy, value)) |
- return; |
- |
- if (ApplyIncognitoModePolicy(policy, value)) |
- return; |
- |
- if (ApplyPolicyFromMap(policy, value, kSimplePolicyMap, |
+ if (ApplyProxyPolicy(policy, value) || |
+ ApplySyncPolicy(policy, value) || |
+ ApplyAutofillPolicy(policy, value) || |
+ ApplyDownloadDirPolicy(policy, value) || |
+ ApplyDiskCacheDirPolicy(policy, value) || |
+ ApplyFileSelectionDialogsPolicy(policy, value) || |
+ ApplyDefaultSearchPolicy(policy, value) || |
+ ApplyIncognitoModePolicy(policy, value) || |
+ ApplyBookmarksPolicy(policy, value) || |
+ ApplyPolicyFromMap(policy, value, kSimplePolicyMap, |
arraysize(kSimplePolicyMap))) |
return; |
@@ -603,6 +589,21 @@ bool ConfigurationPolicyPrefKeeper::ApplyIncognitoModePolicy( |
return false; |
} |
+bool ConfigurationPolicyPrefKeeper::ApplyBookmarksPolicy( |
+ ConfigurationPolicyType policy, |
+ Value* value) { |
+ if (policy != kPolicyBookmarkBarEnabled) |
+ return false; |
+ DCHECK_EQ(Value::TYPE_BOOLEAN, value->GetType()); |
+ prefs_.SetValue(prefs::kEnableBookmarkBar, value); |
+ // kShowBookmarkBar is not managed directly by a policy, but when |
+ // kEnableBookmarkBar is managed, kShowBookmarkBar should be false so that |
+ // the bookmarks bar either is completely disabled or only shows on the NTP. |
+ // This also disables the checkbox for this preference in the prefs UI. |
+ prefs_.SetValue(prefs::kShowBookmarkBar, Value::CreateBooleanValue(false)); |
+ return true; |
+} |
+ |
void ConfigurationPolicyPrefKeeper::EnsureStringPrefExists( |
const std::string& path) { |
std::string value; |