| Index: net/reporting/reporting_delivery_agent.h
|
| diff --git a/net/reporting/reporting_delivery_agent.h b/net/reporting/reporting_delivery_agent.h
|
| index eaae8a3ae6207a55fd71e715a557819d7109f5c7..e4ed37044537500e071dd2551bf995283f138cb8 100644
|
| --- a/net/reporting/reporting_delivery_agent.h
|
| +++ b/net/reporting/reporting_delivery_agent.h
|
| @@ -6,27 +6,17 @@
|
| #define NET_REPORTING_REPORTING_DELIVERY_AGENT_H_
|
|
|
| #include <memory>
|
| -#include <set>
|
| -#include <string>
|
| -#include <utility>
|
|
|
| #include "base/macros.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "net/base/backoff_entry.h"
|
| #include "net/base/net_export.h"
|
| -#include "net/reporting/reporting_context.h"
|
| -#include "net/reporting/reporting_uploader.h"
|
| -#include "url/gurl.h"
|
| -#include "url/origin.h"
|
|
|
| namespace base {
|
| -class TickClock;
|
| +class Timer;
|
| } // namespace base
|
|
|
| namespace net {
|
|
|
| -class ReportingCache;
|
| -class ReportingEndpointManager;
|
| +class ReportingContext;
|
|
|
| // Takes reports from the ReportingCache, assembles reports into deliveries to
|
| // endpoints, and sends those deliveries using ReportingUploader.
|
| @@ -59,39 +49,20 @@ class ReportingEndpointManager;
|
| // delivery attempt.
|
| class NET_EXPORT ReportingDeliveryAgent {
|
| public:
|
| - // |context| must outlive the ReportingDeliveryAgent.
|
| - ReportingDeliveryAgent(ReportingContext* context);
|
| - ~ReportingDeliveryAgent();
|
| + // Creates a ReportingDeliveryAgent. |context| must outlive the agent.
|
| + static std::unique_ptr<ReportingDeliveryAgent> Create(
|
| + ReportingContext* context);
|
|
|
| - // Tries to deliver all of the reports in the cache. Reports that are already
|
| - // being delivered will not be attempted a second time, and reports that do
|
| - // not have a viable endpoint will be neither attempted nor removed.
|
| - void SendReports();
|
| + virtual ~ReportingDeliveryAgent();
|
|
|
| - private:
|
| - class Delivery;
|
| + // Initializes the DeliveryAgent, which schedules delivery (after the Policy's
|
| + // delivery_interval) for any previously-persisted reports that can still be
|
| + // delivered.
|
| + virtual void Initialize() = 0;
|
|
|
| - using OriginGroup = std::pair<url::Origin, std::string>;
|
| -
|
| - void OnUploadComplete(const std::unique_ptr<Delivery>& delivery,
|
| - ReportingUploader::Outcome outcome);
|
| -
|
| - base::TickClock* tick_clock() { return context_->tick_clock(); }
|
| - ReportingCache* cache() { return context_->cache(); }
|
| - ReportingUploader* uploader() { return context_->uploader(); }
|
| - ReportingEndpointManager* endpoint_manager() {
|
| - return context_->endpoint_manager();
|
| - }
|
| -
|
| - ReportingContext* context_;
|
| -
|
| - // Tracks OriginGroup tuples for which there is a pending delivery running.
|
| - // (Would be an unordered_set, but there's no hash on pair.)
|
| - std::set<OriginGroup> pending_origin_groups_;
|
| -
|
| - base::WeakPtrFactory<ReportingDeliveryAgent> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ReportingDeliveryAgent);
|
| + // Replaces the internal Timer used for scheduling report delivery attempts
|
| + // with a caller-specified one so that unittests can provide a MockTimer.
|
| + virtual void SetTimerForTesting(std::unique_ptr<base::Timer> timer) = 0;
|
| };
|
|
|
| } // namespace net
|
|
|