// 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. #ifndef NET_REPORTING_REPORTING_GARBAGE_COLLECTOR_H_ #define NET_REPORTING_REPORTING_GARBAGE_COLLECTOR_H_ #include #include "net/base/net_export.h" namespace base { class OneShotTimer; } // namespace base namespace net { class ReportingContext; // Removes reports that have remained undelivered for too long or that have been // included in too many failed delivery attempts. class NET_EXPORT ReportingGarbageCollector { public: // Creates a ReportingGarbageCollector. |context| must outlive the garbage // collector. static std::unique_ptr Create( ReportingContext* context); virtual ~ReportingGarbageCollector(); // Replaces the internal OneShotTimer used for scheduling garbage collection // passes with a caller-specified one so that unittests can provide a // MockOneShotTimer. virtual void SetTimerForTesting( std::unique_ptr timer) = 0; }; } // namespace net #endif // NET_REPORTING_REPORTING_GARBAGE_COLLECTOR_H_