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

Unified Diff: chrome/browser/content_settings/content_settings_pref_provider_unittest.cc

Issue 2812113004: Write last_modified date to Content Settings in the PrefProvider (Closed)
Patch Set: Fix Android compilation 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: chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
diff --git a/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc b/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
index a59763fa7bc83107b88ab7ddd24bd217f7ed07a7..53a282b55f29286af826f6910c6fcb93eb65d4f1 100644
--- a/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
+++ b/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
@@ -596,4 +596,71 @@ TEST_F(PrefProviderTest, ClearAllContentSettingsRules) {
provider.ShutdownOnUIThread();
}
+TEST_F(PrefProviderTest, LastModified) {
+ sync_preferences::TestingPrefServiceSyncable prefs;
+ PrefProvider::RegisterProfilePrefs(prefs.registry());
+
+ ContentSettingsPattern pattern_1 =
+ ContentSettingsPattern::FromString("google.com");
+ ContentSettingsPattern pattern_2 =
+ ContentSettingsPattern::FromString("www.google.com");
+ std::unique_ptr<base::Value> value(new base::Value(CONTENT_SETTING_ALLOW));
+
+ base::Time t1 = base::Time::Now();
msramek 2017/04/19 10:49:15 optional: This might be a good place for SimpleTes
dullweber 2017/04/19 15:02:45 Thanks for pointing at this, it will probably be u
+ // Create a provider and set a setting.
+ PrefProvider provider(&prefs, false, /*store_last_modified=*/true);
+ provider.SetWebsiteSetting(pattern_1, ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_COOKIES, std::string(),
+ value->DeepCopy());
+ provider.SetWebsiteSetting(pattern_2, ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_COOKIES, std::string(),
+ value->DeepCopy());
+ base::Time t2 = base::Time::Now();
+
+ {
+ std::unique_ptr<RuleIterator> it(provider.GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_COOKIES, std::string(), false));
+ EXPECT_TRUE(it->HasNext());
+ Rule rule = it->Next();
+ EXPECT_EQ(pattern_1, rule.primary_pattern);
+ EXPECT_LT(t1, rule.last_modified);
+ EXPECT_GT(t2, rule.last_modified);
+
+ EXPECT_TRUE(it->HasNext());
+ rule = it->Next();
+ EXPECT_EQ(pattern_2, rule.primary_pattern);
+ EXPECT_LT(t1, rule.last_modified);
+ EXPECT_GT(t2, rule.last_modified);
+
+ EXPECT_FALSE(it->HasNext());
+ }
+
+ // Update pattern_1 and check that the timestamp changes.
+ std::unique_ptr<base::Value> value2(new base::Value(CONTENT_SETTING_BLOCK));
+ provider.SetWebsiteSetting(pattern_1, ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_COOKIES, std::string(),
+ value2->DeepCopy());
+ base::Time t3 = base::Time::Now();
+
+ {
+ std::unique_ptr<RuleIterator> it(provider.GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_COOKIES, std::string(), false));
+ EXPECT_TRUE(it->HasNext());
+ Rule rule = it->Next();
+ EXPECT_EQ(pattern_1, rule.primary_pattern);
+ EXPECT_LT(t2, rule.last_modified);
+ EXPECT_GT(t3, rule.last_modified);
+
+ EXPECT_TRUE(it->HasNext());
+ rule = it->Next();
+ EXPECT_EQ(pattern_2, rule.primary_pattern);
+ EXPECT_LT(t1, rule.last_modified);
+ EXPECT_GT(t2, rule.last_modified);
+
+ EXPECT_FALSE(it->HasNext());
+ }
+
+ provider.ShutdownOnUIThread();
+}
+
} // namespace content_settings

Powered by Google App Engine
This is Rietveld 408576698