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 |