| 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..6d112b858713bc6436bf1f21a768ec3338f60d90 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 */);
|
| @@ -380,7 +383,7 @@ class MockBrowsingDataRemover : public BrowsingDataRemoverImpl {
|
| void ExpectCall(
|
| const base::Time& delete_begin,
|
| const base::Time& delete_end,
|
| - int remove_mask,
|
| + 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,
|
| @@ -388,10 +391,11 @@ class MockBrowsingDataRemover : public BrowsingDataRemoverImpl {
|
| 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 +411,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 +445,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 +492,51 @@ 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(
|
| + kBrowsingDataTypeSetSiteData.begin(), kBrowsingDataTypeSetSiteData.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 =
|
| + kBrowsingDataTypeSetSiteData;
|
| + storage_and_cache.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, { &kBrowsingDataTypeCookies,
|
| + &kBrowsingDataTypeChannelIDs,
|
| + &kBrowsingDataTypePluginData }},
|
| + {false, true, false, storage },
|
| + {false, false, true, { &kBrowsingDataTypeCache }},
|
| + {true, true, false, kBrowsingDataTypeSetSiteData},
|
| + {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 +551,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 +642,9 @@ 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(
|
| @@ -624,7 +654,7 @@ TEST_F(ChromeContentBrowserClientClearSiteDataTest, RegistrableDomains) {
|
|
|
| remover()->ExpectCall(
|
| base::Time(), base::Time::Max(),
|
| - BrowsingDataRemover::REMOVE_CACHE, BrowsingDataHelper::ALL,
|
| + { &kBrowsingDataTypeCache }, BrowsingDataHelper::ALL,
|
| std::move(origin_filter_builder));
|
|
|
| SetClearingFinished(false);
|
|
|