// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/reporting/reporting_browsing_data_remover.h" #include #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( ReportingCache* cache, int data_type_mask, const base::RepeatingCallback& origin_filter) { if ((data_type_mask & DATA_TYPE_REPORTS) != 0) { std::vector all_reports; cache->GetReports(&all_reports); std::vector reports_to_remove; for (const ReportingReport* report : all_reports) { if (origin_filter.Run(report->url)) reports_to_remove.push_back(report); } cache->RemoveReports( reports_to_remove, ReportingReport::Outcome::ERASED_BROWSING_DATA_REMOVED); } if ((data_type_mask & DATA_TYPE_CLIENTS) != 0) { std::vector all_clients; cache->GetClients(&all_clients); std::vector 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); } } // static void ReportingBrowsingDataRemover::RemoveAllBrowsingData(ReportingCache* cache, int data_type_mask) { if ((data_type_mask & DATA_TYPE_REPORTS) != 0) { cache->RemoveAllReports( ReportingReport::Outcome::ERASED_BROWSING_DATA_REMOVED); } if ((data_type_mask & DATA_TYPE_CLIENTS) != 0) { cache->RemoveAllClients(); } } } // namespace net