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

Unified Diff: chrome/browser/android/preferences/pref_service_bridge.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
« no previous file with comments | « chrome/browser/BUILD.gn ('k') | chrome/browser/android/signin/signin_manager_android.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/preferences/pref_service_bridge.cc
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
index 42c432441ab3beb9094ee8c8d2c8e67e660e1724..9c1f13310f32450c440574cb49e32ca595e427a5 100644
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -7,6 +7,7 @@
#include <jni.h>
#include <stddef.h>
+#include <algorithm>
#include <memory>
#include <set>
#include <string>
@@ -29,6 +30,7 @@
#include "chrome/browser/browsing_data/browsing_data_helper.h"
#include "chrome/browser/browsing_data/browsing_data_remover.h"
#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+#include "chrome/browser/browsing_data/chrome_browsing_data_types.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/engagement/important_sites_util.h"
#include "chrome/browser/history/web_history_service_factory.h"
@@ -619,24 +621,25 @@ static void ClearBrowsingData(
std::vector<int> data_types_vector;
base::android::JavaIntArrayToIntVector(env, data_types, &data_types_vector);
- int remove_mask = 0;
+ std::set<const content::BrowsingDataType*> remove_mask;
for (const int data_type : data_types_vector) {
switch (static_cast<browsing_data::BrowsingDataType>(data_type)) {
case browsing_data::HISTORY:
- remove_mask |= BrowsingDataRemover::REMOVE_HISTORY;
+ remove_mask.insert(&kBrowsingDataTypeHistory);
break;
case browsing_data::CACHE:
- remove_mask |= BrowsingDataRemover::REMOVE_CACHE;
+ remove_mask.insert(&kBrowsingDataTypeCache);
break;
case browsing_data::COOKIES:
- remove_mask |= BrowsingDataRemover::REMOVE_COOKIES;
- remove_mask |= BrowsingDataRemover::REMOVE_SITE_DATA;
+ remove_mask.insert(&kBrowsingDataTypeCookies);
+ remove_mask.insert(BrowsingDataTypeSetSiteData().begin(),
+ BrowsingDataTypeSetSiteData().end());
break;
case browsing_data::PASSWORDS:
- remove_mask |= BrowsingDataRemover::REMOVE_PASSWORDS;
+ remove_mask.insert(&kBrowsingDataTypePasswords);
break;
case browsing_data::FORM_DATA:
- remove_mask |= BrowsingDataRemover::REMOVE_FORM_DATA;
+ remove_mask.insert(&kBrowsingDataTypeFormData);
break;
case browsing_data::BOOKMARKS:
// Bookmarks are deleted separately on the Java side.
@@ -673,10 +676,18 @@ static void ClearBrowsingData(
// Delete the types protected by Important Sites with a filter,
// and the rest completely.
- int filterable_mask =
- remove_mask & BrowsingDataRemover::IMPORTANT_SITES_DATATYPES;
- int nonfilterable_mask = remove_mask &
- ~BrowsingDataRemover::IMPORTANT_SITES_DATATYPES;
+ std::set<const content::BrowsingDataType*> filterable_mask;
+ std::set_intersection(
+ remove_mask.begin(), remove_mask.end(),
+ BrowsingDataTypeSetImportantSites().begin(),
+ BrowsingDataTypeSetImportantSites().end(),
+ std::inserter(filterable_mask, filterable_mask.begin()));
+
+ std::set<const content::BrowsingDataType*> nonfilterable_mask;
+ std::set_difference(
+ remove_mask.begin(), remove_mask.end(), filterable_mask.begin(),
+ filterable_mask.end(),
+ std::inserter(nonfilterable_mask, nonfilterable_mask.begin()));
// ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is
// done with both removal tasks.
@@ -687,7 +698,7 @@ static void ClearBrowsingData(
static_cast<browsing_data::TimePeriod>(time_period);
browsing_data::RecordDeletionForPeriod(period);
- if (filterable_mask) {
+ if (!filterable_mask.empty()) {
browsing_data_remover->RemoveWithFilterAndReply(
browsing_data::CalculateBeginDeleteTime(period),
browsing_data::CalculateEndDeleteTime(period),
@@ -698,7 +709,7 @@ static void ClearBrowsingData(
observer->OnBrowsingDataRemoverDone();
}
- if (nonfilterable_mask) {
+ if (!nonfilterable_mask.empty()) {
browsing_data_remover->RemoveAndReply(
browsing_data::CalculateBeginDeleteTime(period),
browsing_data::CalculateEndDeleteTime(period),
« no previous file with comments | « chrome/browser/BUILD.gn ('k') | chrome/browser/android/signin/signin_manager_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698