| Index: chrome/browser/chrome_content_browser_client_unittest.cc
|
| diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc
|
| index d70e22d4f7846e3039cc73a4522310c392e733c7..612a31ecb52a6bad842ff68937a5ef6007d7de70 100644
|
| --- a/chrome/browser/chrome_content_browser_client_unittest.cc
|
| +++ b/chrome/browser/chrome_content_browser_client_unittest.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "chrome/browser/chrome_content_browser_client.h"
|
|
|
| +#include <algorithm>
|
| #include <list>
|
| #include <map>
|
| #include <memory>
|
| @@ -20,6 +21,7 @@
|
| #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_impl.h"
|
| +#include "chrome/browser/browsing_data/chrome_browsing_data_types.h"
|
| #include "chrome/browser/search_engines/template_url_service_factory.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "components/content_settings/core/browser/host_content_settings_map.h"
|
| @@ -358,12 +360,13 @@ class MockBrowsingDataRemover : public BrowsingDataRemoverImpl {
|
| << "Expectations were set but not verified.";
|
| }
|
|
|
| - void RemoveInternal(const base::Time& delete_begin,
|
| - const base::Time& delete_end,
|
| - int remove_mask,
|
| - int origin_type_mask,
|
| - std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
|
| - BrowsingDataRemover::Observer* observer) override {
|
| + void RemoveInternal(
|
| + const base::Time& delete_begin,
|
| + const base::Time& delete_end,
|
| + const std::set<const content::BrowsingDataType*>& remove_mask,
|
| + int origin_type_mask,
|
| + std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
|
| + BrowsingDataRemover::Observer* observer) override {
|
| actual_calls_.emplace_back(delete_begin, delete_end, remove_mask,
|
| origin_type_mask, std::move(filter_builder),
|
| true /* should_compare_filter */);
|
| @@ -377,21 +380,21 @@ class MockBrowsingDataRemover : public BrowsingDataRemoverImpl {
|
| observer->OnBrowsingDataRemoverDone();
|
| }
|
|
|
| - void ExpectCall(
|
| - const base::Time& delete_begin,
|
| - const base::Time& delete_end,
|
| - int remove_mask,
|
| - int origin_type_mask,
|
| - std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) {
|
| + void ExpectCall(const base::Time& delete_begin,
|
| + const base::Time& delete_end,
|
| + const std::set<const content::BrowsingDataType*>& remove_mask,
|
| + int origin_type_mask,
|
| + std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) {
|
| expected_calls_.emplace_back(delete_begin, delete_end, remove_mask,
|
| origin_type_mask, std::move(filter_builder),
|
| true /* should_compare_filter */);
|
| }
|
|
|
| - void ExpectCallDontCareAboutFilterBuilder(const base::Time& delete_begin,
|
| - const base::Time& delete_end,
|
| - int remove_mask,
|
| - int origin_type_mask) {
|
| + void ExpectCallDontCareAboutFilterBuilder(
|
| + const base::Time& delete_begin,
|
| + const base::Time& delete_end,
|
| + const std::set<const content::BrowsingDataType*>& remove_mask,
|
| + int origin_type_mask) {
|
| expected_calls_.emplace_back(delete_begin, delete_end, remove_mask,
|
| origin_type_mask,
|
| std::unique_ptr<BrowsingDataFilterBuilder>(),
|
| @@ -407,12 +410,13 @@ class MockBrowsingDataRemover : public BrowsingDataRemoverImpl {
|
| private:
|
| class CallParameters {
|
| public:
|
| - CallParameters(const base::Time& delete_begin,
|
| - const base::Time& delete_end,
|
| - int remove_mask,
|
| - int origin_type_mask,
|
| - std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
|
| - bool should_compare_filter)
|
| + CallParameters(
|
| + const base::Time& delete_begin,
|
| + const base::Time& delete_end,
|
| + const std::set<const content::BrowsingDataType*>& remove_mask,
|
| + int origin_type_mask,
|
| + std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
|
| + bool should_compare_filter)
|
| : delete_begin_(delete_begin),
|
| delete_end_(delete_end),
|
| remove_mask_(remove_mask),
|
| @@ -440,7 +444,7 @@ class MockBrowsingDataRemover : public BrowsingDataRemoverImpl {
|
| private:
|
| base::Time delete_begin_;
|
| base::Time delete_end_;
|
| - int remove_mask_;
|
| + std::set<const content::BrowsingDataType*> remove_mask_;
|
| int origin_type_mask_;
|
| std::unique_ptr<BrowsingDataFilterBuilder> filter_builder_;
|
| bool should_compare_filter_;
|
| @@ -487,33 +491,49 @@ class ChromeContentBrowserClientClearSiteDataTest : public testing::Test {
|
| TEST_F(ChromeContentBrowserClientClearSiteDataTest, Parameters) {
|
| ChromeContentBrowserClient client;
|
|
|
| + // no datatypes
|
| + std::set<const content::BrowsingDataType*> empty_mask;
|
| +
|
| + // "cookies"
|
| + const std::set<const content::BrowsingDataType*> domain_scoped_types = {
|
| + &kBrowsingDataTypeCookies, &kBrowsingDataTypeChannelIDs,
|
| + &kBrowsingDataTypePluginData,
|
| + };
|
| +
|
| + // "storage"
|
| + std::set<const content::BrowsingDataType*> storage;
|
| + std::set_difference(BrowsingDataTypeSetSiteData().begin(),
|
| + BrowsingDataTypeSetSiteData().end(),
|
| + domain_scoped_types.begin(), domain_scoped_types.end(),
|
| + std::inserter(storage, storage.begin()));
|
| +
|
| + // "storage" + "cache"
|
| + std::set<const content::BrowsingDataType*> storage_and_cache = storage;
|
| + storage_and_cache.insert(&kBrowsingDataTypeCache);
|
| +
|
| + // "cookies" + "storage" + "cache"
|
| + std::set<const content::BrowsingDataType*> all =
|
| + BrowsingDataTypeSetSiteData();
|
| + all.insert(&kBrowsingDataTypeCache);
|
| +
|
| struct TestCase {
|
| bool cookies;
|
| bool storage;
|
| bool cache;
|
| - int mask;
|
| + const std::set<const content::BrowsingDataType*> mask;
|
| } test_cases[] = {
|
| - {false, false, false, 0},
|
| - {true, false, false, BrowsingDataRemover::REMOVE_COOKIES |
|
| - BrowsingDataRemover::REMOVE_CHANNEL_IDS |
|
| - BrowsingDataRemover::REMOVE_PLUGIN_DATA},
|
| - {false, true, false, BrowsingDataRemover::REMOVE_SITE_DATA &
|
| - ~BrowsingDataRemover::REMOVE_COOKIES &
|
| - ~BrowsingDataRemover::REMOVE_CHANNEL_IDS &
|
| - ~BrowsingDataRemover::REMOVE_PLUGIN_DATA},
|
| - {false, false, true, BrowsingDataRemover::REMOVE_CACHE},
|
| - {true, true, false, BrowsingDataRemover::REMOVE_SITE_DATA},
|
| - {true, false, true, BrowsingDataRemover::REMOVE_COOKIES |
|
| - BrowsingDataRemover::REMOVE_CHANNEL_IDS |
|
| - BrowsingDataRemover::REMOVE_PLUGIN_DATA |
|
| - BrowsingDataRemover::REMOVE_CACHE},
|
| - {false, true, true, BrowsingDataRemover::REMOVE_CACHE |
|
| - (BrowsingDataRemover::REMOVE_SITE_DATA &
|
| - ~BrowsingDataRemover::REMOVE_COOKIES &
|
| - ~BrowsingDataRemover::REMOVE_CHANNEL_IDS &
|
| - ~BrowsingDataRemover::REMOVE_PLUGIN_DATA)},
|
| - {true, true, true, BrowsingDataRemover::REMOVE_SITE_DATA |
|
| - BrowsingDataRemover::REMOVE_CACHE},
|
| + {false, false, false, empty_mask},
|
| + {true, false, false, domain_scoped_types},
|
| + {false, true, false, storage},
|
| + {false, false, true, {&kBrowsingDataTypeCache}},
|
| + {true, true, false, BrowsingDataTypeSetSiteData()},
|
| + {true,
|
| + false,
|
| + true,
|
| + {&kBrowsingDataTypeCookies, &kBrowsingDataTypeChannelIDs,
|
| + &kBrowsingDataTypePluginData, &kBrowsingDataTypeCache}},
|
| + {false, true, true, storage_and_cache},
|
| + {true, true, true, all},
|
| };
|
|
|
| for (unsigned int i = 0; i < arraysize(test_cases); ++i) {
|
| @@ -528,19 +548,26 @@ TEST_F(ChromeContentBrowserClientClearSiteDataTest, Parameters) {
|
| // Depending on the chosen datatypes, this might result into one or two
|
| // calls. In the latter case, the removal mask will be split into two
|
| // parts - one for the origin deletion and one for the registrable domain.
|
| - const int domain_scoped_types = BrowsingDataRemover::REMOVE_COOKIES |
|
| - BrowsingDataRemover::REMOVE_CHANNEL_IDS |
|
| - BrowsingDataRemover::REMOVE_PLUGIN_DATA;
|
| - int registrable_domain_deletion_mask = test_case.mask & domain_scoped_types;
|
| - int origin_deletion_mask = test_case.mask & ~domain_scoped_types;
|
| -
|
| - if (registrable_domain_deletion_mask) {
|
| + std::set<const content::BrowsingDataType*> registrable_domain_deletion_mask;
|
| + std::set_intersection(
|
| + test_case.mask.begin(), test_case.mask.end(),
|
| + domain_scoped_types.begin(), domain_scoped_types.end(),
|
| + std::inserter(registrable_domain_deletion_mask,
|
| + registrable_domain_deletion_mask.begin()));
|
| +
|
| + std::set<const content::BrowsingDataType*> origin_deletion_mask;
|
| + std::set_difference(
|
| + test_case.mask.begin(), test_case.mask.end(),
|
| + domain_scoped_types.begin(), domain_scoped_types.end(),
|
| + std::inserter(origin_deletion_mask, origin_deletion_mask.begin()));
|
| +
|
| + if (!registrable_domain_deletion_mask.empty()) {
|
| remover()->ExpectCallDontCareAboutFilterBuilder(
|
| base::Time(), base::Time::Max(),
|
| registrable_domain_deletion_mask, all_origin_types);
|
| }
|
|
|
| - if (origin_deletion_mask) {
|
| + if (!origin_deletion_mask.empty()) {
|
| remover()->ExpectCallDontCareAboutFilterBuilder(
|
| base::Time(), base::Time::Max(),
|
| origin_deletion_mask, all_origin_types);
|
| @@ -612,9 +639,8 @@ TEST_F(ChromeContentBrowserClientClearSiteDataTest, RegistrableDomains) {
|
|
|
| remover()->ExpectCall(
|
| base::Time(), base::Time::Max(),
|
| - BrowsingDataRemover::REMOVE_COOKIES |
|
| - BrowsingDataRemover::REMOVE_CHANNEL_IDS |
|
| - BrowsingDataRemover::REMOVE_PLUGIN_DATA,
|
| + {&kBrowsingDataTypeCookies, &kBrowsingDataTypeChannelIDs,
|
| + &kBrowsingDataTypePluginData},
|
| BrowsingDataHelper::ALL, std::move(registrable_domain_filter_builder));
|
|
|
| std::unique_ptr<BrowsingDataFilterBuilder> origin_filter_builder(
|
| @@ -622,10 +648,9 @@ TEST_F(ChromeContentBrowserClientClearSiteDataTest, RegistrableDomains) {
|
| BrowsingDataFilterBuilder::WHITELIST));
|
| origin_filter_builder->AddOrigin(url::Origin(GURL(test_case.origin)));
|
|
|
| - remover()->ExpectCall(
|
| - base::Time(), base::Time::Max(),
|
| - BrowsingDataRemover::REMOVE_CACHE, BrowsingDataHelper::ALL,
|
| - std::move(origin_filter_builder));
|
| + remover()->ExpectCall(base::Time(), base::Time::Max(),
|
| + {&kBrowsingDataTypeCache}, BrowsingDataHelper::ALL,
|
| + std::move(origin_filter_builder));
|
|
|
| SetClearingFinished(false);
|
| client.ClearSiteData(
|
|
|