Index: net/reporting/reporting_cache.h |
diff --git a/net/reporting/reporting_cache.h b/net/reporting/reporting_cache.h |
index 122e0c81beaa662eaa44e0c9cc39297522b95311..1a5d31d8328c60157ddabe98c1f5311d82736027 100644 |
--- a/net/reporting/reporting_cache.h |
+++ b/net/reporting/reporting_cache.h |
@@ -22,6 +22,10 @@ |
#include "url/gurl.h" |
#include "url/origin.h" |
+namespace base { |
+class TickClock; |
+} // namespace base |
+ |
namespace net { |
class ReportingContext; |
@@ -98,6 +102,8 @@ class NET_EXPORT ReportingCache { |
const std::string& group, |
base::TimeTicks expires); |
+ void MarkClientUsed(const url::Origin& origin, const GURL& endpoint); |
+ |
// Gets all of the clients in the cache, regardless of origin or group. |
// |
// (Clears any existing data in |*clients_out|.) |
@@ -161,27 +167,25 @@ class NET_EXPORT ReportingCache { |
private: |
const ReportingReport* FindReportToEvict() const; |
- void MaybeAddWildcardClient(const ReportingClient* client); |
+ void AddClient(std::unique_ptr<ReportingClient> client, |
+ base::TimeTicks last_used); |
- void MaybeRemoveWildcardClient(const ReportingClient* client); |
+ void RemoveClient(const ReportingClient* client); |
+ |
+ const ReportingClient* GetClientByOriginAndEndpoint( |
+ const url::Origin& origin, |
+ const GURL& endpoint) const; |
void GetWildcardClientsForDomainAndGroup( |
const std::string& domain, |
const std::string& group, |
std::vector<const ReportingClient*>* clients_out) const; |
- ReportingContext* context_; |
+ const ReportingClient* FindClientToEvict(base::TimeTicks now) const; |
- // Owns all clients, keyed by origin, then endpoint URL. |
- // (These would be unordered_map, but neither url::Origin nor GURL has a hash |
- // function implemented.) |
- std::map<url::Origin, std::map<GURL, std::unique_ptr<ReportingClient>>> |
- clients_; |
+ base::TickClock* tick_clock(); |
- // References but does not own all clients with includeSubdomains set, keyed |
- // by domain name. |
- std::unordered_map<std::string, std::unordered_set<const ReportingClient*>> |
- wildcard_clients_; |
+ ReportingContext* context_; |
// Owns all reports, keyed by const raw pointer for easier lookup. |
std::unordered_map<const ReportingReport*, std::unique_ptr<ReportingReport>> |
@@ -195,6 +199,20 @@ class NET_EXPORT ReportingCache { |
// pending when the deletion was requested). |
std::unordered_set<const ReportingReport*> doomed_reports_; |
+ // Owns all clients, keyed by origin, then endpoint URL. |
+ // (These would be unordered_map, but neither url::Origin nor GURL has a hash |
+ // function implemented.) |
+ std::map<url::Origin, std::map<GURL, std::unique_ptr<ReportingClient>>> |
+ clients_; |
+ |
+ // References but does not own all clients with includeSubdomains set, keyed |
+ // by domain name. |
+ std::unordered_map<std::string, std::unordered_set<const ReportingClient*>> |
+ wildcard_clients_; |
+ |
+ // The time that each client has last been used. |
+ std::unordered_map<const ReportingClient*, base::TimeTicks> client_last_used_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ReportingCache); |
}; |