Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.h |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.h |
index 7d9623c931a113ab3ac8b84eed593d49c2c7dc88..967cae0cde4a80ecb85a86d1285e074f025c5121 100644 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.h |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.h |
@@ -7,28 +7,33 @@ |
#include <list> |
#include <memory> |
#include <string> |
#include "base/macros.h" |
#include "base/threading/thread_checker.h" |
#include "net/url_request/url_fetcher_delegate.h" |
#include "url/gurl.h" |
+namespace base { |
+class Time; |
+} |
+ |
namespace net { |
class URLFetcher; |
class URLRequestContextGetter; |
} |
namespace data_reduction_proxy { |
class DataReductionProxyData; |
struct DataReductionProxyPageLoadTiming; |
+class RecordPageloadMetricsRequest; |
// Manages pingbacks about page load timing information to the data saver proxy |
// server. This class is not thread safe. |
class DataReductionProxyPingbackClient : public net::URLFetcherDelegate { |
public: |
// The caller must ensure that |url_request_context| remains alive for the |
// lifetime of the |DataReductionProxyPingbackClient| instance. |
explicit DataReductionProxyPingbackClient( |
net::URLRequestContextGetter* url_request_context); |
~DataReductionProxyPingbackClient() override; |
@@ -39,42 +44,47 @@ class DataReductionProxyPingbackClient : public net::URLFetcherDelegate { |
const DataReductionProxyPageLoadTiming& timing); |
// Sets the probability of actually sending a pingback to the server for any |
// call to SendPingback. |
void SetPingbackReportingFraction(float pingback_reporting_fraction); |
protected: |
// Generates a float in the range [0, 1). Virtualized in testing. |
virtual float GenerateRandomFloat() const; |
+ // Returns the current time. Virtualized in testing. |
+ virtual base::Time CurrentTime() const; |
+ |
private: |
// URLFetcherDelegate implmentation: |
void OnURLFetchComplete(const net::URLFetcher* source) override; |
// Whether a pingback should be sent. |
bool ShouldSendPingback() const; |
// Creates an URLFetcher that will POST to |secure_proxy_url_| using |
// |url_request_context_|. The max retires is set to 5. |
+ // The caller must ensure that request_data| is non-null. The caller owns |
+ // |request_data|. |
std::unique_ptr<net::URLFetcher> MaybeCreateFetcherForDataAndStart( |
- const std::string& data); |
+ RecordPageloadMetricsRequest* request_data); |
net::URLRequestContextGetter* url_request_context_; |
// The URL for the data saver proxy's ping back service. |
const GURL pingback_url_; |
// The currently running fetcher. |
std::unique_ptr<net::URLFetcher> current_fetcher_; |
// Serialized data to send to the data saver proxy server. |
- std::list<std::string> data_to_send_; |
+ std::list<std::unique_ptr<RecordPageloadMetricsRequest>> data_to_send_; |
// The probability of sending a pingback to the server. |
float pingback_reporting_fraction_; |
base::ThreadChecker thread_checker_; |
DISALLOW_COPY_AND_ASSIGN(DataReductionProxyPingbackClient); |
}; |
} // namespace data_reduction_proxy |