Chromium Code Reviews| 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 |