Index: chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc |
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc |
index 3452790461990689c6a4f8cba19e4b95405bf225..311df7d5c2e8ad4abe2c2e8ed67f8f94ed5e2ab7 100644 |
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc |
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc |
@@ -74,6 +74,8 @@ |
#include "content/public/browser/storage_partition.h" |
#include "net/cookies/cookie_store.h" |
#include "net/http/http_transaction_factory.h" |
+#include "net/reporting/reporting_browsing_data_remover.h" |
+#include "net/reporting/reporting_service.h" |
#include "net/url_request/url_request_context.h" |
#include "net/url_request/url_request_context_getter.h" |
#include "url/url_util.h" |
@@ -236,6 +238,18 @@ void ClearHttpAuthCacheOnIOThread( |
http_session->CloseAllConnections(); |
} |
+void ClearReportingCacheOnIOThread( |
+ net::URLRequestContextGetter* context, |
+ int data_type_mask, |
+ base::Callback<bool(const GURL&)> origin_filter) { |
Bernhard Bauer
2017/04/21 16:49:26
Nit: Callbacks are usually passed by const-ref.
Julia Tuttle
2017/04/21 18:25:11
Oops!
|
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ |
+ net::ReportingService* service = |
+ context->GetURLRequestContext()->reporting_service(); |
+ if (service) |
+ service->RemoveBrowsingData(data_type_mask, origin_filter); |
+} |
+ |
// Returned by ChromeBrowsingDataRemoverDelegate::GetOriginTypeMatcher(). |
bool DoesOriginMatchEmbedderMask(int origin_type_mask, |
const GURL& origin, |
@@ -326,6 +340,7 @@ ChromeBrowsingDataRemoverDelegate::ChromeBrowsingDataRemoverDelegate( |
clear_webrtc_logs_(sub_task_forward_callback_), |
#endif |
clear_auto_sign_in_(sub_task_forward_callback_), |
+ clear_reporting_cache_(sub_task_forward_callback_), |
#if BUILDFLAG(ENABLE_PLUGINS) |
flash_lso_helper_(BrowsingDataFlashLSOHelper::Create(browser_context)), |
#endif |
@@ -994,6 +1009,26 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( |
} |
} |
+ if ((remove_mask & BrowsingDataRemover::DATA_TYPE_COOKIES) || |
+ (remove_mask & DATA_TYPE_HISTORY)) { |
+ scoped_refptr<net::URLRequestContextGetter> context = |
+ profile_->GetRequestContext(); |
+ |
+ int data_type_mask = 0; |
+ if (remove_mask & DATA_TYPE_HISTORY) |
+ data_type_mask |= net::ReportingBrowsingDataRemover::DATA_TYPE_REPORTS; |
+ if (remove_mask & BrowsingDataRemover::DATA_TYPE_COOKIES) |
+ data_type_mask |= net::ReportingBrowsingDataRemover::DATA_TYPE_CLIENTS; |
+ |
+ clear_reporting_cache_.Start(); |
+ BrowserThread::PostTaskAndReply( |
+ BrowserThread::IO, FROM_HERE, |
+ base::Bind(&ClearReportingCacheOnIOThread, |
+ base::RetainedRef(std::move(context)), data_type_mask, |
+ filter), |
+ UIThreadTrampoline(clear_reporting_cache_.GetCompletionCallback())); |
+ } |
+ |
////////////////////////////////////////////////////////////////////////////// |
// DATA_TYPE_WEB_APP_DATA |
#if defined(OS_ANDROID) |
@@ -1043,7 +1078,7 @@ bool ChromeBrowsingDataRemoverDelegate::AllDone() { |
!clear_webrtc_logs_.is_pending() && |
#endif |
!clear_auto_sign_in_.is_pending() && |
- !clear_plugin_data_count_; |
+ !clear_reporting_cache_.is_pending() && !clear_plugin_data_count_; |
} |
#if defined(OS_ANDROID) |