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( |