| Index: components/content_settings/core/browser/host_content_settings_map.cc
|
| diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc
|
| index 978aff41c2b478be224d5ca13d801825741151ce..138152a8b685da54f90ac6fc6690ff360b4bf053 100644
|
| --- a/components/content_settings/core/browser/host_content_settings_map.cc
|
| +++ b/components/content_settings/core/browser/host_content_settings_map.cc
|
| @@ -147,20 +147,22 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
|
| prefs_(prefs),
|
| is_off_the_record_(is_incognito_profile || is_guest_profile) {
|
| DCHECK(!(is_incognito_profile && is_guest_profile));
|
| - content_settings::ObservableProvider* policy_provider =
|
| +
|
| + content_settings::PolicyProvider* policy_provider =
|
| new content_settings::PolicyProvider(prefs_);
|
| - policy_provider->AddObserver(this);
|
| content_settings_providers_[POLICY_PROVIDER] = policy_provider;
|
| + policy_provider->AddObserver(this);
|
|
|
| - content_settings::PrefProvider* pref_provider =
|
| + pref_provider_ =
|
| new content_settings::PrefProvider(prefs_, is_off_the_record_);
|
| - pref_provider->AddObserver(this);
|
| - content_settings_providers_[PREF_PROVIDER] = pref_provider;
|
| + content_settings_providers_[PREF_PROVIDER] = pref_provider_;
|
| + pref_provider_->AddObserver(this);
|
| +
|
| // This ensures that content settings are cleared for the guest profile. This
|
| // wouldn't be needed except that we used to allow settings to be stored for
|
| // the guest profile and so we need to ensure those get cleared.
|
| if (is_guest_profile)
|
| - pref_provider->ClearPrefs();
|
| + pref_provider_->ClearPrefs();
|
|
|
| content_settings::ObservableProvider* default_provider =
|
| new content_settings::DefaultProvider(prefs_, is_off_the_record_);
|
| @@ -219,9 +221,10 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSettingFromProvider(
|
| return CONTENT_SETTING_DEFAULT;
|
| }
|
|
|
| -ContentSetting HostContentSettingsMap::GetDefaultContentSetting(
|
| +ContentSetting HostContentSettingsMap::GetDefaultContentSettingInternal(
|
| ContentSettingsType content_type,
|
| - std::string* provider_id) const {
|
| + ProviderType* provider_type) const {
|
| + DCHECK(provider_type);
|
| UsedContentSettingsProviders();
|
|
|
| // Iterate through the list of providers and return the first non-NULL value
|
| @@ -241,8 +244,7 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSetting(
|
| .get());
|
| }
|
| if (default_setting != CONTENT_SETTING_DEFAULT) {
|
| - if (provider_id)
|
| - *provider_id = kProviderNamesSourceMap[provider->first].provider_name;
|
| + *provider_type = provider->first;
|
| return default_setting;
|
| }
|
| }
|
| @@ -250,6 +252,26 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSetting(
|
| return CONTENT_SETTING_DEFAULT;
|
| }
|
|
|
| +ContentSetting HostContentSettingsMap::GetDefaultContentSetting(
|
| + ContentSettingsType content_type,
|
| + std::string* provider_id) const {
|
| + ProviderType provider_type = NUM_PROVIDER_TYPES;
|
| + ContentSetting content_setting =
|
| + GetDefaultContentSettingInternal(content_type, &provider_type);
|
| + if (content_setting != CONTENT_SETTING_DEFAULT && provider_id)
|
| + *provider_id = kProviderNamesSourceMap[provider_type].provider_name;
|
| + return content_setting;
|
| +}
|
| +
|
| +bool HostContentSettingsMap::AreUserExceptionsAllowedForType(
|
| + ContentSettingsType content_type) const {
|
| + ProviderType default_provider_type = NUM_PROVIDER_TYPES;
|
| + ContentSetting content_setting =
|
| + GetDefaultContentSettingInternal(content_type, &default_provider_type);
|
| + DCHECK_NE(CONTENT_SETTING_DEFAULT, content_setting);
|
| + return default_provider_type >= PREF_PROVIDER;
|
| +}
|
| +
|
| ContentSetting HostContentSettingsMap::GetContentSetting(
|
| const GURL& primary_url,
|
| const GURL& secondary_url,
|
| @@ -520,7 +542,7 @@ void HostContentSettingsMap::UpdateLastUsageByPattern(
|
| ContentSettingsType content_type) {
|
| UsedContentSettingsProviders();
|
|
|
| - GetPrefProvider()->UpdateLastUsage(
|
| + pref_provider_->UpdateLastUsage(
|
| primary_pattern, secondary_pattern, content_type);
|
| }
|
|
|
| @@ -540,7 +562,7 @@ base::Time HostContentSettingsMap::GetLastUsageByPattern(
|
| ContentSettingsType content_type) {
|
| UsedContentSettingsProviders();
|
|
|
| - return GetPrefProvider()->GetLastUsage(
|
| + return pref_provider_->GetLastUsage(
|
| primary_pattern, secondary_pattern, content_type);
|
| }
|
|
|
| @@ -561,7 +583,7 @@ void HostContentSettingsMap::SetPrefClockForTesting(
|
| scoped_ptr<base::Clock> clock) {
|
| UsedContentSettingsProviders();
|
|
|
| - GetPrefProvider()->SetClockForTesting(std::move(clock));
|
| + pref_provider_->SetClockForTesting(std::move(clock));
|
| }
|
|
|
| void HostContentSettingsMap::ClearSettingsForOneType(
|
| @@ -726,11 +748,6 @@ HostContentSettingsMap::GetProviderTypeFromSource(const std::string& source) {
|
| return DEFAULT_PROVIDER;
|
| }
|
|
|
| -content_settings::PrefProvider* HostContentSettingsMap::GetPrefProvider() {
|
| - return static_cast<content_settings::PrefProvider*>(
|
| - content_settings_providers_[PREF_PROVIDER]);
|
| -}
|
| -
|
| scoped_ptr<base::Value> HostContentSettingsMap::GetWebsiteSettingInternal(
|
| const GURL& primary_url,
|
| const GURL& secondary_url,
|
|
|