Index: net/reporting/reporting_browsing_data_remover.cc |
diff --git a/net/reporting/reporting_browsing_data_remover.cc b/net/reporting/reporting_browsing_data_remover.cc |
index 5041a47487c62a1425c26a1d776753cf6186dc82..be1d7dce927f7225b6fafba0cf2f08fa85dd8e20 100644 |
--- a/net/reporting/reporting_browsing_data_remover.cc |
+++ b/net/reporting/reporting_browsing_data_remover.cc |
@@ -6,54 +6,83 @@ |
#include <vector> |
+#include "base/memory/ptr_util.h" |
#include "net/reporting/reporting_cache.h" |
+#include "net/reporting/reporting_client.h" |
#include "net/reporting/reporting_context.h" |
#include "net/reporting/reporting_report.h" |
namespace net { |
-// static |
-void ReportingBrowsingDataRemover::RemoveBrowsingData( |
- ReportingContext* context, |
- int data_type_mask, |
- base::Callback<bool(const GURL&)> origin_filter) { |
- ReportingCache* cache = context->cache(); |
- bool remove_reports = (data_type_mask & DATA_TYPE_REPORTS) != 0; |
- bool remove_clients = (data_type_mask & DATA_TYPE_CLIENTS) != 0; |
- |
- if (origin_filter.is_null()) { |
- if (remove_reports) |
- cache->RemoveAllReports(); |
- if (remove_clients) |
- cache->RemoveAllClients(); |
- return; |
- } |
+namespace { |
+ |
+class ReportingBrowsingDataRemoverImpl : public ReportingBrowsingDataRemover { |
+ public: |
+ ReportingBrowsingDataRemoverImpl(ReportingContext* context) |
+ : context_(context) {} |
+ |
+ // ReportingBrowsingDataRemover implementation: |
- if (remove_reports) { |
- std::vector<const ReportingReport*> all_reports; |
- cache->GetReports(&all_reports); |
+ ~ReportingBrowsingDataRemoverImpl() override {} |
- std::vector<const ReportingReport*> reports_to_remove; |
- for (const ReportingReport* report : all_reports) { |
- if (origin_filter.Run(report->url)) |
- reports_to_remove.push_back(report); |
+ void RemoveBrowsingData( |
+ int data_type_mask, |
+ base::Callback<bool(const GURL&)> origin_filter) override { |
+ bool remove_reports = (data_type_mask & DATA_TYPE_REPORTS) != 0; |
+ bool remove_clients = (data_type_mask & DATA_TYPE_CLIENTS) != 0; |
+ |
shivanisha
2017/04/20 18:21:52
ReportingCache* cache = context_->cache(); instead
Julia Tuttle
2017/04/21 13:34:53
Done.
|
+ if (origin_filter.is_null()) { |
+ if (remove_reports) |
+ cache()->RemoveAllReports(); |
+ if (remove_clients) |
+ cache()->RemoveAllClients(); |
+ return; |
} |
- cache->RemoveReports(reports_to_remove); |
- } |
+ if (remove_reports) { |
+ std::vector<const ReportingReport*> all_reports; |
+ cache()->GetReports(&all_reports); |
- if (remove_clients) { |
- std::vector<const ReportingClient*> all_clients; |
- cache->GetClients(&all_clients); |
+ std::vector<const ReportingReport*> reports_to_remove; |
+ for (const ReportingReport* report : all_reports) { |
+ if (origin_filter.Run(report->url)) |
+ reports_to_remove.push_back(report); |
+ } |
- std::vector<const ReportingClient*> clients_to_remove; |
- for (const ReportingClient* client : all_clients) { |
- if (origin_filter.Run(client->origin.GetURL())) |
- clients_to_remove.push_back(client); |
+ cache()->RemoveReports(reports_to_remove); |
} |
- cache->RemoveClients(clients_to_remove); |
+ if (remove_clients) { |
+ std::vector<const ReportingClient*> all_clients; |
+ cache()->GetClients(&all_clients); |
+ |
+ std::vector<const ReportingClient*> clients_to_remove; |
+ for (const ReportingClient* client : all_clients) { |
+ // TODO(juliatuttle): Examine client endpoint as well? |
+ if (origin_filter.Run(client->origin.GetURL())) |
+ clients_to_remove.push_back(client); |
+ } |
+ |
+ cache()->RemoveClients(clients_to_remove); |
+ } |
} |
+ |
+ private: |
+ ReportingCache* cache() { return context_->cache(); } |
+ |
+ ReportingContext* context_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ReportingBrowsingDataRemoverImpl); |
+}; |
+ |
+} // namespace |
+ |
+// static |
+std::unique_ptr<ReportingBrowsingDataRemover> |
+ReportingBrowsingDataRemover::Create(ReportingContext* context) { |
+ return base::MakeUnique<ReportingBrowsingDataRemoverImpl>(context); |
} |
+ReportingBrowsingDataRemover::~ReportingBrowsingDataRemover() {} |
+ |
} // namespace net |