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

Unified Diff: chrome/browser/browsing_data/browsing_data_remover_unittest.cc

Issue 1741123002: Add removal filter support for Cookies, Storage, and Content Settings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Android Created 4 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
« no previous file with comments | « chrome/browser/browsing_data/browsing_data_remover.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/browsing_data/browsing_data_remover_unittest.cc
diff --git a/chrome/browser/browsing_data/browsing_data_remover_unittest.cc b/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
index 6f45a762739c8242c7e6b115b3486f7e9cb47414..8db87b9c4fbf3e6a99ca0cddc494e08244b756d1 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
@@ -25,10 +25,11 @@
#include "build/build_config.h"
#include "chrome/browser/autofill/personal_data_manager_factory.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
+#include "chrome/browser/browsing_data/browsing_data_filter_builder.h"
#include "chrome/browser/browsing_data/browsing_data_helper.h"
#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
-#include "chrome/browser/browsing_data/origin_filter_builder.h"
+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/domain_reliability/service_factory.h"
#include "chrome/browser/download/chrome_download_manager_delegate.h"
#include "chrome/browser/favicon/favicon_service_factory.h"
@@ -45,6 +46,9 @@
#include "components/autofill/core/browser/personal_data_manager_observer.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/test/bookmark_test_helpers.h"
+#include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "components/content_settings/core/common/content_settings.h"
+#include "components/content_settings/core/common/content_settings_pattern.h"
#include "components/domain_reliability/clear_mode.h"
#include "components/domain_reliability/monitor.h"
#include "components/domain_reliability/service.h"
@@ -116,9 +120,12 @@ using testing::WithArgs;
namespace {
-const char kTestOrigin1[] = "http://host1:1/";
-const char kTestOrigin2[] = "http://host2:1/";
-const char kTestOrigin3[] = "http://host3:1/";
+const char kTestOrigin1[] = "http://host1.com:1/";
+const char kTestRegisterableDomain1[] = "host1.com";
+const char kTestOrigin2[] = "http://host2.com:1/";
+const char kTestOrigin3[] = "http://host3.com:1/";
+const char kTestRegisterableDomain3[] = "host3.com";
+const char kTestOrigin4[] = "https://host3.com:1/";
const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/";
const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/";
@@ -129,6 +136,7 @@ const char kWebOrigin[] = "https://www.example.com/";
const GURL kOrigin1(kTestOrigin1);
const GURL kOrigin2(kTestOrigin2);
const GURL kOrigin3(kTestOrigin3);
+const GURL kOrigin4(kTestOrigin4);
const GURL kOriginExt(kTestOriginExt);
const GURL kOriginDevTools(kTestOriginDevTools);
@@ -144,6 +152,12 @@ const base::FilePath::CharType kDomStorageOrigin3[] =
const base::FilePath::CharType kDomStorageExt[] = FILE_PATH_LITERAL(
"chrome-extension_abcdefghijklmnopqrstuvwxyz_0.localstorage");
+bool MatchPrimaryPattern(const ContentSettingsPattern& expected_primary,
+ const ContentSettingsPattern& primary_pattern,
+ const ContentSettingsPattern& secondary_pattern) {
+ return expected_primary == primary_pattern;
+}
+
#if defined(OS_CHROMEOS)
void FakeDBusCall(const chromeos::BoolDBusMethodCallback& callback) {
base::MessageLoop::current()->PostTask(
@@ -155,14 +169,21 @@ void FakeDBusCall(const chromeos::BoolDBusMethodCallback& callback) {
struct StoragePartitionRemovalData {
uint32_t remove_mask = 0;
uint32_t quota_storage_remove_mask = 0;
- GURL remove_origin;
base::Time remove_begin;
base::Time remove_end;
StoragePartition::OriginMatcherFunction origin_matcher;
+ StoragePartition::CookieMatcherFunction cookie_matcher;
StoragePartitionRemovalData() {}
};
+net::CanonicalCookie CreateCookieWithHost(const GURL& source) {
+ return net::CanonicalCookie(
+ source, "A", "1", source.host(), "/", base::Time::Now(),
+ base::Time::Now(), base::Time::Now(), false, false,
+ net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_MEDIUM);
+}
+
class TestStoragePartition : public StoragePartition {
public:
TestStoragePartition() {}
@@ -233,7 +254,6 @@ class TestStoragePartition : public StoragePartition {
storage_partition_removal_data_.remove_mask = remove_mask;
storage_partition_removal_data_.quota_storage_remove_mask =
quota_storage_remove_mask;
- storage_partition_removal_data_.remove_origin = storage_origin;
storage_partition_removal_data_.remove_begin = begin;
storage_partition_removal_data_.remove_end = end;
storage_partition_removal_data_.origin_matcher = origin_matcher;
@@ -245,6 +265,27 @@ class TestStoragePartition : public StoragePartition {
base::Unretained(this), callback));
}
+ void ClearData(uint32_t remove_mask,
+ uint32_t quota_storage_remove_mask,
+ const OriginMatcherFunction& origin_matcher,
+ const CookieMatcherFunction& cookie_matcher,
+ const base::Time begin,
+ const base::Time end,
+ const base::Closure& callback) override {
+ // Store stuff to verify parameters' correctness later.
+ storage_partition_removal_data_.remove_mask = remove_mask;
+ storage_partition_removal_data_.quota_storage_remove_mask =
+ quota_storage_remove_mask;
+ storage_partition_removal_data_.remove_begin = begin;
+ storage_partition_removal_data_.remove_end = end;
+ storage_partition_removal_data_.origin_matcher = origin_matcher;
+ storage_partition_removal_data_.cookie_matcher = cookie_matcher;
+
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+ base::Bind(&TestStoragePartition::AsyncRunCallback,
+ base::Unretained(this), callback));
+ }
+
void Flush() override {}
StoragePartitionRemovalData GetStoragePartitionRemovalData() {
@@ -1014,9 +1055,10 @@ class BrowsingDataRemoverTest : public testing::Test {
storage_partition.GetStoragePartitionRemovalData();
}
- void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period,
- int remove_mask,
- const GURL& remove_origin) {
+ void BlockUntilOriginDataRemoved(
+ BrowsingDataRemover::TimePeriod period,
+ int remove_mask,
+ const BrowsingDataFilterBuilder& filter_builder) {
BrowsingDataRemover* remover =
BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get());
TestStoragePartition storage_partition;
@@ -1026,7 +1068,7 @@ class BrowsingDataRemoverTest : public testing::Test {
BrowsingDataRemoverCompletionObserver completion_observer(remover);
remover->RemoveImpl(BrowsingDataRemover::Period(period), remove_mask,
- remove_origin, BrowsingDataHelper::UNPROTECTED_WEB);
+ filter_builder, BrowsingDataHelper::UNPROTECTED_WEB);
completion_observer.BlockUntilCompletion();
// Save so we can verify later.
@@ -1136,7 +1178,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) {
StoragePartition::REMOVE_DATA_MASK_COOKIES);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
}
@@ -1156,10 +1197,42 @@ TEST_F(BrowsingDataRemoverTest, RemoveCookieLastHour) {
// persistent storage data.
EXPECT_EQ(removal_data.quota_storage_remove_mask,
~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
}
+TEST_F(BrowsingDataRemoverTest, RemoveCookiesDomainBlacklist) {
+ BrowsingDataFilterBuilder filter(BrowsingDataFilterBuilder::BLACKLIST);
+ filter.AddRegisterableDomain(kTestRegisterableDomain1);
+ filter.AddRegisterableDomain(kTestRegisterableDomain3);
+ BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR,
+ BrowsingDataRemover::REMOVE_COOKIES, filter);
+
+ EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask());
+ EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask());
+
+ // Verify that storage partition was instructed to remove the cookies.
+ StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
+ EXPECT_EQ(removal_data.remove_mask,
+ StoragePartition::REMOVE_DATA_MASK_COOKIES);
+ // Removing with time period other than EVERYTHING should not clear
+ // persistent storage data.
+ EXPECT_EQ(removal_data.quota_storage_remove_mask,
+ ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT);
+ EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
+ EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy()));
+ EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy()));
+ EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin3, mock_policy()));
+ // Even though it's a different origin, it's the same domain.
+ EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin4, mock_policy()));
+
+ EXPECT_FALSE(removal_data.cookie_matcher.Run(CreateCookieWithHost(kOrigin1)));
+ EXPECT_TRUE(removal_data.cookie_matcher.Run(CreateCookieWithHost(kOrigin2)));
+ EXPECT_FALSE(removal_data.cookie_matcher.Run(CreateCookieWithHost(kOrigin3)));
+ // This is false, because this is the same domain as 3, just with a different
+ // scheme.
+ EXPECT_FALSE(removal_data.cookie_matcher.Run(CreateCookieWithHost(kOrigin4)));
+}
+
TEST_F(BrowsingDataRemoverTest, RemoveSafeBrowsingCookieForever) {
RemoveSafeBrowsingCookieTester tester;
@@ -1190,6 +1263,27 @@ TEST_F(BrowsingDataRemoverTest, RemoveSafeBrowsingCookieLastHour) {
EXPECT_TRUE(tester.ContainsCookie());
}
+TEST_F(BrowsingDataRemoverTest, RemoveSafeBrowsingCookieForeverWithPredicate) {
+ RemoveSafeBrowsingCookieTester tester;
+
+ tester.AddCookie();
+ ASSERT_TRUE(tester.ContainsCookie());
+ BrowsingDataFilterBuilder filter(BrowsingDataFilterBuilder::BLACKLIST);
+ filter.AddRegisterableDomain(kTestRegisterableDomain1);
+ BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
+ BrowsingDataRemover::REMOVE_COOKIES, filter);
+
+ EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask());
+ EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask());
+ EXPECT_TRUE(tester.ContainsCookie());
+
+ BrowsingDataFilterBuilder filter2(BrowsingDataFilterBuilder::WHITELIST);
+ filter2.AddRegisterableDomain(kTestRegisterableDomain1);
+ BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
+ BrowsingDataRemover::REMOVE_COOKIES, filter2);
+ EXPECT_FALSE(tester.ContainsCookie());
+}
+
TEST_F(BrowsingDataRemoverTest, RemoveChannelIDForever) {
RemoveChannelIDTester tester(GetProfile());
@@ -1249,7 +1343,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveUnprotectedLocalStorageForever) {
StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
// Check origin matcher.
@@ -1281,7 +1374,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveProtectedLocalStorageForever) {
StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
// Check origin matcher all http origin will match since we specified
@@ -1311,7 +1403,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveLocalStorageForLastWeek) {
// Persistent storage won't be deleted.
EXPECT_EQ(removal_data.quota_storage_remove_mask,
~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
// Check origin matcher.
@@ -1517,7 +1608,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverBoth) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
}
TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyTemporary) {
@@ -1556,7 +1646,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyTemporary) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
// Check that all related origin data would be removed, that is, origin
// matcher would match these origin.
@@ -1601,7 +1690,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyPersistent) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
// Check that all related origin data would be removed, that is, origin
// matcher would match these origin.
@@ -1646,7 +1734,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverNeither) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
// Check that all related origin data would be removed, that is, origin
// matcher would match these origin.
@@ -1656,6 +1743,8 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverNeither) {
}
TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) {
+ BrowsingDataFilterBuilder builder(BrowsingDataFilterBuilder::WHITELIST);
+ builder.AddRegisterableDomain(kTestRegisterableDomain1);
// Remove Origin 1.
BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
BrowsingDataRemover::REMOVE_APPCACHE |
@@ -1664,7 +1753,7 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) {
BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
BrowsingDataRemover::REMOVE_INDEXEDDB |
BrowsingDataRemover::REMOVE_WEBSQL,
- kOrigin1);
+ builder);
EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
BrowsingDataRemover::REMOVE_SERVICE_WORKERS |
@@ -1687,7 +1776,10 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_EQ(removal_data.remove_origin, kOrigin1);
+ EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy()));
+ EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin2, mock_policy()));
+ EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin3, mock_policy()));
+ EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin4, mock_policy()));
}
TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) {
@@ -1726,7 +1818,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) {
uint32_t expected_quota_mask =
~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
EXPECT_EQ(removal_data.quota_storage_remove_mask, expected_quota_mask);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
// Check removal begin time.
EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
}
@@ -1767,7 +1858,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastWeek) {
uint32_t expected_quota_mask =
~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
EXPECT_EQ(removal_data.quota_storage_remove_mask, expected_quota_mask);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
// Check removal begin time.
EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
}
@@ -1810,7 +1900,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedUnprotectedOrigins) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
// Check OriginMatcherFunction.
EXPECT_EQ(ShouldRemoveForProtectedOriginOne(),
@@ -1826,6 +1915,9 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) {
policy->AddProtected(kOrigin1.GetOrigin());
#endif
+ BrowsingDataFilterBuilder builder(BrowsingDataFilterBuilder::WHITELIST);
+ builder.AddRegisterableDomain(kTestRegisterableDomain1);
+
// Try to remove kOrigin1. Expect failure.
BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
BrowsingDataRemover::REMOVE_APPCACHE |
@@ -1834,7 +1926,7 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) {
BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
BrowsingDataRemover::REMOVE_INDEXEDDB |
BrowsingDataRemover::REMOVE_WEBSQL,
- kOrigin1);
+ builder);
EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
BrowsingDataRemover::REMOVE_SERVICE_WORKERS |
@@ -1857,13 +1949,14 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_EQ(removal_data.remove_origin, kOrigin1);
// Check OriginMatcherFunction.
EXPECT_EQ(ShouldRemoveForProtectedOriginOne(),
removal_data.origin_matcher.Run(kOrigin1, mock_policy()));
- EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy()));
- EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy()));
+ // Since we use the matcher function to validate origins now, this should
+ // return false for the origins we're not trying to clear.
+ EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin2, mock_policy()));
+ EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin3, mock_policy()));
}
TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedOrigins) {
@@ -1906,7 +1999,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedOrigins) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
// Check OriginMatcherFunction, |kOrigin1| would match mask since we
// would have 'protected' specified in origin_type_mask.
@@ -1951,7 +2043,6 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedIgnoreExtensionsAndDevTools) {
StoragePartition::REMOVE_DATA_MASK_INDEXEDDB);
EXPECT_EQ(removal_data.quota_storage_remove_mask,
StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL);
- EXPECT_TRUE(removal_data.remove_origin.is_empty());
// Check that extension and devtools data wouldn't be removed, that is,
// origin matcher would not match these origin.
@@ -1959,29 +2050,7 @@ TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedIgnoreExtensionsAndDevTools) {
EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginDevTools, mock_policy()));
}
-TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) {
- RemoveHistoryTester tester;
- ASSERT_TRUE(tester.Init(GetProfile()));
-
- base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
-
- tester.AddHistory(kOrigin1, base::Time::Now());
- tester.AddHistory(kOrigin2, two_hours_ago);
- ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
- ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
-
- BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
- BrowsingDataRemover::REMOVE_HISTORY, kOrigin2);
-
- EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask());
- EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask());
-
- // Nothing should have been deleted.
- EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1));
- EXPECT_FALSE(tester.HistoryContainsURL(kOrigin2));
-}
-
-TEST_F(BrowsingDataRemoverTest, OriginAndTimeBasedHistoryRemoval) {
+TEST_F(BrowsingDataRemoverTest, TimeBasedHistoryRemoval) {
RemoveHistoryTester tester;
ASSERT_TRUE(tester.Init(GetProfile()));
@@ -1992,12 +2061,13 @@ TEST_F(BrowsingDataRemoverTest, OriginAndTimeBasedHistoryRemoval) {
ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
+ BrowsingDataFilterBuilder builder(BrowsingDataFilterBuilder::BLACKLIST);
BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR,
- BrowsingDataRemover::REMOVE_HISTORY, kOrigin2);
+ BrowsingDataRemover::REMOVE_HISTORY, builder);
EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask());
EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask());
- EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1));
+ EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
}
@@ -2228,7 +2298,7 @@ TEST_F(BrowsingDataRemoverTest, DISABLED_DomainReliability_NoMonitor) {
TEST_F(BrowsingDataRemoverTest, RemoveDownloadsByTimeOnly) {
RemoveDownloadsTester tester(GetProfile());
base::Callback<bool(const GURL&)> filter =
- OriginFilterBuilder::BuildNoopFilter();
+ BrowsingDataFilterBuilder::BuildNoopFilter();
EXPECT_CALL(
*tester.download_manager(),
@@ -2240,16 +2310,16 @@ TEST_F(BrowsingDataRemoverTest, RemoveDownloadsByTimeOnly) {
TEST_F(BrowsingDataRemoverTest, RemoveDownloadsByOrigin) {
RemoveDownloadsTester tester(GetProfile());
- OriginFilterBuilder builder(OriginFilterBuilder::WHITELIST);
- builder.AddOrigin(url::Origin(kOrigin1));
- base::Callback<bool(const GURL&)> filter = builder.BuildSameOriginFilter();
+ BrowsingDataFilterBuilder builder(BrowsingDataFilterBuilder::WHITELIST);
+ builder.AddRegisterableDomain(kTestRegisterableDomain1);
+ base::Callback<bool(const GURL&)> filter = builder.BuildSameDomainFilter();
EXPECT_CALL(
*tester.download_manager(),
RemoveDownloadsByURLAndTime(ProbablySameFilter(filter), _, _));
BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
- BrowsingDataRemover::REMOVE_DOWNLOADS, kOrigin1);
+ BrowsingDataRemover::REMOVE_DOWNLOADS, builder);
}
TEST_F(BrowsingDataRemoverTest, RemovePasswordStatistics) {
@@ -2265,7 +2335,7 @@ TEST_F(BrowsingDataRemoverTest, RemovePasswordStatistics) {
TEST_F(BrowsingDataRemoverTest, RemovePasswordsByTimeOnly) {
RemovePasswordsTester tester(GetProfile());
base::Callback<bool(const GURL&)> filter =
- OriginFilterBuilder::BuildNoopFilter();
+ BrowsingDataFilterBuilder::BuildNoopFilter();
EXPECT_CALL(*tester.store(),
RemoveLoginsByURLAndTimeImpl(ProbablySameFilter(filter), _, _))
@@ -2276,15 +2346,15 @@ TEST_F(BrowsingDataRemoverTest, RemovePasswordsByTimeOnly) {
TEST_F(BrowsingDataRemoverTest, RemovePasswordsByOrigin) {
RemovePasswordsTester tester(GetProfile());
- OriginFilterBuilder builder(OriginFilterBuilder::WHITELIST);
- builder.AddOrigin(url::Origin(kOrigin1));
- base::Callback<bool(const GURL&)> filter = builder.BuildSameOriginFilter();
+ BrowsingDataFilterBuilder builder(BrowsingDataFilterBuilder::WHITELIST);
+ builder.AddRegisterableDomain(kTestRegisterableDomain1);
+ base::Callback<bool(const GURL&)> filter = builder.BuildSameDomainFilter();
EXPECT_CALL(*tester.store(),
RemoveLoginsByURLAndTimeImpl(ProbablySameFilter(filter), _, _))
.WillOnce(Return(password_manager::PasswordStoreChangeList()));
BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
- BrowsingDataRemover::REMOVE_PASSWORDS, kOrigin1);
+ BrowsingDataRemover::REMOVE_PASSWORDS, builder);
}
TEST_F(BrowsingDataRemoverTest, DisableAutoSignIn) {
@@ -2310,3 +2380,132 @@ TEST_F(BrowsingDataRemoverTest, DisableAutoSignInAfterRemovingPasswords) {
BrowsingDataRemover::REMOVE_PASSWORDS,
false);
}
+
+TEST_F(BrowsingDataRemoverTest, RemoveContentSettingsWithBlacklist) {
+ // Add our settings.
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetProfile());
+ host_content_settings_map->SetWebsiteSettingDefaultScope(
+ kOrigin1, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
+ new base::DictionaryValue());
+ host_content_settings_map->SetWebsiteSettingDefaultScope(
+ kOrigin2, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
+ new base::DictionaryValue());
+ host_content_settings_map->SetWebsiteSettingDefaultScope(
+ kOrigin3, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
+ new base::DictionaryValue());
+ host_content_settings_map->SetWebsiteSettingDefaultScope(
+ kOrigin4, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
+ new base::DictionaryValue());
+
+ // Clear all except for origin1 and origin3.
+ BrowsingDataFilterBuilder filter(BrowsingDataFilterBuilder::BLACKLIST);
+ filter.AddRegisterableDomain(kTestRegisterableDomain1);
+ filter.AddRegisterableDomain(kTestRegisterableDomain3);
+ BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR,
+ BrowsingDataRemover::REMOVE_SITE_USAGE_DATA,
+ filter);
+
+ EXPECT_EQ(BrowsingDataRemover::REMOVE_SITE_USAGE_DATA, GetRemovalMask());
+ EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask());
+
+ // Verify we only have true, and they're origin1, origin3, and origin4.
+ ContentSettingsForOneType host_settings;
+ host_content_settings_map->GetSettingsForOneType(
+ CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings);
+ EXPECT_EQ(3u, host_settings.size());
+ EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin1),
+ host_settings[0].primary_pattern)
+ << host_settings[0].primary_pattern.ToString();
+ EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin4),
+ host_settings[1].primary_pattern)
+ << host_settings[1].primary_pattern.ToString();
+ EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin3),
+ host_settings[2].primary_pattern)
+ << host_settings[2].primary_pattern.ToString();
+}
+
+TEST_F(BrowsingDataRemoverTest, ClearWithPredicate) {
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetProfile());
+ ContentSettingsForOneType host_settings;
+
+ // Patterns with wildcards.
+ ContentSettingsPattern pattern =
+ ContentSettingsPattern::FromString("[*.]example.org");
+ ContentSettingsPattern pattern2 =
+ ContentSettingsPattern::FromString("[*.]example.net");
+
+ // Patterns without wildcards.
+ GURL url1("https://www.google.com/");
+ GURL url2("https://www.google.com/maps");
+ GURL url3("http://www.google.com/maps");
+ GURL url3_origin_only("http://www.google.com/");
+
+ host_content_settings_map->SetContentSettingCustomScope(
+ pattern2, ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_IMAGES, std::string(), CONTENT_SETTING_BLOCK);
+ host_content_settings_map->SetContentSettingCustomScope(
+ pattern, ContentSettingsPattern::Wildcard(), CONTENT_SETTINGS_TYPE_IMAGES,
+ std::string(), CONTENT_SETTING_BLOCK);
+ host_content_settings_map->SetWebsiteSettingCustomScope(
+ pattern2, ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_APP_BANNER, std::string(),
+ make_scoped_ptr(new base::DictionaryValue()));
+
+ // First, test that we clear only IMAGES (not APP_BANNER), and pattern2.
+ BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate(
+ host_content_settings_map, CONTENT_SETTINGS_TYPE_IMAGES,
+ base::Bind(&MatchPrimaryPattern, pattern2));
+ host_content_settings_map->GetSettingsForOneType(
+ CONTENT_SETTINGS_TYPE_IMAGES, std::string(), &host_settings);
+ // |host_settings| contains default & block.
+ EXPECT_EQ(2U, host_settings.size());
+ EXPECT_EQ(pattern, host_settings[0].primary_pattern);
+ EXPECT_EQ("*", host_settings[0].secondary_pattern.ToString());
+ EXPECT_EQ("*", host_settings[1].primary_pattern.ToString());
+ EXPECT_EQ("*", host_settings[1].secondary_pattern.ToString());
+
+ host_content_settings_map->GetSettingsForOneType(
+ CONTENT_SETTINGS_TYPE_APP_BANNER, std::string(), &host_settings);
+ // |host_settings| contains block.
+ EXPECT_EQ(1U, host_settings.size());
+ EXPECT_EQ(pattern2, host_settings[0].primary_pattern);
+ EXPECT_EQ("*", host_settings[0].secondary_pattern.ToString());
+
+ // Next, test that we do correct pattern matching w/ an origin policy item.
+ // We verify that we have no settings stored.
+ host_content_settings_map->GetSettingsForOneType(
+ CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings);
+ EXPECT_EQ(0u, host_settings.size());
+ // Add settings.
+ host_content_settings_map->SetWebsiteSettingDefaultScope(
+ url1, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
+ new base::DictionaryValue());
+ // This setting should override the one above, as it's the same origin.
+ host_content_settings_map->SetWebsiteSettingDefaultScope(
+ url2, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
+ new base::DictionaryValue());
+ host_content_settings_map->SetWebsiteSettingDefaultScope(
+ url3, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
+ new base::DictionaryValue());
+ // Verify we only have two.
+ host_content_settings_map->GetSettingsForOneType(
+ CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings);
+ EXPECT_EQ(2u, host_settings.size());
+
+ // Clear the http one, which we should be able to do w/ the origin only, as
+ // the scope of CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT is
+ // REQUESTING_ORIGIN_ONLY_SCOPE.
+ ContentSettingsPattern http_pattern =
+ ContentSettingsPattern::FromURLNoWildcard(url3_origin_only);
+ BrowsingDataRemover::ClearSettingsForOneTypeWithPredicate(
+ host_content_settings_map, CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT,
+ base::Bind(&MatchPrimaryPattern, http_pattern));
+ // Verify we only have one, and it's url1.
+ host_content_settings_map->GetSettingsForOneType(
+ CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), &host_settings);
+ EXPECT_EQ(1u, host_settings.size());
+ EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(url1),
+ host_settings[0].primary_pattern);
+}
« no previous file with comments | « chrome/browser/browsing_data/browsing_data_remover.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698