Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(594)

Unified Diff: components/content_settings/core/browser/host_content_settings_map.cc

Issue 2812113004: Write last_modified date to Content Settings in the PrefProvider (Closed)
Patch Set: rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 3879f3096c0b32f26bb8077fd333adb59a9e1e78..3c6d765bc8c840112596c8d8c3af6545ba8044c4 100644
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -178,13 +178,15 @@ content_settings::PatternPair GetPatternsForContentSettingsType(
HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
bool is_incognito_profile,
- bool is_guest_profile)
+ bool is_guest_profile,
+ bool store_last_modified)
: RefcountedKeyedService(base::ThreadTaskRunnerHandle::Get()),
#ifndef NDEBUG
used_from_thread_id_(base::PlatformThread::CurrentId()),
#endif
prefs_(prefs),
is_incognito_(is_incognito_profile || is_guest_profile),
+ store_last_modified_(store_last_modified),
weak_ptr_factory_(this) {
DCHECK(!(is_incognito_profile && is_guest_profile));
@@ -194,8 +196,8 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
base::WrapUnique(policy_provider);
policy_provider->AddObserver(this);
- pref_provider_ =
- new content_settings::PrefProvider(prefs_, is_incognito_);
+ pref_provider_ = new content_settings::PrefProvider(prefs_, is_incognito_,
+ store_last_modified_);
content_settings_providers_[PREF_PROVIDER] = base::WrapUnique(pref_provider_);
pref_provider_->AddObserver(this);
@@ -658,22 +660,27 @@ void HostContentSettingsMap::ClearSettingsForOneType(
void HostContentSettingsMap::ClearSettingsForOneTypeWithPredicate(
ContentSettingsType content_type,
- const base::Callback<bool(const ContentSettingsPattern& primary_pattern,
- const ContentSettingsPattern& secondary_pattern)>&
- pattern_predicate) {
- if (pattern_predicate.is_null()) {
+ base::Time begin_time,
+ const PatternSourcePredicate& pattern_predicate) {
+ if (pattern_predicate.is_null() && begin_time.is_null()) {
ClearSettingsForOneType(content_type);
return;
}
-
+ UsedContentSettingsProviders();
ContentSettingsForOneType settings;
GetSettingsForOneType(content_type, std::string(), &settings);
for (const ContentSettingPatternSource& setting : settings) {
- if (pattern_predicate.Run(setting.primary_pattern,
+ if (pattern_predicate.is_null() ||
+ pattern_predicate.Run(setting.primary_pattern,
setting.secondary_pattern)) {
- SetWebsiteSettingCustomScope(setting.primary_pattern,
- setting.secondary_pattern, content_type,
- std::string(), nullptr);
+ base::Time last_modified = pref_provider_->GetWebsiteSettingLastModified(
+ setting.primary_pattern, setting.secondary_pattern, content_type,
+ std::string());
+ if (last_modified >= begin_time) {
+ pref_provider_->SetWebsiteSetting(setting.primary_pattern,
+ setting.secondary_pattern,
+ content_type, std::string(), nullptr);
+ }
}
}
}

Powered by Google App Engine
This is Rietveld 408576698