OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/content_settings/content_settings_policy_provider.h" | 5 #include "chrome/browser/content_settings/content_settings_policy_provider.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 19 matching lines...) Expand all Loading... | |
30 | 30 |
31 // The preferences used to manage ContentSettingsTypes. | 31 // The preferences used to manage ContentSettingsTypes. |
32 const char* kPrefToManageType[CONTENT_SETTINGS_NUM_TYPES] = { | 32 const char* kPrefToManageType[CONTENT_SETTINGS_NUM_TYPES] = { |
33 prefs::kManagedDefaultCookiesSetting, | 33 prefs::kManagedDefaultCookiesSetting, |
34 prefs::kManagedDefaultImagesSetting, | 34 prefs::kManagedDefaultImagesSetting, |
35 prefs::kManagedDefaultJavaScriptSetting, | 35 prefs::kManagedDefaultJavaScriptSetting, |
36 prefs::kManagedDefaultPluginsSetting, | 36 prefs::kManagedDefaultPluginsSetting, |
37 prefs::kManagedDefaultPopupsSetting, | 37 prefs::kManagedDefaultPopupsSetting, |
38 prefs::kManagedDefaultGeolocationSetting, | 38 prefs::kManagedDefaultGeolocationSetting, |
39 NULL, // Not used for Notifications | 39 NULL, // Not used for Notifications |
40 prefs::kManagedDefaultAutoSubmitCertificateSetting, | |
40 }; | 41 }; |
41 | 42 |
42 struct PrefsForManagedContentSettingsMapEntry { | 43 struct PrefsForManagedContentSettingsMapEntry { |
43 const char* pref_name; | 44 const char* pref_name; |
44 ContentSettingsType content_type; | 45 ContentSettingsType content_type; |
45 ContentSetting setting; | 46 ContentSetting setting; |
46 }; | 47 }; |
47 | 48 |
48 const PrefsForManagedContentSettingsMapEntry | 49 const PrefsForManagedContentSettingsMapEntry |
49 kPrefsForManagedContentSettingsMap[] = { | 50 kPrefsForManagedContentSettingsMap[] = { |
50 { | 51 { |
52 prefs::kManagedAutoSubmitCertificateForUrls, | |
53 CONTENT_SETTINGS_TYPE_AUTO_SUBMIT_CERTIFICATE, | |
54 CONTENT_SETTING_ALLOW | |
55 }, { | |
51 prefs::kManagedCookiesAllowedForUrls, | 56 prefs::kManagedCookiesAllowedForUrls, |
52 CONTENT_SETTINGS_TYPE_COOKIES, | 57 CONTENT_SETTINGS_TYPE_COOKIES, |
53 CONTENT_SETTING_ALLOW | 58 CONTENT_SETTING_ALLOW |
54 }, { | 59 }, { |
55 prefs::kManagedCookiesSessionOnlyForUrls, | 60 prefs::kManagedCookiesSessionOnlyForUrls, |
56 CONTENT_SETTINGS_TYPE_COOKIES, | 61 CONTENT_SETTINGS_TYPE_COOKIES, |
57 CONTENT_SETTING_SESSION_ONLY | 62 CONTENT_SETTING_SESSION_ONLY |
58 }, { | 63 }, { |
59 prefs::kManagedCookiesBlockedForUrls, | 64 prefs::kManagedCookiesBlockedForUrls, |
60 CONTENT_SETTINGS_TYPE_COOKIES, | 65 CONTENT_SETTINGS_TYPE_COOKIES, |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
112 // corresponding default-content-setting is managed. These preferences exist | 117 // corresponding default-content-setting is managed. These preferences exist |
113 // in parallel to the preference default-content-settings. If a | 118 // in parallel to the preference default-content-settings. If a |
114 // default-content-settings-type is managed any user defined excpetions | 119 // default-content-settings-type is managed any user defined excpetions |
115 // (patterns) for this type are ignored. | 120 // (patterns) for this type are ignored. |
116 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, this); | 121 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, this); |
117 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, this); | 122 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, this); |
118 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, this); | 123 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, this); |
119 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, this); | 124 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, this); |
120 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, this); | 125 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, this); |
121 pref_change_registrar_.Add(prefs::kManagedDefaultGeolocationSetting, this); | 126 pref_change_registrar_.Add(prefs::kManagedDefaultGeolocationSetting, this); |
127 pref_change_registrar_.Add( | |
128 prefs::kManagedDefaultAutoSubmitCertificateSetting, this); | |
122 } | 129 } |
123 | 130 |
124 PolicyDefaultProvider::~PolicyDefaultProvider() { | 131 PolicyDefaultProvider::~PolicyDefaultProvider() { |
125 DCHECK(!prefs_); | 132 DCHECK(!prefs_); |
126 } | 133 } |
127 | 134 |
128 ContentSetting PolicyDefaultProvider::ProvideDefaultSetting( | 135 ContentSetting PolicyDefaultProvider::ProvideDefaultSetting( |
129 ContentSettingsType content_type) const { | 136 ContentSettingsType content_type) const { |
130 base::AutoLock auto_lock(lock_); | 137 base::AutoLock auto_lock(lock_); |
131 return managed_default_content_settings_.settings[content_type]; | 138 return managed_default_content_settings_.settings[content_type]; |
(...skipping 28 matching lines...) Expand all Loading... | |
160 } else if (*name == prefs::kManagedDefaultImagesSetting) { | 167 } else if (*name == prefs::kManagedDefaultImagesSetting) { |
161 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_IMAGES); | 168 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_IMAGES); |
162 } else if (*name == prefs::kManagedDefaultJavaScriptSetting) { | 169 } else if (*name == prefs::kManagedDefaultJavaScriptSetting) { |
163 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT); | 170 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT); |
164 } else if (*name == prefs::kManagedDefaultPluginsSetting) { | 171 } else if (*name == prefs::kManagedDefaultPluginsSetting) { |
165 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_PLUGINS); | 172 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_PLUGINS); |
166 } else if (*name == prefs::kManagedDefaultPopupsSetting) { | 173 } else if (*name == prefs::kManagedDefaultPopupsSetting) { |
167 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_POPUPS); | 174 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_POPUPS); |
168 } else if (*name == prefs::kManagedDefaultGeolocationSetting) { | 175 } else if (*name == prefs::kManagedDefaultGeolocationSetting) { |
169 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_GEOLOCATION); | 176 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
177 } else if (*name == prefs::kManagedDefaultAutoSubmitCertificateSetting) { | |
178 UpdateManagedDefaultSetting( | |
179 CONTENT_SETTINGS_TYPE_AUTO_SUBMIT_CERTIFICATE); | |
170 } else { | 180 } else { |
171 NOTREACHED() << "Unexpected preference observed"; | 181 NOTREACHED() << "Unexpected preference observed"; |
172 return; | 182 return; |
173 } | 183 } |
174 | 184 |
175 NotifyObservers(ContentSettingsPattern(), | 185 NotifyObservers(ContentSettingsPattern(), |
176 ContentSettingsPattern(), | 186 ContentSettingsPattern(), |
177 CONTENT_SETTINGS_TYPE_DEFAULT, | 187 CONTENT_SETTINGS_TYPE_DEFAULT, |
178 std::string()); | 188 std::string()); |
179 } else { | 189 } else { |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
228 PrefService::UNSYNCABLE_PREF); | 238 PrefService::UNSYNCABLE_PREF); |
229 prefs->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, | 239 prefs->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, |
230 CONTENT_SETTING_DEFAULT, | 240 CONTENT_SETTING_DEFAULT, |
231 PrefService::UNSYNCABLE_PREF); | 241 PrefService::UNSYNCABLE_PREF); |
232 prefs->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, | 242 prefs->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, |
233 CONTENT_SETTING_DEFAULT, | 243 CONTENT_SETTING_DEFAULT, |
234 PrefService::UNSYNCABLE_PREF); | 244 PrefService::UNSYNCABLE_PREF); |
235 prefs->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, | 245 prefs->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, |
236 CONTENT_SETTING_DEFAULT, | 246 CONTENT_SETTING_DEFAULT, |
237 PrefService::UNSYNCABLE_PREF); | 247 PrefService::UNSYNCABLE_PREF); |
248 prefs->RegisterIntegerPref(prefs::kManagedDefaultAutoSubmitCertificateSetting, | |
249 CONTENT_SETTING_BLOCK, | |
wtc
2011/08/11 18:33:55
It seems that the default should be CONTENT_SETTIN
markusheintz_
2011/08/15 19:09:04
Yes you are right. Initially I only used two value
| |
250 PrefService::UNSYNCABLE_PREF); | |
238 } | 251 } |
239 | 252 |
240 // //////////////////////////////////////////////////////////////////////////// | 253 // //////////////////////////////////////////////////////////////////////////// |
241 // PolicyProvider | 254 // PolicyProvider |
242 | 255 |
243 // static | 256 // static |
244 void PolicyProvider::RegisterUserPrefs(PrefService* prefs) { | 257 void PolicyProvider::RegisterUserPrefs(PrefService* prefs) { |
258 prefs->RegisterListPref(prefs::kManagedAutoSubmitCertificateForUrls, | |
259 PrefService::UNSYNCABLE_PREF); | |
245 prefs->RegisterListPref(prefs::kManagedCookiesAllowedForUrls, | 260 prefs->RegisterListPref(prefs::kManagedCookiesAllowedForUrls, |
246 PrefService::UNSYNCABLE_PREF); | 261 PrefService::UNSYNCABLE_PREF); |
247 prefs->RegisterListPref(prefs::kManagedCookiesBlockedForUrls, | 262 prefs->RegisterListPref(prefs::kManagedCookiesBlockedForUrls, |
248 PrefService::UNSYNCABLE_PREF); | 263 PrefService::UNSYNCABLE_PREF); |
249 prefs->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls, | 264 prefs->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls, |
250 PrefService::UNSYNCABLE_PREF); | 265 PrefService::UNSYNCABLE_PREF); |
251 prefs->RegisterListPref(prefs::kManagedImagesAllowedForUrls, | 266 prefs->RegisterListPref(prefs::kManagedImagesAllowedForUrls, |
252 PrefService::UNSYNCABLE_PREF); | 267 PrefService::UNSYNCABLE_PREF); |
253 prefs->RegisterListPref(prefs::kManagedImagesBlockedForUrls, | 268 prefs->RegisterListPref(prefs::kManagedImagesBlockedForUrls, |
254 PrefService::UNSYNCABLE_PREF); | 269 PrefService::UNSYNCABLE_PREF); |
(...skipping 11 matching lines...) Expand all Loading... | |
266 PrefService::UNSYNCABLE_PREF); | 281 PrefService::UNSYNCABLE_PREF); |
267 } | 282 } |
268 | 283 |
269 PolicyProvider::PolicyProvider(PrefService* prefs, | 284 PolicyProvider::PolicyProvider(PrefService* prefs, |
270 DefaultProviderInterface* default_provider) | 285 DefaultProviderInterface* default_provider) |
271 : prefs_(prefs), | 286 : prefs_(prefs), |
272 default_provider_(default_provider) { | 287 default_provider_(default_provider) { |
273 ReadManagedContentSettings(false); | 288 ReadManagedContentSettings(false); |
274 | 289 |
275 pref_change_registrar_.Init(prefs_); | 290 pref_change_registrar_.Init(prefs_); |
291 pref_change_registrar_.Add(prefs::kManagedAutoSubmitCertificateForUrls, this); | |
276 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, this); | 292 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, this); |
277 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, this); | 293 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, this); |
278 pref_change_registrar_.Add(prefs::kManagedCookiesSessionOnlyForUrls, this); | 294 pref_change_registrar_.Add(prefs::kManagedCookiesSessionOnlyForUrls, this); |
279 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, this); | 295 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, this); |
280 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, this); | 296 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, this); |
281 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, this); | 297 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, this); |
282 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, this); | 298 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, this); |
283 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, this); | 299 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, this); |
284 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, this); | 300 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, this); |
285 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, this); | 301 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, this); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
423 } | 439 } |
424 | 440 |
425 void PolicyProvider::Observe(int type, | 441 void PolicyProvider::Observe(int type, |
426 const NotificationSource& source, | 442 const NotificationSource& source, |
427 const NotificationDetails& details) { | 443 const NotificationDetails& details) { |
428 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 444 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
429 | 445 |
430 if (type == chrome::NOTIFICATION_PREF_CHANGED) { | 446 if (type == chrome::NOTIFICATION_PREF_CHANGED) { |
431 DCHECK_EQ(prefs_, Source<PrefService>(source).ptr()); | 447 DCHECK_EQ(prefs_, Source<PrefService>(source).ptr()); |
432 std::string* name = Details<std::string>(details).ptr(); | 448 std::string* name = Details<std::string>(details).ptr(); |
433 if (*name == prefs::kManagedCookiesAllowedForUrls || | 449 if (*name == prefs::kManagedAutoSubmitCertificateForUrls || |
450 *name == prefs::kManagedCookiesAllowedForUrls || | |
434 *name == prefs::kManagedCookiesBlockedForUrls || | 451 *name == prefs::kManagedCookiesBlockedForUrls || |
435 *name == prefs::kManagedCookiesSessionOnlyForUrls || | 452 *name == prefs::kManagedCookiesSessionOnlyForUrls || |
436 *name == prefs::kManagedImagesAllowedForUrls || | 453 *name == prefs::kManagedImagesAllowedForUrls || |
437 *name == prefs::kManagedImagesBlockedForUrls || | 454 *name == prefs::kManagedImagesBlockedForUrls || |
438 *name == prefs::kManagedJavaScriptAllowedForUrls || | 455 *name == prefs::kManagedJavaScriptAllowedForUrls || |
439 *name == prefs::kManagedJavaScriptBlockedForUrls || | 456 *name == prefs::kManagedJavaScriptBlockedForUrls || |
440 *name == prefs::kManagedPluginsAllowedForUrls || | 457 *name == prefs::kManagedPluginsAllowedForUrls || |
441 *name == prefs::kManagedPluginsBlockedForUrls || | 458 *name == prefs::kManagedPluginsBlockedForUrls || |
442 *name == prefs::kManagedPopupsAllowedForUrls || | 459 *name == prefs::kManagedPopupsAllowedForUrls || |
443 *name == prefs::kManagedPopupsBlockedForUrls) { | 460 *name == prefs::kManagedPopupsBlockedForUrls) { |
444 ReadManagedContentSettings(true); | 461 ReadManagedContentSettings(true); |
445 NotifyObservers(ContentSettingsPattern(), | 462 NotifyObservers(ContentSettingsPattern(), |
446 ContentSettingsPattern(), | 463 ContentSettingsPattern(), |
447 CONTENT_SETTINGS_TYPE_DEFAULT, | 464 CONTENT_SETTINGS_TYPE_DEFAULT, |
448 std::string()); | 465 std::string()); |
449 } | 466 } |
450 } else { | 467 } else { |
451 NOTREACHED() << "Unexpected notification"; | 468 NOTREACHED() << "Unexpected notification"; |
452 } | 469 } |
453 } | 470 } |
454 | 471 |
455 } // namespace content_settings | 472 } // namespace content_settings |
OLD | NEW |