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 "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/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 prefs->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, | 167 prefs->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, |
168 CONTENT_SETTING_DEFAULT, | 168 CONTENT_SETTING_DEFAULT, |
169 PrefService::UNSYNCABLE_PREF); | 169 PrefService::UNSYNCABLE_PREF); |
170 } | 170 } |
171 | 171 |
172 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { | 172 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { |
173 ReadManagedDefaultSettings(); | 173 ReadManagedDefaultSettings(); |
174 ReadManagedContentSettings(false); | 174 ReadManagedContentSettings(false); |
175 | 175 |
176 pref_change_registrar_.Init(prefs_); | 176 pref_change_registrar_.Init(prefs_); |
177 pref_change_registrar_.Add(prefs::kManagedAutoSelectCertificateForUrls, this); | 177 PrefChangeRegistrar::NamedChangeCallback callback = |
178 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, this); | 178 base::Bind(&PolicyProvider::OnPreferenceChanged, base::Unretained(this)); |
179 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, this); | 179 pref_change_registrar_.Add( |
180 pref_change_registrar_.Add(prefs::kManagedCookiesSessionOnlyForUrls, this); | 180 prefs::kManagedAutoSelectCertificateForUrls, callback); |
181 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, this); | 181 pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, callback); |
182 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, this); | 182 pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, callback); |
183 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, this); | 183 pref_change_registrar_.Add( |
184 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, this); | 184 prefs::kManagedCookiesSessionOnlyForUrls, callback); |
185 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, this); | 185 pref_change_registrar_.Add(prefs::kManagedImagesBlockedForUrls, callback); |
186 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, this); | 186 pref_change_registrar_.Add(prefs::kManagedImagesAllowedForUrls, callback); |
187 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, this); | 187 pref_change_registrar_.Add(prefs::kManagedJavaScriptBlockedForUrls, callback); |
188 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, this); | 188 pref_change_registrar_.Add(prefs::kManagedJavaScriptAllowedForUrls, callback); |
189 pref_change_registrar_.Add(prefs::kManagedNotificationsAllowedForUrls, this); | 189 pref_change_registrar_.Add(prefs::kManagedPluginsBlockedForUrls, callback); |
190 pref_change_registrar_.Add(prefs::kManagedNotificationsBlockedForUrls, this); | 190 pref_change_registrar_.Add(prefs::kManagedPluginsAllowedForUrls, callback); |
| 191 pref_change_registrar_.Add(prefs::kManagedPopupsBlockedForUrls, callback); |
| 192 pref_change_registrar_.Add(prefs::kManagedPopupsAllowedForUrls, callback); |
| 193 pref_change_registrar_.Add( |
| 194 prefs::kManagedNotificationsAllowedForUrls, callback); |
| 195 pref_change_registrar_.Add( |
| 196 prefs::kManagedNotificationsBlockedForUrls, callback); |
191 // The following preferences are only used to indicate if a | 197 // The following preferences are only used to indicate if a |
192 // default content setting is managed and to hold the managed default setting | 198 // default content setting is managed and to hold the managed default setting |
193 // value. If the value for any of the following perferences is set then the | 199 // value. If the value for any of the following perferences is set then the |
194 // corresponding default content setting is managed. These preferences exist | 200 // corresponding default content setting is managed. These preferences exist |
195 // in parallel to the preference default content settings. If a | 201 // in parallel to the preference default content settings. If a |
196 // default content settings type is managed any user defined excpetions | 202 // default content settings type is managed any user defined excpetions |
197 // (patterns) for this type are ignored. | 203 // (patterns) for this type are ignored. |
198 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, this); | 204 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, callback); |
199 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, this); | 205 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, callback); |
200 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, this); | 206 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, callback); |
201 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, this); | 207 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, callback); |
202 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, this); | 208 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, callback); |
203 pref_change_registrar_.Add(prefs::kManagedDefaultGeolocationSetting, this); | 209 pref_change_registrar_.Add( |
204 pref_change_registrar_.Add(prefs::kManagedDefaultNotificationsSetting, this); | 210 prefs::kManagedDefaultGeolocationSetting, callback); |
205 pref_change_registrar_.Add(prefs::kManagedDefaultMediaStreamSetting, this); | 211 pref_change_registrar_.Add( |
| 212 prefs::kManagedDefaultNotificationsSetting, callback); |
| 213 pref_change_registrar_.Add( |
| 214 prefs::kManagedDefaultMediaStreamSetting, callback); |
206 } | 215 } |
207 | 216 |
208 PolicyProvider::~PolicyProvider() { | 217 PolicyProvider::~PolicyProvider() { |
209 DCHECK(!prefs_); | 218 DCHECK(!prefs_); |
210 } | 219 } |
211 | 220 |
212 RuleIterator* PolicyProvider::GetRuleIterator( | 221 RuleIterator* PolicyProvider::GetRuleIterator( |
213 ContentSettingsType content_type, | 222 ContentSettingsType content_type, |
214 const ResourceIdentifier& resource_identifier, | 223 const ResourceIdentifier& resource_identifier, |
215 bool incognito) const { | 224 bool incognito) const { |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 | 424 |
416 void PolicyProvider::ShutdownOnUIThread() { | 425 void PolicyProvider::ShutdownOnUIThread() { |
417 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 426 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
418 RemoveAllObservers(); | 427 RemoveAllObservers(); |
419 if (!prefs_) | 428 if (!prefs_) |
420 return; | 429 return; |
421 pref_change_registrar_.RemoveAll(); | 430 pref_change_registrar_.RemoveAll(); |
422 prefs_ = NULL; | 431 prefs_ = NULL; |
423 } | 432 } |
424 | 433 |
425 void PolicyProvider::OnPreferenceChanged(PrefServiceBase* service, | 434 void PolicyProvider::OnPreferenceChanged(const std::string& name) { |
426 const std::string& name) { | |
427 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 435 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
428 DCHECK_EQ(prefs_, service); | |
429 | 436 |
430 if (name == prefs::kManagedDefaultCookiesSetting) { | 437 if (name == prefs::kManagedDefaultCookiesSetting) { |
431 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES); | 438 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES); |
432 } else if (name == prefs::kManagedDefaultImagesSetting) { | 439 } else if (name == prefs::kManagedDefaultImagesSetting) { |
433 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_IMAGES); | 440 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_IMAGES); |
434 } else if (name == prefs::kManagedDefaultJavaScriptSetting) { | 441 } else if (name == prefs::kManagedDefaultJavaScriptSetting) { |
435 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT); | 442 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT); |
436 } else if (name == prefs::kManagedDefaultPluginsSetting) { | 443 } else if (name == prefs::kManagedDefaultPluginsSetting) { |
437 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_PLUGINS); | 444 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_PLUGINS); |
438 } else if (name == prefs::kManagedDefaultPopupsSetting) { | 445 } else if (name == prefs::kManagedDefaultPopupsSetting) { |
(...skipping 22 matching lines...) Expand all Loading... |
461 ReadManagedDefaultSettings(); | 468 ReadManagedDefaultSettings(); |
462 } | 469 } |
463 | 470 |
464 NotifyObservers(ContentSettingsPattern(), | 471 NotifyObservers(ContentSettingsPattern(), |
465 ContentSettingsPattern(), | 472 ContentSettingsPattern(), |
466 CONTENT_SETTINGS_TYPE_DEFAULT, | 473 CONTENT_SETTINGS_TYPE_DEFAULT, |
467 std::string()); | 474 std::string()); |
468 } | 475 } |
469 | 476 |
470 } // namespace content_settings | 477 } // namespace content_settings |
OLD | NEW |