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), |