| Index: chrome/browser/content_settings/host_content_settings_map.cc
|
| diff --git a/chrome/browser/content_settings/host_content_settings_map.cc b/chrome/browser/content_settings/host_content_settings_map.cc
|
| index a1ff14c776a34c7e224d358a578ad0037efcfcf0..2c8d92c04fa2c66300c3da2099aa9f03e687f0a3 100644
|
| --- a/chrome/browser/content_settings/host_content_settings_map.cc
|
| +++ b/chrome/browser/content_settings/host_content_settings_map.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/stl_util.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "base/time/clock.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/content_settings/content_settings_custom_extension_provider.h"
|
| #include "chrome/browser/content_settings/content_settings_default_provider.h"
|
| @@ -298,6 +299,13 @@ void HostContentSettingsMap::SetContentSetting(
|
| const std::string& resource_identifier,
|
| ContentSetting setting) {
|
| DCHECK(!ContentTypeHasCompoundValue(content_type));
|
| +
|
| + if (setting == CONTENT_SETTING_ALLOW &&
|
| + (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION ||
|
| + content_type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS)) {
|
| + UpdateLastUsageByPattern(primary_pattern, secondary_pattern, content_type);
|
| + }
|
| +
|
| base::Value* value = NULL;
|
| if (setting != CONTENT_SETTING_DEFAULT)
|
| value = base::Value::CreateIntegerValue(setting);
|
| @@ -308,6 +316,70 @@ void HostContentSettingsMap::SetContentSetting(
|
| value);
|
| }
|
|
|
| +ContentSetting HostContentSettingsMap::GetContentSettingAndMaybeUpdateLastUsage(
|
| + const GURL& primary_url,
|
| + const GURL& secondary_url,
|
| + ContentSettingsType content_type,
|
| + const std::string& resource_identifier) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| +
|
| + ContentSetting setting = GetContentSetting(
|
| + primary_url, secondary_url, content_type, resource_identifier);
|
| + if (setting == CONTENT_SETTING_ALLOW) {
|
| + UpdateLastUsageByPattern(
|
| + ContentSettingsPattern::FromURLNoWildcard(primary_url),
|
| + ContentSettingsPattern::FromURLNoWildcard(secondary_url),
|
| + content_type);
|
| + }
|
| + return setting;
|
| +}
|
| +
|
| +void HostContentSettingsMap::UpdateLastUsage(const GURL& primary_url,
|
| + const GURL& secondary_url,
|
| + ContentSettingsType content_type) {
|
| + UpdateLastUsageByPattern(
|
| + ContentSettingsPattern::FromURLNoWildcard(primary_url),
|
| + ContentSettingsPattern::FromURLNoWildcard(secondary_url),
|
| + content_type);
|
| +}
|
| +
|
| +void HostContentSettingsMap::UpdateLastUsageByPattern(
|
| + const ContentSettingsPattern& primary_pattern,
|
| + const ContentSettingsPattern& secondary_pattern,
|
| + ContentSettingsType content_type) {
|
| + UsedContentSettingsProviders();
|
| +
|
| + GetPrefProvider()->UpdateLastUsage(
|
| + primary_pattern, secondary_pattern, content_type);
|
| +}
|
| +
|
| +base::Time HostContentSettingsMap::GetLastUsage(
|
| + const GURL& primary_url,
|
| + const GURL& secondary_url,
|
| + ContentSettingsType content_type) {
|
| + return GetLastUsageByPattern(
|
| + ContentSettingsPattern::FromURLNoWildcard(primary_url),
|
| + ContentSettingsPattern::FromURLNoWildcard(secondary_url),
|
| + content_type);
|
| +}
|
| +
|
| +base::Time HostContentSettingsMap::GetLastUsageByPattern(
|
| + const ContentSettingsPattern& primary_pattern,
|
| + const ContentSettingsPattern& secondary_pattern,
|
| + ContentSettingsType content_type) {
|
| + UsedContentSettingsProviders();
|
| +
|
| + return GetPrefProvider()->GetLastUsage(
|
| + primary_pattern, secondary_pattern, content_type);
|
| +}
|
| +
|
| +void HostContentSettingsMap::SetPrefClockForTesting(
|
| + scoped_ptr<base::Clock> clock) {
|
| + UsedContentSettingsProviders();
|
| +
|
| + GetPrefProvider()->SetClockForTesting(clock.Pass());
|
| +}
|
| +
|
| void HostContentSettingsMap::AddExceptionForURL(
|
| const GURL& primary_url,
|
| const GURL& secondary_url,
|
| @@ -638,3 +710,8 @@ HostContentSettingsMap::ProviderType
|
| NOTREACHED();
|
| return DEFAULT_PROVIDER;
|
| }
|
| +
|
| +content_settings::PrefProvider* HostContentSettingsMap::GetPrefProvider() {
|
| + return static_cast<content_settings::PrefProvider*>(
|
| + content_settings_providers_[PREF_PROVIDER]);
|
| +}
|
|
|