| 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 17 matching lines...) Expand all Loading... |
| 28 prefs::kManagedDefaultCookiesSetting, | 28 prefs::kManagedDefaultCookiesSetting, |
| 29 prefs::kManagedDefaultImagesSetting, | 29 prefs::kManagedDefaultImagesSetting, |
| 30 prefs::kManagedDefaultJavaScriptSetting, | 30 prefs::kManagedDefaultJavaScriptSetting, |
| 31 prefs::kManagedDefaultPluginsSetting, | 31 prefs::kManagedDefaultPluginsSetting, |
| 32 prefs::kManagedDefaultPopupsSetting, | 32 prefs::kManagedDefaultPopupsSetting, |
| 33 prefs::kManagedDefaultGeolocationSetting, | 33 prefs::kManagedDefaultGeolocationSetting, |
| 34 prefs::kManagedDefaultNotificationsSetting, | 34 prefs::kManagedDefaultNotificationsSetting, |
| 35 NULL, // No policy for default value of content type intents | 35 NULL, // No policy for default value of content type intents |
| 36 NULL, // No policy for default value of content type auto-select-certificate | 36 NULL, // No policy for default value of content type auto-select-certificate |
| 37 NULL, // No policy for default value of fullscreen requests | 37 NULL, // No policy for default value of fullscreen requests |
| 38 prefs::kManagedDefaultMediaStreamSetting, |
| 38 }; | 39 }; |
| 39 | 40 |
| 40 struct PrefsForManagedContentSettingsMapEntry { | 41 struct PrefsForManagedContentSettingsMapEntry { |
| 41 const char* pref_name; | 42 const char* pref_name; |
| 42 ContentSettingsType content_type; | 43 ContentSettingsType content_type; |
| 43 ContentSetting setting; | 44 ContentSetting setting; |
| 44 }; | 45 }; |
| 45 | 46 |
| 46 const PrefsForManagedContentSettingsMapEntry | 47 const PrefsForManagedContentSettingsMapEntry |
| 47 kPrefsForManagedContentSettingsMap[] = { | 48 kPrefsForManagedContentSettingsMap[] = { |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 PrefService::UNSYNCABLE_PREF); | 151 PrefService::UNSYNCABLE_PREF); |
| 151 prefs->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, | 152 prefs->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, |
| 152 CONTENT_SETTING_DEFAULT, | 153 CONTENT_SETTING_DEFAULT, |
| 153 PrefService::UNSYNCABLE_PREF); | 154 PrefService::UNSYNCABLE_PREF); |
| 154 prefs->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, | 155 prefs->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, |
| 155 CONTENT_SETTING_DEFAULT, | 156 CONTENT_SETTING_DEFAULT, |
| 156 PrefService::UNSYNCABLE_PREF); | 157 PrefService::UNSYNCABLE_PREF); |
| 157 prefs->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, | 158 prefs->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, |
| 158 CONTENT_SETTING_DEFAULT, | 159 CONTENT_SETTING_DEFAULT, |
| 159 PrefService::UNSYNCABLE_PREF); | 160 PrefService::UNSYNCABLE_PREF); |
| 161 prefs->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, |
| 162 CONTENT_SETTING_DEFAULT, |
| 163 PrefService::UNSYNCABLE_PREF); |
| 160 } | 164 } |
| 161 | 165 |
| 162 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { | 166 PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { |
| 163 DCHECK_EQ(arraysize(kPrefToManageType), | 167 DCHECK_EQ(arraysize(kPrefToManageType), |
| 164 static_cast<size_t>(CONTENT_SETTINGS_NUM_TYPES)); | 168 static_cast<size_t>(CONTENT_SETTINGS_NUM_TYPES)); |
| 165 ReadManagedDefaultSettings(); | 169 ReadManagedDefaultSettings(); |
| 166 ReadManagedContentSettings(false); | 170 ReadManagedContentSettings(false); |
| 167 | 171 |
| 168 pref_change_registrar_.Init(prefs_); | 172 pref_change_registrar_.Init(prefs_); |
| 169 pref_change_registrar_.Add(prefs::kManagedAutoSelectCertificateForUrls, this); | 173 pref_change_registrar_.Add(prefs::kManagedAutoSelectCertificateForUrls, this); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 187 // in parallel to the preference default content settings. If a | 191 // in parallel to the preference default content settings. If a |
| 188 // default content settings type is managed any user defined excpetions | 192 // default content settings type is managed any user defined excpetions |
| 189 // (patterns) for this type are ignored. | 193 // (patterns) for this type are ignored. |
| 190 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, this); | 194 pref_change_registrar_.Add(prefs::kManagedDefaultCookiesSetting, this); |
| 191 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, this); | 195 pref_change_registrar_.Add(prefs::kManagedDefaultImagesSetting, this); |
| 192 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, this); | 196 pref_change_registrar_.Add(prefs::kManagedDefaultJavaScriptSetting, this); |
| 193 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, this); | 197 pref_change_registrar_.Add(prefs::kManagedDefaultPluginsSetting, this); |
| 194 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, this); | 198 pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, this); |
| 195 pref_change_registrar_.Add(prefs::kManagedDefaultGeolocationSetting, this); | 199 pref_change_registrar_.Add(prefs::kManagedDefaultGeolocationSetting, this); |
| 196 pref_change_registrar_.Add(prefs::kManagedDefaultNotificationsSetting, this); | 200 pref_change_registrar_.Add(prefs::kManagedDefaultNotificationsSetting, this); |
| 201 pref_change_registrar_.Add(prefs::kManagedDefaultMediaStreamSetting, this); |
| 197 } | 202 } |
| 198 | 203 |
| 199 PolicyProvider::~PolicyProvider() { | 204 PolicyProvider::~PolicyProvider() { |
| 200 DCHECK(!prefs_); | 205 DCHECK(!prefs_); |
| 201 } | 206 } |
| 202 | 207 |
| 203 RuleIterator* PolicyProvider::GetRuleIterator( | 208 RuleIterator* PolicyProvider::GetRuleIterator( |
| 204 ContentSettingsType content_type, | 209 ContentSettingsType content_type, |
| 205 const ResourceIdentifier& resource_identifier, | 210 const ResourceIdentifier& resource_identifier, |
| 206 bool incognito) const { | 211 bool incognito) const { |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 } else if (*name == prefs::kManagedDefaultJavaScriptSetting) { | 433 } else if (*name == prefs::kManagedDefaultJavaScriptSetting) { |
| 429 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT); | 434 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT); |
| 430 } else if (*name == prefs::kManagedDefaultPluginsSetting) { | 435 } else if (*name == prefs::kManagedDefaultPluginsSetting) { |
| 431 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_PLUGINS); | 436 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_PLUGINS); |
| 432 } else if (*name == prefs::kManagedDefaultPopupsSetting) { | 437 } else if (*name == prefs::kManagedDefaultPopupsSetting) { |
| 433 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_POPUPS); | 438 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_POPUPS); |
| 434 } else if (*name == prefs::kManagedDefaultGeolocationSetting) { | 439 } else if (*name == prefs::kManagedDefaultGeolocationSetting) { |
| 435 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_GEOLOCATION); | 440 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 436 } else if (*name == prefs::kManagedDefaultNotificationsSetting) { | 441 } else if (*name == prefs::kManagedDefaultNotificationsSetting) { |
| 437 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 442 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 443 } else if (*name == prefs::kManagedDefaultMediaStreamSetting) { |
| 444 UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_MEDIASTREAM); |
| 438 } else if (*name == prefs::kManagedAutoSelectCertificateForUrls || | 445 } else if (*name == prefs::kManagedAutoSelectCertificateForUrls || |
| 439 *name == prefs::kManagedCookiesAllowedForUrls || | 446 *name == prefs::kManagedCookiesAllowedForUrls || |
| 440 *name == prefs::kManagedCookiesBlockedForUrls || | 447 *name == prefs::kManagedCookiesBlockedForUrls || |
| 441 *name == prefs::kManagedCookiesSessionOnlyForUrls || | 448 *name == prefs::kManagedCookiesSessionOnlyForUrls || |
| 442 *name == prefs::kManagedImagesAllowedForUrls || | 449 *name == prefs::kManagedImagesAllowedForUrls || |
| 443 *name == prefs::kManagedImagesBlockedForUrls || | 450 *name == prefs::kManagedImagesBlockedForUrls || |
| 444 *name == prefs::kManagedJavaScriptAllowedForUrls || | 451 *name == prefs::kManagedJavaScriptAllowedForUrls || |
| 445 *name == prefs::kManagedJavaScriptBlockedForUrls || | 452 *name == prefs::kManagedJavaScriptBlockedForUrls || |
| 446 *name == prefs::kManagedPluginsAllowedForUrls || | 453 *name == prefs::kManagedPluginsAllowedForUrls || |
| 447 *name == prefs::kManagedPluginsBlockedForUrls || | 454 *name == prefs::kManagedPluginsBlockedForUrls || |
| 448 *name == prefs::kManagedPopupsAllowedForUrls || | 455 *name == prefs::kManagedPopupsAllowedForUrls || |
| 449 *name == prefs::kManagedPopupsBlockedForUrls || | 456 *name == prefs::kManagedPopupsBlockedForUrls || |
| 450 *name == prefs::kManagedNotificationsAllowedForUrls || | 457 *name == prefs::kManagedNotificationsAllowedForUrls || |
| 451 *name == prefs::kManagedNotificationsBlockedForUrls) { | 458 *name == prefs::kManagedNotificationsBlockedForUrls) { |
| 452 ReadManagedContentSettings(true); | 459 ReadManagedContentSettings(true); |
| 453 ReadManagedDefaultSettings(); | 460 ReadManagedDefaultSettings(); |
| 454 } | 461 } |
| 455 } else { | 462 } else { |
| 456 NOTREACHED() << "Unexpected notification"; | 463 NOTREACHED() << "Unexpected notification"; |
| 457 return; | 464 return; |
| 458 } | 465 } |
| 459 NotifyObservers(ContentSettingsPattern(), | 466 NotifyObservers(ContentSettingsPattern(), |
| 460 ContentSettingsPattern(), | 467 ContentSettingsPattern(), |
| 461 CONTENT_SETTINGS_TYPE_DEFAULT, | 468 CONTENT_SETTINGS_TYPE_DEFAULT, |
| 462 std::string()); | 469 std::string()); |
| 463 } | 470 } |
| 464 | 471 |
| 465 } // namespace content_settings | 472 } // namespace content_settings |
| OLD | NEW |