Index: chrome/browser/browsing_data/browsing_data_remover.cc |
diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc |
index cf73ad4c134a14fae4fa4b4093eef0c4b7799baa..cd5df4ebf7bc89c53330fa9f12bb7934b578cfe0 100644 |
--- a/chrome/browser/browsing_data/browsing_data_remover.cc |
+++ b/chrome/browser/browsing_data/browsing_data_remover.cc |
@@ -350,6 +350,7 @@ void BrowsingDataRemover::RemoveWithFilter( |
int remove_mask, |
int origin_type_mask, |
std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) { |
+ DCHECK_EQ(0, remove_mask & ~FILTERABLE_DATATYPES); |
DCHECK(filter_builder); |
RemoveInternal(time_range, remove_mask, origin_type_mask, |
std::move(filter_builder), nullptr); |
@@ -361,6 +362,7 @@ void BrowsingDataRemover::RemoveWithFilterAndReply( |
int origin_type_mask, |
std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, |
Observer* observer) { |
+ DCHECK_EQ(0, remove_mask & ~FILTERABLE_DATATYPES); |
DCHECK(filter_builder); |
DCHECK(observer); |
RemoveInternal(time_range, remove_mask, origin_type_mask, |
@@ -416,6 +418,16 @@ void BrowsingDataRemover::RemoveImpl( |
int remove_mask, |
const BrowsingDataFilterBuilder& filter_builder, |
int origin_type_mask) { |
+ // =============== README before adding more storage backends =============== |
+ // |
+ // If you're adding a data storage backend that is included among |
+ // RemoveDataMask::FILTERABLE_DATATYPES, you must do one of the following: |
+ // 1. Support one of the filters generated by |filter_builder|. |
+ // 2. Add a comment explaining why is it acceptable in your case to delete all |
+ // data without filtering URLs / origins / domains. |
+ // 3. Do not support partial deletion, i.e. only delete your data if |
+ // |filter_builder.IsEmptyBlacklist()|. Add a comment explaining why this |
+ // is acceptable. |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
waiting_for_synchronous_clear_operations_ = true; |
@@ -1022,7 +1034,9 @@ void BrowsingDataRemover::RemoveImpl( |
#endif // defined(ENABLE_PLUGINS) |
} |
- // Remove omnibox zero-suggest cache results. |
+ // Remove omnibox zero-suggest cache results. Filtering is not supported. |
+ // This is not a problem, as deleting more data than necessary will just cause |
+ // another server round-trip; no data is actually lost. |
if ((remove_mask & (REMOVE_CACHE | REMOVE_COOKIES))) |
prefs->SetString(omnibox::kZeroSuggestCachedResults, std::string()); |