Index: chrome/browser/content_settings/content_settings_policy_provider.cc |
diff --git a/chrome/browser/content_settings/content_settings_policy_provider.cc b/chrome/browser/content_settings/content_settings_policy_provider.cc |
index 3ee93954aad38f0c941091c35f707aae9e8255f3..22b2dae19f65b74688c3380a57655fb80def01bc 100644 |
--- a/chrome/browser/content_settings/content_settings_policy_provider.cc |
+++ b/chrome/browser/content_settings/content_settings_policy_provider.cc |
@@ -37,6 +37,8 @@ const char* kPrefToManageType[CONTENT_SETTINGS_NUM_TYPES] = { |
prefs::kManagedDefaultPopupsSetting, |
prefs::kManagedDefaultGeolocationSetting, |
prefs::kManagedDefaultNotificationsSetting, |
+ NULL, |
+ prefs::kManagedDefaultAutoSelectCertificateSetting, |
}; |
struct PrefsForManagedContentSettingsMapEntry { |
@@ -48,6 +50,10 @@ struct PrefsForManagedContentSettingsMapEntry { |
const PrefsForManagedContentSettingsMapEntry |
kPrefsForManagedContentSettingsMap[] = { |
{ |
+ prefs::kManagedAutoSelectCertificateForUrls, |
+ CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, |
+ CONTENT_SETTING_ALLOW |
+ }, { |
prefs::kManagedCookiesAllowedForUrls, |
CONTENT_SETTINGS_TYPE_COOKIES, |
CONTENT_SETTING_ALLOW |
@@ -120,6 +126,8 @@ PolicyDefaultProvider::PolicyDefaultProvider(PrefService* prefs) |
pref_change_registrar_.Add(prefs::kManagedDefaultPopupsSetting, this); |
pref_change_registrar_.Add(prefs::kManagedDefaultGeolocationSetting, this); |
pref_change_registrar_.Add(prefs::kManagedDefaultNotificationsSetting, this); |
+ pref_change_registrar_.Add( |
+ prefs::kManagedDefaultAutoSelectCertificateSetting, this); |
} |
PolicyDefaultProvider::~PolicyDefaultProvider() { |
@@ -170,6 +178,9 @@ void PolicyDefaultProvider::Observe(int type, |
UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
} else if (*name == prefs::kManagedDefaultNotificationsSetting) { |
UpdateManagedDefaultSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
+ } else if (*name == prefs::kManagedDefaultAutoSelectCertificateSetting) { |
+ UpdateManagedDefaultSetting( |
+ CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE); |
} else { |
NOTREACHED() << "Unexpected preference observed"; |
return; |
@@ -241,6 +252,9 @@ void PolicyDefaultProvider::RegisterUserPrefs(PrefService* prefs) { |
prefs->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, |
CONTENT_SETTING_DEFAULT, |
PrefService::UNSYNCABLE_PREF); |
+ prefs->RegisterIntegerPref(prefs::kManagedDefaultAutoSelectCertificateSetting, |
+ CONTENT_SETTING_ASK, |
+ PrefService::UNSYNCABLE_PREF); |
} |
// //////////////////////////////////////////////////////////////////////////// |
@@ -248,6 +262,8 @@ void PolicyDefaultProvider::RegisterUserPrefs(PrefService* prefs) { |
// static |
void PolicyProvider::RegisterUserPrefs(PrefService* prefs) { |
+ prefs->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls, |
+ PrefService::UNSYNCABLE_PREF); |
prefs->RegisterListPref(prefs::kManagedCookiesAllowedForUrls, |
PrefService::UNSYNCABLE_PREF); |
prefs->RegisterListPref(prefs::kManagedCookiesBlockedForUrls, |
@@ -279,6 +295,7 @@ PolicyProvider::PolicyProvider(PrefService* prefs, |
ReadManagedContentSettings(false); |
pref_change_registrar_.Init(prefs_); |
+ pref_change_registrar_.Add(prefs::kManagedAutoSelectCertificateForUrls, this); |
pref_change_registrar_.Add(prefs::kManagedCookiesBlockedForUrls, this); |
pref_change_registrar_.Add(prefs::kManagedCookiesAllowedForUrls, this); |
pref_change_registrar_.Add(prefs::kManagedCookiesSessionOnlyForUrls, this); |
@@ -330,10 +347,12 @@ void PolicyProvider::GetContentSettingsFromPreferences( |
ContentSettingsType content_type = |
kPrefsForManagedContentSettingsMap[i].content_type; |
// If only one pattern was defined auto expand it to a pattern pair. |
+ ContentSettingsPattern secondary_pattern = |
+ !pattern_pair.second.IsValid() ? ContentSettingsPattern::Wildcard() |
+ : pattern_pair.second; |
rules->push_back(MakeTuple( |
pattern_pair.first, |
- !pattern_pair.second.IsValid() ? ContentSettingsPattern::Wildcard() |
- : pattern_pair.second, |
+ secondary_pattern, |
content_type, |
ResourceIdentifier(NO_RESOURCE_IDENTIFIER), |
kPrefsForManagedContentSettingsMap[i].setting)); |
@@ -436,7 +455,8 @@ void PolicyProvider::Observe(int type, |
if (type == chrome::NOTIFICATION_PREF_CHANGED) { |
DCHECK_EQ(prefs_, Source<PrefService>(source).ptr()); |
std::string* name = Details<std::string>(details).ptr(); |
- if (*name == prefs::kManagedCookiesAllowedForUrls || |
+ if (*name == prefs::kManagedAutoSelectCertificateForUrls || |
+ *name == prefs::kManagedCookiesAllowedForUrls || |
*name == prefs::kManagedCookiesBlockedForUrls || |
*name == prefs::kManagedCookiesSessionOnlyForUrls || |
*name == prefs::kManagedImagesAllowedForUrls || |