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(
for (const content_settings::ContentSettingsInfo* info : *registry) {
map->ClearSettingsForOneTypeWithPredicate(
info->website_settings_info()->type(), delete_begin_,
base::Bind(&WebsiteSettingsFilterAdapter, filter));
HostContentSettingsMap::PatternSourcePredicate());
}
}
......
......@@ -78,17 +78,16 @@ class ChromeBrowsingDataRemoverDelegate
// "Site data" includes storage backend accessible to websites and some
// additional metadata kept by the browser (e.g. site usage data).
DATA_TYPE_SITE_DATA =
content::BrowsingDataRemover::DATA_TYPE_COOKIES |
content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE |
DATA_TYPE_PLUGIN_DATA |
DATA_TYPE_SITE_DATA = content::BrowsingDataRemover::DATA_TYPE_COOKIES |
content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE |
DATA_TYPE_PLUGIN_DATA |
#if defined(OS_ANDROID)
DATA_TYPE_WEB_APP_DATA |
DATA_TYPE_WEB_APP_DATA |
#endif
DATA_TYPE_SITE_USAGE_DATA |
DATA_TYPE_DURABLE_PERMISSION |
DATA_TYPE_EXTERNAL_PROTOCOL_DATA,
DATA_TYPE_SITE_USAGE_DATA |
DATA_TYPE_DURABLE_PERMISSION |
DATA_TYPE_EXTERNAL_PROTOCOL_DATA,
// Datatypes protected by Important Sites.
IMPORTANT_SITES_DATA_TYPES =
......@@ -98,17 +97,16 @@ class ChromeBrowsingDataRemoverDelegate
// whichever makes sense.
FILTERABLE_DATA_TYPES = DATA_TYPE_SITE_DATA |
content::BrowsingDataRemover::DATA_TYPE_CACHE |
content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
DATA_TYPE_CONTENT_SETTINGS,
content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
// 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
// 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_DOWNLOADS |
DATA_TYPE_FORM_DATA |
DATA_TYPE_HISTORY |
DATA_TYPE_FORM_DATA | //
DATA_TYPE_HISTORY | //
DATA_TYPE_PASSWORDS |
content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES |
DATA_TYPE_CONTENT_SETTINGS,
......
......@@ -1680,67 +1680,32 @@ TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveContentSettings) {
map->SetContentSettingDefaultScope(kOrigin1, kOrigin1,
CONTENT_SETTINGS_TYPE_GEOLOCATION,
std::string(), CONTENT_SETTING_ALLOW);
map->SetContentSettingDefaultScope(kOrigin2, kOrigin2,
CONTENT_SETTINGS_TYPE_GEOLOCATION,
std::string(), CONTENT_SETTING_ALLOW);
map->SetContentSettingDefaultScope(kOrigin2, kOrigin2,
CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
std::string(), CONTENT_SETTING_ALLOW);
map->SetContentSettingDefaultScope(kOrigin3, kOrigin3,
CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
std::string(), CONTENT_SETTING_ALLOW);
// Clear all except for origin1 and origin3.
std::unique_ptr<BrowsingDataFilterBuilder> filter(
BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::BLACKLIST));
filter->AddRegisterableDomain(kTestRegisterableDomain1);
filter->AddRegisterableDomain(kTestRegisterableDomain3);
BlockUntilOriginDataRemoved(
map->SetContentSettingDefaultScope(kOrigin3, GURL(),
CONTENT_SETTINGS_TYPE_COOKIES,
std::string(), CONTENT_SETTING_BLOCK);
ContentSettingsPattern pattern =
ContentSettingsPattern::FromString("[*.]example.com");
map->SetContentSettingCustomScope(pattern, ContentSettingsPattern::Wildcard(),
CONTENT_SETTINGS_TYPE_COOKIES,
std::string(), CONTENT_SETTING_BLOCK);
BlockUntilBrowsingDataRemoved(
base::Time(), base::Time::Max(),
ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CONTENT_SETTINGS,
std::move(filter));
EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CONTENT_SETTINGS,
GetRemovalMask());
EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
GetOriginTypeMask());
ChromeBrowsingDataRemoverDelegate::DATA_TYPE_CONTENT_SETTINGS, false);
// Verify we still have the allow setting for origin1.
// Everything except the default settings should be deleted now.
ContentSettingsForOneType host_settings;
map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
&host_settings);
ASSERT_EQ(2u, 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.
ASSERT_EQ(1u, host_settings.size());
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.ToString();
EXPECT_EQ(CONTENT_SETTING_ALLOW, 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));
EXPECT_EQ(CONTENT_SETTING_ASK, host_settings[0].GetContentSetting());
// Everything except the wildcard should be deleted now.
map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(),
map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
&host_settings);
ASSERT_EQ(1u, host_settings.size());
EXPECT_EQ(ContentSettingsPattern::Wildcard(),
......@@ -1748,13 +1713,13 @@ TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveContentSettings) {
<< host_settings[0].primary_pattern.ToString();
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);
ASSERT_EQ(1u, host_settings.size());
EXPECT_EQ(ContentSettingsPattern::Wildcard(),
host_settings[0].primary_pattern)
<< 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) {
......
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