Commit e6175fba authored by Christian Dullweber's avatar Christian Dullweber Committed by Commit Bot

Make content settings non-filterable

Content Settings don't need to be filterable and using
WebsiteSettingsFilterAdapter doesn't work in some cases.

Bug: 741934
Change-Id: I765cd9683079fa7592afc3aedc0ea0f243d782ed
Reviewed-on: https://chromium-review.googlesource.com/570241Reviewed-by: default avatarMartin Šrámek <msramek@chromium.org>
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486711}
parent a2d5abfa
...@@ -744,7 +744,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( ...@@ -744,7 +744,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
for (const content_settings::ContentSettingsInfo* info : *registry) { for (const content_settings::ContentSettingsInfo* info : *registry) {
map->ClearSettingsForOneTypeWithPredicate( map->ClearSettingsForOneTypeWithPredicate(
info->website_settings_info()->type(), delete_begin_, info->website_settings_info()->type(), delete_begin_,
base::Bind(&WebsiteSettingsFilterAdapter, filter)); HostContentSettingsMap::PatternSourcePredicate());
} }
} }
......
...@@ -78,17 +78,16 @@ class ChromeBrowsingDataRemoverDelegate ...@@ -78,17 +78,16 @@ class ChromeBrowsingDataRemoverDelegate
// "Site data" includes storage backend accessible to websites and some // "Site data" includes storage backend accessible to websites and some
// additional metadata kept by the browser (e.g. site usage data). // additional metadata kept by the browser (e.g. site usage data).
DATA_TYPE_SITE_DATA = DATA_TYPE_SITE_DATA = content::BrowsingDataRemover::DATA_TYPE_COOKIES |
content::BrowsingDataRemover::DATA_TYPE_COOKIES | content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE |
content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE | DATA_TYPE_PLUGIN_DATA |
DATA_TYPE_PLUGIN_DATA |
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
DATA_TYPE_WEB_APP_DATA | DATA_TYPE_WEB_APP_DATA |
#endif #endif
DATA_TYPE_SITE_USAGE_DATA | DATA_TYPE_SITE_USAGE_DATA |
DATA_TYPE_DURABLE_PERMISSION | DATA_TYPE_DURABLE_PERMISSION |
DATA_TYPE_EXTERNAL_PROTOCOL_DATA, DATA_TYPE_EXTERNAL_PROTOCOL_DATA,
// Datatypes protected by Important Sites. // Datatypes protected by Important Sites.
IMPORTANT_SITES_DATA_TYPES = IMPORTANT_SITES_DATA_TYPES =
...@@ -98,17 +97,16 @@ class ChromeBrowsingDataRemoverDelegate ...@@ -98,17 +97,16 @@ class ChromeBrowsingDataRemoverDelegate
// whichever makes sense. // whichever makes sense.
FILTERABLE_DATA_TYPES = DATA_TYPE_SITE_DATA | FILTERABLE_DATA_TYPES = DATA_TYPE_SITE_DATA |
content::BrowsingDataRemover::DATA_TYPE_CACHE | content::BrowsingDataRemover::DATA_TYPE_CACHE |
content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS | content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
DATA_TYPE_CONTENT_SETTINGS,
// Includes all the available remove options. Meant to be used by clients // Includes all the available remove options. Meant to be used by clients
// that wish to wipe as much data as possible from a Profile, to make it // that wish to wipe as much data as possible from a Profile, to make it
// look like a new Profile. // look like a new Profile.
ALL_DATA_TYPES = DATA_TYPE_SITE_DATA | ALL_DATA_TYPES = DATA_TYPE_SITE_DATA | //
content::BrowsingDataRemover::DATA_TYPE_CACHE | content::BrowsingDataRemover::DATA_TYPE_CACHE |
content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS | content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
DATA_TYPE_FORM_DATA | DATA_TYPE_FORM_DATA | //
DATA_TYPE_HISTORY | DATA_TYPE_HISTORY | //
DATA_TYPE_PASSWORDS | DATA_TYPE_PASSWORDS |
content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES | content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES |
DATA_TYPE_CONTENT_SETTINGS, DATA_TYPE_CONTENT_SETTINGS,
......
...@@ -1680,67 +1680,32 @@ TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveContentSettings) { ...@@ -1680,67 +1680,32 @@ TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveContentSettings) {
map->SetContentSettingDefaultScope(kOrigin1, kOrigin1, map->SetContentSettingDefaultScope(kOrigin1, kOrigin1,
CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTINGS_TYPE_GEOLOCATION,
std::string(), CONTENT_SETTING_ALLOW); std::string(), CONTENT_SETTING_ALLOW);
map->SetContentSettingDefaultScope(kOrigin2, kOrigin2,
CONTENT_SETTINGS_TYPE_GEOLOCATION,
std::string(), CONTENT_SETTING_ALLOW);
map->SetContentSettingDefaultScope(kOrigin2, kOrigin2, map->SetContentSettingDefaultScope(kOrigin2, kOrigin2,
CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
std::string(), CONTENT_SETTING_ALLOW); std::string(), CONTENT_SETTING_ALLOW);
map->SetContentSettingDefaultScope(kOrigin3, kOrigin3, map->SetContentSettingDefaultScope(kOrigin3, GURL(),
CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTINGS_TYPE_COOKIES,
std::string(), CONTENT_SETTING_ALLOW); std::string(), CONTENT_SETTING_BLOCK);
ContentSettingsPattern pattern =
// Clear all except for origin1 and origin3. ContentSettingsPattern::FromString("[*.]example.com");
std::unique_ptr<BrowsingDataFilterBuilder> filter( map->SetContentSettingCustomScope(pattern, ContentSettingsPattern::Wildcard(),
BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::BLACKLIST)); CONTENT_SETTINGS_TYPE_COOKIES,
filter->AddRegisterableDomain(kTestRegisterableDomain1); std::string(), CONTENT_SETTING_BLOCK);
filter->AddRegisterableDomain(kTestRegisterableDomain3); BlockUntilBrowsingDataRemoved(
BlockUntilOriginDataRemoved(
base::Time(), base::Time::Max(), base::Time(), base::Time::Max(),
ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CONTENT_SETTINGS, ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CONTENT_SETTINGS, false);
std::move(filter));
EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CONTENT_SETTINGS,
GetRemovalMask());
EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
GetOriginTypeMask());
// Verify we still have the allow setting for origin1. // Everything except the default settings should be deleted now.
ContentSettingsForOneType host_settings; ContentSettingsForOneType host_settings;
map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
&host_settings); &host_settings);
ASSERT_EQ(2u, host_settings.size()); ASSERT_EQ(1u, host_settings.size());
EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin1),
host_settings[0].primary_pattern)
<< host_settings[0].primary_pattern.ToString();
EXPECT_EQ(CONTENT_SETTING_ALLOW, host_settings[0].GetContentSetting());
// And the wildcard.
EXPECT_EQ(ContentSettingsPattern::Wildcard(), EXPECT_EQ(ContentSettingsPattern::Wildcard(),
host_settings[1].primary_pattern)
<< host_settings[1].primary_pattern.ToString();
EXPECT_EQ(CONTENT_SETTING_ASK, host_settings[1].GetContentSetting());
// There should also only be one setting for origin3
map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
&host_settings);
ASSERT_EQ(2u, host_settings.size());
EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin3),
host_settings[0].primary_pattern) host_settings[0].primary_pattern)
<< host_settings[0].primary_pattern.ToString(); << host_settings[0].primary_pattern.ToString();
EXPECT_EQ(CONTENT_SETTING_ALLOW, host_settings[0].GetContentSetting()); EXPECT_EQ(CONTENT_SETTING_ASK, host_settings[0].GetContentSetting());
// And the wildcard.
EXPECT_EQ(ContentSettingsPattern::Wildcard(),
host_settings[1].primary_pattern)
<< host_settings[1].primary_pattern.ToString();
EXPECT_EQ(CONTENT_SETTING_ASK, host_settings[1].GetContentSetting());
BlockUntilOriginDataRemoved(
base::Time(), base::Time::Max(),
ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CONTENT_SETTINGS,
BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::BLACKLIST));
// Everything except the wildcard should be deleted now. map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
&host_settings); &host_settings);
ASSERT_EQ(1u, host_settings.size()); ASSERT_EQ(1u, host_settings.size());
EXPECT_EQ(ContentSettingsPattern::Wildcard(), EXPECT_EQ(ContentSettingsPattern::Wildcard(),
...@@ -1748,13 +1713,13 @@ TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveContentSettings) { ...@@ -1748,13 +1713,13 @@ TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveContentSettings) {
<< host_settings[0].primary_pattern.ToString(); << host_settings[0].primary_pattern.ToString();
EXPECT_EQ(CONTENT_SETTING_ASK, host_settings[0].GetContentSetting()); EXPECT_EQ(CONTENT_SETTING_ASK, host_settings[0].GetContentSetting());
map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(), map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_COOKIES, std::string(),
&host_settings); &host_settings);
ASSERT_EQ(1u, host_settings.size()); ASSERT_EQ(1u, host_settings.size());
EXPECT_EQ(ContentSettingsPattern::Wildcard(), EXPECT_EQ(ContentSettingsPattern::Wildcard(),
host_settings[0].primary_pattern) host_settings[0].primary_pattern)
<< host_settings[0].primary_pattern.ToString(); << host_settings[0].primary_pattern.ToString();
EXPECT_EQ(CONTENT_SETTING_ASK, host_settings[0].GetContentSetting()); EXPECT_EQ(CONTENT_SETTING_ALLOW, host_settings[0].GetContentSetting());
} }
TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveDurablePermission) { TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveDurablePermission) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment