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

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 comments 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..d22f93cbda2c4d82b07b52f9deded5b436fefd5f 100644
--- a/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
+++ b/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc
@@ -11,6 +11,7 @@
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
+#include "base/test/test_timeouts.h"
#include "base/threading/platform_thread.h"
#include "base/values.h"
#include "chrome/browser/content_settings/content_settings_mock_observer.h"
@@ -114,7 +115,9 @@ class PrefProviderTest : public testing::Test {
TEST_F(PrefProviderTest, Observer) {
TestingProfile profile;
- PrefProvider pref_content_settings_provider(profile.GetPrefs(), false);
+ PrefProvider pref_content_settings_provider(profile.GetPrefs(),
+ false /* incognito */,
+ true /* store_last_modified */);
ContentSettingsPattern pattern =
ContentSettingsPattern::FromString("[*.]example.com");
@@ -162,7 +165,8 @@ TEST_F(PrefProviderTest, DiscardObsoleteFullscreenAndMouselockPreferences) {
// Instantiate a new PrefProvider here, because we want to test the
// constructor's behavior after setting the above.
- PrefProvider provider(prefs, false);
+ PrefProvider provider(prefs, false /* incognito */,
+ true /* store_last_modified */);
provider.ShutdownOnUIThread();
// Check that fullscreen and mouselock have been deleted.
@@ -220,7 +224,8 @@ TEST_F(PrefProviderTest, DiscardObsoleteLastUsagePreferences) {
// Instantiate a new PrefProvider here, because we want to test the
// constructor's behavior after setting the above.
- PrefProvider provider(prefs, false);
+ PrefProvider provider(prefs, false /* incognito */,
+ true /* store_last_modified */);
// Check that last_used data has been deleted.
EXPECT_TRUE(prefs->GetDictionary(kGeolocationPrefPath)->empty());
@@ -273,8 +278,10 @@ TEST_F(PrefProviderTest, Incognito) {
otr_profile_builder.SetPrefService(base::WrapUnique(otr_prefs));
otr_profile_builder.BuildIncognito(profile.get());
- PrefProvider pref_content_settings_provider(regular_prefs, false);
- PrefProvider pref_content_settings_provider_incognito(otr_prefs, true);
+ PrefProvider pref_content_settings_provider(
+ regular_prefs, false /* incognito */, true /* store_last_modified */);
+ PrefProvider pref_content_settings_provider_incognito(
+ otr_prefs, true /* incognito */, true /* store_last_modified */);
ContentSettingsPattern pattern =
ContentSettingsPattern::FromString("[*.]example.com");
pref_content_settings_provider.SetWebsiteSetting(
@@ -303,7 +310,8 @@ TEST_F(PrefProviderTest, Incognito) {
TEST_F(PrefProviderTest, GetContentSettingsValue) {
TestingProfile testing_profile;
- PrefProvider provider(testing_profile.GetPrefs(), false);
+ PrefProvider provider(testing_profile.GetPrefs(), false /* incognito */,
+ true /* store_last_modified */);
GURL primary_url("http://example.com/");
ContentSettingsPattern primary_pattern =
@@ -344,7 +352,8 @@ TEST_F(PrefProviderTest, GetContentSettingsValue) {
TEST_F(PrefProviderTest, Patterns) {
TestingProfile testing_profile;
PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(),
- false);
+ false /* incognito */,
+ true /* store_last_modified */);
GURL host1("http://example.com/");
GURL host2("http://www.example.com/");
@@ -404,7 +413,8 @@ TEST_F(PrefProviderTest, Patterns) {
TEST_F(PrefProviderTest, ResourceIdentifier) {
TestingProfile testing_profile;
PrefProvider pref_content_settings_provider(testing_profile.GetPrefs(),
- false);
+ false /* incognito */,
+ true /* store_last_modified */);
GURL host("http://example.com/");
ContentSettingsPattern pattern =
@@ -444,7 +454,8 @@ TEST_F(PrefProviderTest, Deadlock) {
const WebsiteSettingsInfo* info = WebsiteSettingsRegistry::GetInstance()->Get(
CONTENT_SETTINGS_TYPE_COOKIES);
- PrefProvider provider(&prefs, false);
+ PrefProvider provider(&prefs, false /* incognito */,
+ true /* store_last_modified */);
DeadlockCheckerObserver observer(&prefs, &provider);
{
DictionaryPrefUpdate update(&prefs, info->pref_name());
@@ -470,7 +481,8 @@ TEST_F(PrefProviderTest, IncognitoInheritsValueMap) {
std::unique_ptr<base::Value> value(new base::Value(CONTENT_SETTING_ALLOW));
// Create a normal provider and set a setting.
- PrefProvider normal_provider(&prefs, false);
+ PrefProvider normal_provider(&prefs, false /* incognito */,
+ true /* store_last_modified */);
normal_provider.SetWebsiteSetting(pattern_1, wildcard,
CONTENT_SETTINGS_TYPE_COOKIES,
std::string(), value->DeepCopy());
@@ -492,7 +504,8 @@ TEST_F(PrefProviderTest, IncognitoInheritsValueMap) {
}
// Create an incognito provider and set a setting.
- PrefProvider incognito_provider(&prefs, true);
+ PrefProvider incognito_provider(&prefs, true /* incognito */,
+ true /* store_last_modified */);
incognito_provider.SetWebsiteSetting(pattern_2, wildcard,
CONTENT_SETTINGS_TYPE_COOKIES,
std::string(), value->DeepCopy());
@@ -530,7 +543,8 @@ TEST_F(PrefProviderTest, ClearAllContentSettingsRules) {
std::unique_ptr<base::Value> value(new base::Value(CONTENT_SETTING_ALLOW));
ResourceIdentifier res_id("abcde");
- PrefProvider provider(&prefs, false);
+ PrefProvider provider(&prefs, false /* incognito */,
+ true /* store_last_modified */);
// Non-empty pattern, syncable, empty resource identifier.
provider.SetWebsiteSetting(pattern, wildcard,
@@ -596,4 +610,70 @@ TEST_F(PrefProviderTest, ClearAllContentSettingsRules) {
provider.ShutdownOnUIThread();
}
+TEST_F(PrefProviderTest, DeleteWebsiteSetting) {
+ 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));
+
+ // Create a provider and set a setting.
+ PrefProvider provider(&prefs, false /* incognito */,
+ true /* store_last_modified */);
+ 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());
+ // Make sure that the timestamps for pattern_1 and patter_2 are before |t|.
+ base::PlatformThread::Sleep(TestTimeouts::tiny_timeout());
+ base::Time t = base::Time::Now();
+ // These clear calls shouldn't do anything because both rules were created
+ // before |t|.
+ provider.DeleteWebsiteSettingAfterDate(pattern_1,
+ ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_COOKIES, t);
+ provider.DeleteWebsiteSettingAfterDate(pattern_2,
+ ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_COOKIES, t);
+ {
+ 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_TRUE(it->HasNext());
+ rule = it->Next();
+ EXPECT_EQ(pattern_2, rule.primary_pattern);
+ EXPECT_FALSE(it->HasNext());
+ }
+
+ // Update pattern_1, which will change the last_modified timestamp.
+ 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());
+ // This time pattern_1 should be deleted because it was edited after |t|.
+ provider.DeleteWebsiteSettingAfterDate(pattern_1,
+ ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_COOKIES, t);
+ provider.DeleteWebsiteSettingAfterDate(pattern_2,
+ ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_COOKIES, t);
+ {
+ 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_2, rule.primary_pattern);
+ EXPECT_FALSE(it->HasNext());
+ }
+
raymes 2017/04/26 01:54:17 Should we test clearing settings for all-time?
dullweber 2017/04/26 11:01:41 I added another deletion call for all-time and an
+ provider.ShutdownOnUIThread();
+}
+
} // namespace content_settings

Powered by Google App Engine
This is Rietveld 408576698