| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW}, | 48 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW}, |
| 49 {prefs::kManagedNotificationsBlockedForUrls, | 49 {prefs::kManagedNotificationsBlockedForUrls, |
| 50 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_BLOCK}, | 50 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_BLOCK}, |
| 51 {prefs::kManagedPluginsAllowedForUrls, CONTENT_SETTINGS_TYPE_PLUGINS, | 51 {prefs::kManagedPluginsAllowedForUrls, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 52 CONTENT_SETTING_ALLOW}, | 52 CONTENT_SETTING_ALLOW}, |
| 53 {prefs::kManagedPluginsBlockedForUrls, CONTENT_SETTINGS_TYPE_PLUGINS, | 53 {prefs::kManagedPluginsBlockedForUrls, CONTENT_SETTINGS_TYPE_PLUGINS, |
| 54 CONTENT_SETTING_BLOCK}, | 54 CONTENT_SETTING_BLOCK}, |
| 55 {prefs::kManagedPopupsAllowedForUrls, CONTENT_SETTINGS_TYPE_POPUPS, | 55 {prefs::kManagedPopupsAllowedForUrls, CONTENT_SETTINGS_TYPE_POPUPS, |
| 56 CONTENT_SETTING_ALLOW}, | 56 CONTENT_SETTING_ALLOW}, |
| 57 {prefs::kManagedPopupsBlockedForUrls, CONTENT_SETTINGS_TYPE_POPUPS, | 57 {prefs::kManagedPopupsBlockedForUrls, CONTENT_SETTINGS_TYPE_POPUPS, |
| 58 CONTENT_SETTING_BLOCK}, | 58 CONTENT_SETTING_BLOCK}}; |
| 59 {prefs::kManagedKeygenAllowedForUrls, | |
| 60 CONTENT_SETTINGS_TYPE_KEYGEN, CONTENT_SETTING_ALLOW}, | |
| 61 {prefs::kManagedKeygenBlockedForUrls, | |
| 62 CONTENT_SETTINGS_TYPE_KEYGEN, CONTENT_SETTING_BLOCK}}; | |
| 63 | 59 |
| 64 } // namespace | 60 } // namespace |
| 65 | 61 |
| 66 namespace content_settings { | 62 namespace content_settings { |
| 67 | 63 |
| 68 // The preferences used to manage the default policy value for | 64 // The preferences used to manage the default policy value for |
| 69 // ContentSettingsTypes. | 65 // ContentSettingsTypes. |
| 70 struct PolicyProvider::PrefsForManagedDefaultMapEntry { | 66 struct PolicyProvider::PrefsForManagedDefaultMapEntry { |
| 71 ContentSettingsType content_type; | 67 ContentSettingsType content_type; |
| 72 const char* pref_name; | 68 const char* pref_name; |
| 73 }; | 69 }; |
| 74 | 70 |
| 75 // static | 71 // static |
| 76 const PolicyProvider::PrefsForManagedDefaultMapEntry | 72 const PolicyProvider::PrefsForManagedDefaultMapEntry |
| 77 PolicyProvider::kPrefsForManagedDefault[] = { | 73 PolicyProvider::kPrefsForManagedDefault[] = { |
| 78 {CONTENT_SETTINGS_TYPE_COOKIES, prefs::kManagedDefaultCookiesSetting}, | 74 {CONTENT_SETTINGS_TYPE_COOKIES, prefs::kManagedDefaultCookiesSetting}, |
| 79 {CONTENT_SETTINGS_TYPE_IMAGES, prefs::kManagedDefaultImagesSetting}, | 75 {CONTENT_SETTINGS_TYPE_IMAGES, prefs::kManagedDefaultImagesSetting}, |
| 80 {CONTENT_SETTINGS_TYPE_GEOLOCATION, | 76 {CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 81 prefs::kManagedDefaultGeolocationSetting}, | 77 prefs::kManagedDefaultGeolocationSetting}, |
| 82 {CONTENT_SETTINGS_TYPE_JAVASCRIPT, | 78 {CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
| 83 prefs::kManagedDefaultJavaScriptSetting}, | 79 prefs::kManagedDefaultJavaScriptSetting}, |
| 84 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, | 80 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
| 85 prefs::kManagedDefaultMediaStreamSetting}, | 81 prefs::kManagedDefaultMediaStreamSetting}, |
| 86 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, | 82 {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
| 87 prefs::kManagedDefaultMediaStreamSetting}, | 83 prefs::kManagedDefaultMediaStreamSetting}, |
| 88 {CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 84 {CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 89 prefs::kManagedDefaultNotificationsSetting}, | 85 prefs::kManagedDefaultNotificationsSetting}, |
| 90 {CONTENT_SETTINGS_TYPE_PLUGINS, prefs::kManagedDefaultPluginsSetting}, | 86 {CONTENT_SETTINGS_TYPE_PLUGINS, prefs::kManagedDefaultPluginsSetting}, |
| 91 {CONTENT_SETTINGS_TYPE_POPUPS, prefs::kManagedDefaultPopupsSetting}, | 87 {CONTENT_SETTINGS_TYPE_POPUPS, prefs::kManagedDefaultPopupsSetting}, |
| 92 {CONTENT_SETTINGS_TYPE_KEYGEN, prefs::kManagedDefaultKeygenSetting}, | |
| 93 {CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD, | 88 {CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD, |
| 94 prefs::kManagedDefaultWebBluetoothGuardSetting}, | 89 prefs::kManagedDefaultWebBluetoothGuardSetting}, |
| 95 }; | 90 }; |
| 96 | 91 |
| 97 // static | 92 // static |
| 98 void PolicyProvider::RegisterProfilePrefs( | 93 void PolicyProvider::RegisterProfilePrefs( |
| 99 user_prefs::PrefRegistrySyncable* registry) { | 94 user_prefs::PrefRegistrySyncable* registry) { |
| 100 registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls); | 95 registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls); |
| 101 registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls); | 96 registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls); |
| 102 registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls); | 97 registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls); |
| 103 registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls); | 98 registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls); |
| 104 registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls); | 99 registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls); |
| 105 registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls); | 100 registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls); |
| 106 registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls); | 101 registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls); |
| 107 registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls); | 102 registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls); |
| 108 registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls); | 103 registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls); |
| 109 registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls); | 104 registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls); |
| 110 registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls); | 105 registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls); |
| 111 registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls); | 106 registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls); |
| 112 registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls); | 107 registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls); |
| 113 registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls); | 108 registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls); |
| 114 registry->RegisterListPref(prefs::kManagedKeygenAllowedForUrls); | |
| 115 registry->RegisterListPref(prefs::kManagedKeygenBlockedForUrls); | |
| 116 // Preferences for default content setting policies. If a policy is not set of | 109 // Preferences for default content setting policies. If a policy is not set of |
| 117 // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. | 110 // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. |
| 118 registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, | 111 registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, |
| 119 CONTENT_SETTING_DEFAULT); | 112 CONTENT_SETTING_DEFAULT); |
| 120 registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, | 113 registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, |
| 121 CONTENT_SETTING_DEFAULT); | 114 CONTENT_SETTING_DEFAULT); |
| 122 registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, | 115 registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, |
| 123 CONTENT_SETTING_DEFAULT); | 116 CONTENT_SETTING_DEFAULT); |
| 124 registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, | 117 registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, |
| 125 CONTENT_SETTING_DEFAULT); | 118 CONTENT_SETTING_DEFAULT); |
| 126 registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, | 119 registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, |
| 127 CONTENT_SETTING_DEFAULT); | 120 CONTENT_SETTING_DEFAULT); |
| 128 registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, | 121 registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, |
| 129 CONTENT_SETTING_DEFAULT); | 122 CONTENT_SETTING_DEFAULT); |
| 130 registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, | 123 registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, |
| 131 CONTENT_SETTING_DEFAULT); | 124 CONTENT_SETTING_DEFAULT); |
| 132 registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, | 125 registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, |
| 133 CONTENT_SETTING_DEFAULT); | 126 CONTENT_SETTING_DEFAULT); |
| 134 registry->RegisterIntegerPref(prefs::kManagedDefaultKeygenSetting, | |
| 135 CONTENT_SETTING_DEFAULT); | |
| 136 registry->RegisterIntegerPref(prefs::kManagedDefaultWebBluetoothGuardSetting, | 127 registry->RegisterIntegerPref(prefs::kManagedDefaultWebBluetoothGuardSetting, |
| 137 CONTENT_SETTING_DEFAULT); | 128 CONTENT_SETTING_DEFAULT); |
| 138 } | 129 } |
| 139 | 130 |
| 140 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { | 131 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { |
| 141 ReadManagedDefaultSettings(); | 132 ReadManagedDefaultSettings(); |
| 142 ReadManagedContentSettings(false); | 133 ReadManagedContentSettings(false); |
| 143 | 134 |
| 144 pref_change_registrar_.Init(prefs_); | 135 pref_change_registrar_.Init(prefs_); |
| 145 PrefChangeRegistrar::NamedChangeCallback callback = | 136 PrefChangeRegistrar::NamedChangeCallback callback = |
| 146 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); | 137 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); |
| 147 pref_change_registrar_.Add( | 138 pref_change_registrar_.Add( |
| 148 prefs::kManagedAutoSelectCertificateForUrls, callback); | 139 prefs::kManagedAutoSelectCertificateForUrls, callback); |
| 149 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); | 140 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); |
| 150 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); | 141 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); |
| 151 pref_change_registrar_.Add( | 142 pref_change_registrar_.Add( |
| 152 prefs::kManagedCookiesSessionOnlyForUrls, callback); | 143 prefs::kManagedCookiesSessionOnlyForUrls, callback); |
| 153 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); | 144 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); |
| 154 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); | 145 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); |
| 155 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); | 146 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); |
| 156 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); | 147 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); |
| 157 pref_change_registrar_.Add( | 148 pref_change_registrar_.Add( |
| 158 prefs::kManagedNotificationsAllowedForUrls, callback); | 149 prefs::kManagedNotificationsAllowedForUrls, callback); |
| 159 pref_change_registrar_.Add( | 150 pref_change_registrar_.Add( |
| 160 prefs::kManagedNotificationsBlockedForUrls, callback); | 151 prefs::kManagedNotificationsBlockedForUrls, callback); |
| 161 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); | 152 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); |
| 162 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); | 153 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); |
| 163 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); | 154 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); |
| 164 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); | 155 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); |
| 165 pref_change_registrar_.Add(prefs::kManagedKeygenAllowedForUrls, callback); | |
| 166 pref_change_registrar_.Add(prefs::kManagedKeygenBlockedForUrls, callback); | |
| 167 // The following preferences are only used to indicate if a default content | 156 // The following preferences are only used to indicate if a default content |
| 168 // setting is managed and to hold the managed default setting value. If the | 157 // setting is managed and to hold the managed default setting value. If the |
| 169 // value for any of the following preferences is set then the corresponding | 158 // value for any of the following preferences is set then the corresponding |
| 170 // default content setting is managed. These preferences exist in parallel to | 159 // default content setting is managed. These preferences exist in parallel to |
| 171 // the preference default content settings. If a default content settings type | 160 // the preference default content settings. If a default content settings type |
| 172 // is managed any user defined exceptions (patterns) for this type are | 161 // is managed any user defined exceptions (patterns) for this type are |
| 173 // ignored. | 162 // ignored. |
| 174 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); | 163 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); |
| 175 pref_change_registrar_.Add( | 164 pref_change_registrar_.Add( |
| 176 prefs::kManagedDefaultGeolocationSetting, callback); | 165 prefs::kManagedDefaultGeolocationSetting, callback); |
| 177 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); | 166 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); |
| 178 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); | 167 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); |
| 179 pref_change_registrar_.Add( | 168 pref_change_registrar_.Add( |
| 180 prefs::kManagedDefaultNotificationsSetting, callback); | 169 prefs::kManagedDefaultNotificationsSetting, callback); |
| 181 pref_change_registrar_.Add( | 170 pref_change_registrar_.Add( |
| 182 prefs::kManagedDefaultMediaStreamSetting, callback); | 171 prefs::kManagedDefaultMediaStreamSetting, callback); |
| 183 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); | 172 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); |
| 184 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); | 173 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); |
| 185 pref_change_registrar_.Add(prefs::kManagedDefaultKeygenSetting, callback); | |
| 186 pref_change_registrar_.Add(prefs::kManagedDefaultWebBluetoothGuardSetting, | 174 pref_change_registrar_.Add(prefs::kManagedDefaultWebBluetoothGuardSetting, |
| 187 callback); | 175 callback); |
| 188 } | 176 } |
| 189 | 177 |
| 190 PolicyProvider::~PolicyProvider() { | 178 PolicyProvider::~PolicyProvider() { |
| 191 DCHECK(!prefs_); | 179 DCHECK(!prefs_); |
| 192 } | 180 } |
| 193 | 181 |
| 194 std::unique_ptr<RuleIterator> PolicyProvider::GetRuleIterator( | 182 std::unique_ptr<RuleIterator> PolicyProvider::GetRuleIterator( |
| 195 ContentSettingsType content_type, | 183 ContentSettingsType content_type, |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 name == prefs::kManagedCookiesSessionOnlyForUrls || | 409 name == prefs::kManagedCookiesSessionOnlyForUrls || |
| 422 name == prefs::kManagedImagesAllowedForUrls || | 410 name == prefs::kManagedImagesAllowedForUrls || |
| 423 name == prefs::kManagedImagesBlockedForUrls || | 411 name == prefs::kManagedImagesBlockedForUrls || |
| 424 name == prefs::kManagedJavaScriptAllowedForUrls || | 412 name == prefs::kManagedJavaScriptAllowedForUrls || |
| 425 name == prefs::kManagedJavaScriptBlockedForUrls || | 413 name == prefs::kManagedJavaScriptBlockedForUrls || |
| 426 name == prefs::kManagedNotificationsAllowedForUrls || | 414 name == prefs::kManagedNotificationsAllowedForUrls || |
| 427 name == prefs::kManagedNotificationsBlockedForUrls || | 415 name == prefs::kManagedNotificationsBlockedForUrls || |
| 428 name == prefs::kManagedPluginsAllowedForUrls || | 416 name == prefs::kManagedPluginsAllowedForUrls || |
| 429 name == prefs::kManagedPluginsBlockedForUrls || | 417 name == prefs::kManagedPluginsBlockedForUrls || |
| 430 name == prefs::kManagedPopupsAllowedForUrls || | 418 name == prefs::kManagedPopupsAllowedForUrls || |
| 431 name == prefs::kManagedPopupsBlockedForUrls || | 419 name == prefs::kManagedPopupsBlockedForUrls) { |
| 432 name == prefs::kManagedKeygenAllowedForUrls || | |
| 433 name == prefs::kManagedKeygenBlockedForUrls) { | |
| 434 ReadManagedContentSettings(true); | 420 ReadManagedContentSettings(true); |
| 435 ReadManagedDefaultSettings(); | 421 ReadManagedDefaultSettings(); |
| 436 } | 422 } |
| 437 | 423 |
| 438 NotifyObservers(ContentSettingsPattern(), | 424 NotifyObservers(ContentSettingsPattern(), |
| 439 ContentSettingsPattern(), | 425 ContentSettingsPattern(), |
| 440 CONTENT_SETTINGS_TYPE_DEFAULT, | 426 CONTENT_SETTINGS_TYPE_DEFAULT, |
| 441 std::string()); | 427 std::string()); |
| 442 } | 428 } |
| 443 | 429 |
| 444 } // namespace content_settings | 430 } // namespace content_settings |
| OLD | NEW |