| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/content_settings/core/browser/content_settings_policy_provi
der.h" | 5 #include "components/content_settings/core/browser/content_settings_policy_provi
der.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 ContentSetting setting; | 58 ContentSetting setting; |
| 59 }; | 59 }; |
| 60 | 60 |
| 61 const PrefsForManagedContentSettingsMapEntry | 61 const PrefsForManagedContentSettingsMapEntry |
| 62 kPrefsForManagedContentSettingsMap[] = { | 62 kPrefsForManagedContentSettingsMap[] = { |
| 63 { | 63 { |
| 64 prefs::kManagedCookiesAllowedForUrls, | 64 prefs::kManagedCookiesAllowedForUrls, |
| 65 CONTENT_SETTINGS_TYPE_COOKIES, | 65 CONTENT_SETTINGS_TYPE_COOKIES, |
| 66 CONTENT_SETTING_ALLOW | 66 CONTENT_SETTING_ALLOW |
| 67 }, { | 67 }, { |
| 68 prefs::kManagedCookiesBlockedForUrls, |
| 69 CONTENT_SETTINGS_TYPE_COOKIES, |
| 70 CONTENT_SETTING_BLOCK |
| 71 }, { |
| 68 prefs::kManagedCookiesSessionOnlyForUrls, | 72 prefs::kManagedCookiesSessionOnlyForUrls, |
| 69 CONTENT_SETTINGS_TYPE_COOKIES, | 73 CONTENT_SETTINGS_TYPE_COOKIES, |
| 70 CONTENT_SETTING_SESSION_ONLY | 74 CONTENT_SETTING_SESSION_ONLY |
| 71 }, { | 75 }, { |
| 72 prefs::kManagedCookiesBlockedForUrls, | |
| 73 CONTENT_SETTINGS_TYPE_COOKIES, | |
| 74 CONTENT_SETTING_BLOCK | |
| 75 }, { | |
| 76 prefs::kManagedImagesAllowedForUrls, | 76 prefs::kManagedImagesAllowedForUrls, |
| 77 CONTENT_SETTINGS_TYPE_IMAGES, | 77 CONTENT_SETTINGS_TYPE_IMAGES, |
| 78 CONTENT_SETTING_ALLOW | 78 CONTENT_SETTING_ALLOW |
| 79 }, { | 79 }, { |
| 80 prefs::kManagedImagesBlockedForUrls, | 80 prefs::kManagedImagesBlockedForUrls, |
| 81 CONTENT_SETTINGS_TYPE_IMAGES, | 81 CONTENT_SETTINGS_TYPE_IMAGES, |
| 82 CONTENT_SETTING_BLOCK | 82 CONTENT_SETTING_BLOCK |
| 83 }, { | 83 }, { |
| 84 prefs::kManagedJavaScriptAllowedForUrls, | 84 prefs::kManagedJavaScriptAllowedForUrls, |
| 85 CONTENT_SETTINGS_TYPE_JAVASCRIPT, | 85 CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
| 86 CONTENT_SETTING_ALLOW | 86 CONTENT_SETTING_ALLOW |
| 87 }, { | 87 }, { |
| 88 prefs::kManagedJavaScriptBlockedForUrls, | 88 prefs::kManagedJavaScriptBlockedForUrls, |
| 89 CONTENT_SETTINGS_TYPE_JAVASCRIPT, | 89 CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
| 90 CONTENT_SETTING_BLOCK | 90 CONTENT_SETTING_BLOCK |
| 91 }, { | 91 }, { |
| 92 prefs::kManagedNotificationsAllowedForUrls, |
| 93 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 94 CONTENT_SETTING_ALLOW |
| 95 }, { |
| 96 prefs::kManagedNotificationsBlockedForUrls, |
| 97 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 98 CONTENT_SETTING_BLOCK |
| 99 }, { |
| 92 prefs::kManagedPluginsAllowedForUrls, | 100 prefs::kManagedPluginsAllowedForUrls, |
| 93 CONTENT_SETTINGS_TYPE_PLUGINS, | 101 CONTENT_SETTINGS_TYPE_PLUGINS, |
| 94 CONTENT_SETTING_ALLOW | 102 CONTENT_SETTING_ALLOW |
| 95 }, { | 103 }, { |
| 96 prefs::kManagedPluginsBlockedForUrls, | 104 prefs::kManagedPluginsBlockedForUrls, |
| 97 CONTENT_SETTINGS_TYPE_PLUGINS, | 105 CONTENT_SETTINGS_TYPE_PLUGINS, |
| 98 CONTENT_SETTING_BLOCK | 106 CONTENT_SETTING_BLOCK |
| 99 }, { | 107 }, { |
| 100 prefs::kManagedPopupsAllowedForUrls, | 108 prefs::kManagedPopupsAllowedForUrls, |
| 101 CONTENT_SETTINGS_TYPE_POPUPS, | 109 CONTENT_SETTINGS_TYPE_POPUPS, |
| 102 CONTENT_SETTING_ALLOW | 110 CONTENT_SETTING_ALLOW |
| 103 }, { | 111 }, { |
| 104 prefs::kManagedPopupsBlockedForUrls, | 112 prefs::kManagedPopupsBlockedForUrls, |
| 105 CONTENT_SETTINGS_TYPE_POPUPS, | 113 CONTENT_SETTINGS_TYPE_POPUPS, |
| 106 CONTENT_SETTING_BLOCK | 114 CONTENT_SETTING_BLOCK |
| 107 }, { | |
| 108 prefs::kManagedNotificationsAllowedForUrls, | |
| 109 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
| 110 CONTENT_SETTING_ALLOW | |
| 111 }, { | |
| 112 prefs::kManagedNotificationsBlockedForUrls, | |
| 113 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
| 114 CONTENT_SETTING_BLOCK | |
| 115 } | 115 } |
| 116 }; | 116 }; |
| 117 | 117 |
| 118 } // namespace | 118 } // namespace |
| 119 | 119 |
| 120 namespace content_settings { | 120 namespace content_settings { |
| 121 | 121 |
| 122 // static | 122 // static |
| 123 void PolicyProvider::RegisterProfilePrefs( | 123 void PolicyProvider::RegisterProfilePrefs( |
| 124 user_prefs::PrefRegistrySyncable* registry) { | 124 user_prefs::PrefRegistrySyncable* registry) { |
| 125 registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls); | 125 registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls); |
| 126 registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls); | 126 registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls); |
| 127 registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls); | 127 registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls); |
| 128 registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls); | 128 registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls); |
| 129 registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls); | 129 registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls); |
| 130 registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls); | 130 registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls); |
| 131 registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls); | 131 registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls); |
| 132 registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls); | 132 registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls); |
| 133 registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls); |
| 134 registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls); |
| 133 registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls); | 135 registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls); |
| 134 registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls); | 136 registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls); |
| 135 registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls); | 137 registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls); |
| 136 registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls); | 138 registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls); |
| 137 registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls); | |
| 138 registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls); | |
| 139 // Preferences for default content setting policies. If a policy is not set of | 139 // Preferences for default content setting policies. If a policy is not set of |
| 140 // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. | 140 // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. |
| 141 registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, | 141 registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, |
| 142 CONTENT_SETTING_DEFAULT); | 142 CONTENT_SETTING_DEFAULT); |
| 143 registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, |
| 144 CONTENT_SETTING_DEFAULT); |
| 143 registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, | 145 registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, |
| 144 CONTENT_SETTING_DEFAULT); | 146 CONTENT_SETTING_DEFAULT); |
| 145 registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, | 147 registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, |
| 146 CONTENT_SETTING_DEFAULT); | 148 CONTENT_SETTING_DEFAULT); |
| 149 registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, |
| 150 CONTENT_SETTING_DEFAULT); |
| 151 registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, |
| 152 CONTENT_SETTING_DEFAULT); |
| 147 registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, | 153 registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, |
| 148 CONTENT_SETTING_DEFAULT); | 154 CONTENT_SETTING_DEFAULT); |
| 149 registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, | 155 registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, |
| 150 CONTENT_SETTING_DEFAULT); | 156 CONTENT_SETTING_DEFAULT); |
| 151 registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, | |
| 152 CONTENT_SETTING_DEFAULT); | |
| 153 registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, | |
| 154 CONTENT_SETTING_DEFAULT); | |
| 155 registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, | |
| 156 CONTENT_SETTING_DEFAULT); | |
| 157 } | 157 } |
| 158 | 158 |
| 159 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { | 159 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { |
| 160 ReadManagedDefaultSettings(); | 160 ReadManagedDefaultSettings(); |
| 161 ReadManagedContentSettings(false); | 161 ReadManagedContentSettings(false); |
| 162 | 162 |
| 163 pref_change_registrar_.Init(prefs_); | 163 pref_change_registrar_.Init(prefs_); |
| 164 PrefChangeRegistrar::NamedChangeCallback callback = | 164 PrefChangeRegistrar::NamedChangeCallback callback = |
| 165 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); | 165 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); |
| 166 pref_change_registrar_.Add( | 166 pref_change_registrar_.Add( |
| 167 prefs::kManagedAutoSelectCertificateForUrls, callback); | 167 prefs::kManagedAutoSelectCertificateForUrls, callback); |
| 168 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); |
| 168 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); | 169 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); |
| 169 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); | |
| 170 pref_change_registrar_.Add( | 170 pref_change_registrar_.Add( |
| 171 prefs::kManagedCookiesSessionOnlyForUrls, callback); | 171 prefs::kManagedCookiesSessionOnlyForUrls, callback); |
| 172 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); |
| 172 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); | 173 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); |
| 173 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); | 174 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); |
| 174 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); | 175 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); |
| 175 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); | 176 |
| 176 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); | |
| 177 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); | |
| 178 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); | |
| 179 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); | |
| 180 pref_change_registrar_.Add( | 177 pref_change_registrar_.Add( |
| 181 prefs::kManagedNotificationsAllowedForUrls, callback); | 178 prefs::kManagedNotificationsAllowedForUrls, callback); |
| 182 pref_change_registrar_.Add( | 179 pref_change_registrar_.Add( |
| 183 prefs::kManagedNotificationsBlockedForUrls, callback); | 180 prefs::kManagedNotificationsBlockedForUrls, callback); |
| 181 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); |
| 182 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); |
| 183 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); |
| 184 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); |
| 184 // The following preferences are only used to indicate if a default content | 185 // The following preferences are only used to indicate if a default content |
| 185 // setting is managed and to hold the managed default setting value. If the | 186 // setting is managed and to hold the managed default setting value. If the |
| 186 // value for any of the following preferences is set then the corresponding | 187 // value for any of the following preferences is set then the corresponding |
| 187 // default content setting is managed. These preferences exist in parallel to | 188 // default content setting is managed. These preferences exist in parallel to |
| 188 // the preference default content settings. If a default content settings type | 189 // the preference default content settings. If a default content settings type |
| 189 // is managed any user defined exceptions (patterns) for this type are | 190 // is managed any user defined exceptions (patterns) for this type are |
| 190 // ignored. | 191 // ignored. |
| 191 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); | 192 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); |
| 193 pref_change_registrar_.Add( |
| 194 prefs::kManagedDefaultGeolocationSetting, callback); |
| 192 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); | 195 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); |
| 193 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); | 196 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); |
| 194 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); | |
| 195 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); | |
| 196 pref_change_registrar_.Add( | |
| 197 prefs::kManagedDefaultGeolocationSetting, callback); | |
| 198 pref_change_registrar_.Add( | 197 pref_change_registrar_.Add( |
| 199 prefs::kManagedDefaultNotificationsSetting, callback); | 198 prefs::kManagedDefaultNotificationsSetting, callback); |
| 200 pref_change_registrar_.Add( | 199 pref_change_registrar_.Add( |
| 201 prefs::kManagedDefaultMediaStreamSetting, callback); | 200 prefs::kManagedDefaultMediaStreamSetting, callback); |
| 201 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); |
| 202 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); |
| 202 } | 203 } |
| 203 | 204 |
| 204 PolicyProvider::~PolicyProvider() { | 205 PolicyProvider::~PolicyProvider() { |
| 205 DCHECK(!prefs_); | 206 DCHECK(!prefs_); |
| 206 } | 207 } |
| 207 | 208 |
| 208 RuleIterator* PolicyProvider::GetRuleIterator( | 209 RuleIterator* PolicyProvider::GetRuleIterator( |
| 209 ContentSettingsType content_type, | 210 ContentSettingsType content_type, |
| 210 const ResourceIdentifier& resource_identifier, | 211 const ResourceIdentifier& resource_identifier, |
| 211 bool incognito) const { | 212 bool incognito) const { |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); | 438 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); |
| 438 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); | 439 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); |
| 439 } else if (name == prefs::kManagedAutoSelectCertificateForUrls || | 440 } else if (name == prefs::kManagedAutoSelectCertificateForUrls || |
| 440 name == prefs::kManagedCookiesAllowedForUrls || | 441 name == prefs::kManagedCookiesAllowedForUrls || |
| 441 name == prefs::kManagedCookiesBlockedForUrls || | 442 name == prefs::kManagedCookiesBlockedForUrls || |
| 442 name == prefs::kManagedCookiesSessionOnlyForUrls || | 443 name == prefs::kManagedCookiesSessionOnlyForUrls || |
| 443 name == prefs::kManagedImagesAllowedForUrls || | 444 name == prefs::kManagedImagesAllowedForUrls || |
| 444 name == prefs::kManagedImagesBlockedForUrls || | 445 name == prefs::kManagedImagesBlockedForUrls || |
| 445 name == prefs::kManagedJavaScriptAllowedForUrls || | 446 name == prefs::kManagedJavaScriptAllowedForUrls || |
| 446 name == prefs::kManagedJavaScriptBlockedForUrls || | 447 name == prefs::kManagedJavaScriptBlockedForUrls || |
| 448 name == prefs::kManagedNotificationsAllowedForUrls || |
| 449 name == prefs::kManagedNotificationsBlockedForUrls || |
| 447 name == prefs::kManagedPluginsAllowedForUrls || | 450 name == prefs::kManagedPluginsAllowedForUrls || |
| 448 name == prefs::kManagedPluginsBlockedForUrls || | 451 name == prefs::kManagedPluginsBlockedForUrls || |
| 449 name == prefs::kManagedPopupsAllowedForUrls || | 452 name == prefs::kManagedPopupsAllowedForUrls || |
| 450 name == prefs::kManagedPopupsBlockedForUrls || | 453 name == prefs::kManagedPopupsBlockedForUrls) { |
| 451 name == prefs::kManagedNotificationsAllowedForUrls || | |
| 452 name == prefs::kManagedNotificationsBlockedForUrls) { | |
| 453 ReadManagedContentSettings(true); | 454 ReadManagedContentSettings(true); |
| 454 ReadManagedDefaultSettings(); | 455 ReadManagedDefaultSettings(); |
| 455 } | 456 } |
| 456 | 457 |
| 457 NotifyObservers(ContentSettingsPattern(), | 458 NotifyObservers(ContentSettingsPattern(), |
| 458 ContentSettingsPattern(), | 459 ContentSettingsPattern(), |
| 459 CONTENT_SETTINGS_TYPE_DEFAULT, | 460 CONTENT_SETTINGS_TYPE_DEFAULT, |
| 460 std::string()); | 461 std::string()); |
| 461 } | 462 } |
| 462 | 463 |
| 463 } // namespace content_settings | 464 } // namespace content_settings |
| OLD | NEW |