| 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);
|
| +}
|
|
|