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 |