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

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

Issue 2697123004: Convert RemoveDataMask from enum to pointers and split it between content and embedder (Closed)
Patch Set: Android compilation Created 3 years, 10 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
Index: chrome/browser/browsing_data/browsing_data_remover_impl.cc
diff --git a/chrome/browser/browsing_data/browsing_data_remover_impl.cc b/chrome/browser/browsing_data/browsing_data_remover_impl.cc
index dd3a924c22ca7cd1b62fe8b9a5a4e2d848e91ae6..f58b19bda5acf5e05cfbffc3573e6e9a9d40cd51 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_impl.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover_impl.cc
@@ -15,6 +15,7 @@
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
+#include "base/stl_util.h"
#include "chrome/browser/browsing_data/browsing_data_helper.h"
#include "chrome/browser/browsing_data/browsing_data_remover_delegate.h"
#include "chrome/browser/profiles/profile.h"
@@ -46,6 +47,7 @@
using base::UserMetricsAction;
using content::BrowserContext;
using content::BrowserThread;
+using content::BrowsingDataType;
using content::BrowsingDataFilterBuilder;
using content::DOMStorageContext;
@@ -117,6 +119,16 @@ void ClearChannelIDsOnIOThread(
base::RetainedRef(std::move(rq_context)), callback));
}
+bool IsFilterable(const std::set<const BrowsingDataType*>& remove_mask) {
+ for (const BrowsingDataType* data_type : remove_mask) {
+ DCHECK(data_type);
+ if (!data_type->filterable)
+ return false;
+ }
+
+ return true;
+}
+
} // namespace
BrowsingDataRemoverImpl::CompletionInhibitor*
@@ -152,7 +164,6 @@ void BrowsingDataRemoverImpl::SubTask::CompletionCallback() {
BrowsingDataRemoverImpl::BrowsingDataRemoverImpl(
content::BrowserContext* browser_context)
: browser_context_(browser_context),
- remove_mask_(-1),
origin_type_mask_(-1),
is_removing_(false),
sub_task_forward_callback_(
@@ -204,10 +215,11 @@ BrowsingDataRemoverImpl::GetEmbedderDelegate() const {
return embedder_delegate_.get();
}
-void BrowsingDataRemoverImpl::Remove(const base::Time& delete_begin,
- const base::Time& delete_end,
- int remove_mask,
- int origin_type_mask) {
+void BrowsingDataRemoverImpl::Remove(
+ const base::Time& delete_begin,
+ const base::Time& delete_end,
+ const std::set<const BrowsingDataType*>& remove_mask,
+ int origin_type_mask) {
RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
std::unique_ptr<BrowsingDataFilterBuilder>(), nullptr);
}
@@ -215,7 +227,7 @@ void BrowsingDataRemoverImpl::Remove(const base::Time& delete_begin,
void BrowsingDataRemoverImpl::RemoveAndReply(
const base::Time& delete_begin,
const base::Time& delete_end,
- int remove_mask,
+ const std::set<const BrowsingDataType*>& remove_mask,
int origin_type_mask,
Observer* observer) {
DCHECK(observer);
@@ -226,10 +238,10 @@ void BrowsingDataRemoverImpl::RemoveAndReply(
void BrowsingDataRemoverImpl::RemoveWithFilter(
const base::Time& delete_begin,
const base::Time& delete_end,
- int remove_mask,
+ const std::set<const BrowsingDataType*>& remove_mask,
int origin_type_mask,
std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) {
- DCHECK_EQ(0, remove_mask & ~FILTERABLE_DATATYPES);
+ DCHECK(IsFilterable(remove_mask));
DCHECK(filter_builder);
RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
std::move(filter_builder), nullptr);
@@ -238,11 +250,11 @@ void BrowsingDataRemoverImpl::RemoveWithFilter(
void BrowsingDataRemoverImpl::RemoveWithFilterAndReply(
const base::Time& delete_begin,
const base::Time& delete_end,
- int remove_mask,
+ const std::set<const BrowsingDataType*>& remove_mask,
int origin_type_mask,
std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
Observer* observer) {
- DCHECK_EQ(0, remove_mask & ~FILTERABLE_DATATYPES);
+ DCHECK(IsFilterable(remove_mask));
DCHECK(filter_builder);
DCHECK(observer);
RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
@@ -252,7 +264,7 @@ void BrowsingDataRemoverImpl::RemoveWithFilterAndReply(
void BrowsingDataRemoverImpl::RemoveInternal(
const base::Time& delete_begin,
const base::Time& delete_end,
- int remove_mask,
+ const std::set<const BrowsingDataType*>& remove_mask,
int origin_type_mask,
std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
Observer* observer) {
@@ -299,7 +311,7 @@ void BrowsingDataRemoverImpl::RunNextTask() {
void BrowsingDataRemoverImpl::RemoveImpl(
const base::Time& delete_begin,
const base::Time& delete_end,
- int remove_mask,
+ const std::set<const BrowsingDataType*>& remove_mask,
const BrowsingDataFilterBuilder& filter_builder,
int origin_type_mask) {
// =============== README before adding more storage backends ===============
@@ -345,11 +357,13 @@ void BrowsingDataRemoverImpl::RemoveImpl(
// Record the combined deletion of cookies and cache.
CookieOrCacheDeletionChoice choice = NEITHER_COOKIES_NOR_CACHE;
- if (remove_mask & REMOVE_COOKIES &&
+ if (base::ContainsValue(remove_mask, &content::kBrowsingDataTypeCookies) &&
origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) {
- choice = remove_mask & REMOVE_CACHE ? BOTH_COOKIES_AND_CACHE
- : ONLY_COOKIES;
- } else if (remove_mask & REMOVE_CACHE) {
+ choice = base::ContainsValue(remove_mask, &content::kBrowsingDataTypeCache)
+ ? BOTH_COOKIES_AND_CACHE
+ : ONLY_COOKIES;
+ } else if (base::ContainsValue(remove_mask,
+ &content::kBrowsingDataTypeCache)) {
choice = ONLY_CACHE;
}
@@ -372,8 +386,10 @@ void BrowsingDataRemoverImpl::RemoveImpl(
filter_builder.BuildGeneralFilter();
//////////////////////////////////////////////////////////////////////////////
- // REMOVE_DOWNLOADS
- if ((remove_mask & REMOVE_DOWNLOADS) && may_delete_history) {
+ // kBrowsingDataTypeDownloads
+ if ((base::ContainsValue(remove_mask,
+ &content::kBrowsingDataTypeDownloads)) &&
+ may_delete_history) {
content::RecordAction(UserMetricsAction("ClearBrowsingData_Downloads"));
content::DownloadManager* download_manager =
BrowserContext::GetDownloadManager(browser_context_);
@@ -382,10 +398,10 @@ void BrowsingDataRemoverImpl::RemoveImpl(
}
//////////////////////////////////////////////////////////////////////////////
- // REMOVE_CHANNEL_IDS
+ // kBrowsingDataTypeChannelIDs
// Channel IDs are not separated for protected and unprotected web
// origins. We check the origin_type_mask_ to prevent unintended deletion.
- if (remove_mask & REMOVE_CHANNEL_IDS &&
+ if (base::ContainsValue(remove_mask, &content::kBrowsingDataTypeChannelIDs) &&
origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) {
content::RecordAction(
UserMetricsAction("ClearBrowsingData_ChannelIDs"));
@@ -411,36 +427,40 @@ void BrowsingDataRemoverImpl::RemoveImpl(
// don't accidentally remove the cookies that are associated with the
// UNPROTECTED_WEB origin. This is necessary because cookies are not separated
// between UNPROTECTED_WEB and PROTECTED_WEB.
- if (remove_mask & REMOVE_COOKIES &&
+ if (base::ContainsValue(remove_mask, &content::kBrowsingDataTypeCookies) &&
origin_type_mask_ & BrowsingDataHelper::UNPROTECTED_WEB) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_COOKIES;
}
- if (remove_mask & REMOVE_LOCAL_STORAGE) {
+ if (base::ContainsValue(remove_mask,
+ &content::kBrowsingDataTypeLocalStorage)) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE;
}
- if (remove_mask & REMOVE_INDEXEDDB) {
+ if (base::ContainsValue(remove_mask, &content::kBrowsingDataTypeIndexedDB)) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_INDEXEDDB;
}
- if (remove_mask & REMOVE_WEBSQL) {
+ if (base::ContainsValue(remove_mask, &content::kBrowsingDataTypeWebSQL)) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_WEBSQL;
}
- if (remove_mask & REMOVE_APPCACHE) {
+ if (base::ContainsValue(remove_mask, &content::kBrowsingDataTypeAppCache)) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_APPCACHE;
}
- if (remove_mask & REMOVE_SERVICE_WORKERS) {
+ if (base::ContainsValue(remove_mask,
+ &content::kBrowsingDataTypeServiceWorkers)) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_SERVICE_WORKERS;
}
- if (remove_mask & REMOVE_CACHE_STORAGE) {
+ if (base::ContainsValue(remove_mask,
+ &content::kBrowsingDataTypeCacheStorage)) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_CACHE_STORAGE;
}
- if (remove_mask & REMOVE_FILE_SYSTEMS) {
+ if (base::ContainsValue(remove_mask,
+ &content::kBrowsingDataTypeFileSystems)) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS;
}
@@ -448,7 +468,8 @@ void BrowsingDataRemoverImpl::RemoveImpl(
// Content Decryption Modules used by Encrypted Media store licenses in a
// private filesystem. These are different than content licenses used by
// Flash (which are deleted father down in this method).
- if (remove_mask & REMOVE_MEDIA_LICENSES) {
+ if (base::ContainsValue(remove_mask,
+ &content::kBrowsingDataTypeMediaLicenses)) {
storage_partition_remove_mask |=
content::StoragePartition::REMOVE_DATA_MASK_PLUGIN_PRIVATE_DATA;
}
@@ -493,8 +514,8 @@ void BrowsingDataRemoverImpl::RemoveImpl(
}
//////////////////////////////////////////////////////////////////////////////
- // CACHE
- if (remove_mask & REMOVE_CACHE) {
+ // kBrowsingDataTypeCache
+ if (base::ContainsValue(remove_mask, &content::kBrowsingDataTypeCache)) {
// Tell the renderers to clear their cache.
web_cache::WebCacheManager::GetInstance()->ClearCache();
@@ -523,7 +544,7 @@ void BrowsingDataRemoverImpl::RemoveImpl(
//////////////////////////////////////////////////////////////////////////////
// Auth cache.
- if (remove_mask & REMOVE_COOKIES) {
+ if (base::ContainsValue(remove_mask, &content::kBrowsingDataTypeCookies)) {
scoped_refptr<net::URLRequestContextGetter> request_context =
BrowserContext::GetDefaultStoragePartition(browser_context_)
->GetURLRequestContext();
@@ -573,7 +594,8 @@ const base::Time& BrowsingDataRemoverImpl::GetLastUsedEndTime() {
return delete_end_;
}
-int BrowsingDataRemoverImpl::GetLastUsedRemovalMask() {
+const std::set<const BrowsingDataType*>&
+BrowsingDataRemoverImpl::GetLastUsedRemovalMask() {
return remove_mask_;
}
@@ -584,7 +606,7 @@ int BrowsingDataRemoverImpl::GetLastUsedOriginTypeMask() {
BrowsingDataRemoverImpl::RemovalTask::RemovalTask(
const base::Time& delete_begin,
const base::Time& delete_end,
- int remove_mask,
+ const std::set<const BrowsingDataType*>& remove_mask,
int origin_type_mask,
std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
Observer* observer)

Powered by Google App Engine
This is Rietveld 408576698