| 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 a91a44cf0d9dac350922339e08c146670b768e6b..1f437b6a85c8e047444c734e2acc544d9fe998d3 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
|
| @@ -5,8 +5,12 @@
|
| #ifndef COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_PINGBACK_CLIENT_H_
|
| #define COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_PINGBACK_CLIENT_H_
|
|
|
| +#include <stdint.h>
|
| +
|
| #include <memory>
|
| +#include <set>
|
| #include <string>
|
| +#include <utility>
|
|
|
| #include "base/macros.h"
|
| #include "base/threading/thread_checker.h"
|
| @@ -27,6 +31,8 @@ namespace data_reduction_proxy {
|
| class DataReductionProxyData;
|
| struct DataReductionProxyPageLoadTiming;
|
|
|
| +using NavigationID = std::pair<uint64_t, std::string>;
|
| +
|
| // Manages pingbacks about page load timing information to the data saver proxy
|
| // server. This class is not thread safe.
|
| class DataReductionProxyPingbackClient : public net::URLFetcherDelegate {
|
| @@ -46,6 +52,17 @@ class DataReductionProxyPingbackClient : public net::URLFetcherDelegate {
|
| // call to SendPingback.
|
| void SetPingbackReportingFraction(float pingback_reporting_fraction);
|
|
|
| + // Adds an opt out for |tab_identifier_key| for a data saver |page_id|. An opt
|
| + // out occurs when users dismiss the preview in favor of the full page.
|
| + void AddOptOut(const NavigationID& navigation_id);
|
| +
|
| + // Removes any stored data associated with |tab_identifier_key| in a task that
|
| + // runs later.
|
| + void ClearNavigationKeyAsync(const NavigationID& navigation_id);
|
| +
|
| + // The total number of pending loads being tracked due to opt outs.
|
| + size_t OptOutsSizeForTesting() const;
|
| +
|
| protected:
|
| // Generates a float in the range [0, 1). Virtualized in testing.
|
| virtual float GenerateRandomFloat() const;
|
| @@ -66,6 +83,9 @@ class DataReductionProxyPingbackClient : public net::URLFetcherDelegate {
|
| // reset to an empty RecordPageloadMetricsRequest.
|
| void CreateFetcherForDataAndStart();
|
|
|
| + // Removes any stored data associated with |tab_identifier_key|.
|
| + void ClearNavigationKeySync(const NavigationID& navigation_id);
|
| +
|
| net::URLRequestContextGetter* url_request_context_;
|
|
|
| // The URL for the data saver proxy's ping back service.
|
| @@ -80,6 +100,9 @@ class DataReductionProxyPingbackClient : public net::URLFetcherDelegate {
|
| // The probability of sending a pingback to the server.
|
| float pingback_reporting_fraction_;
|
|
|
| + // The map of tab identifier keys to page IDs.
|
| + std::set<NavigationID> opt_outs_;
|
| +
|
| base::ThreadChecker thread_checker_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(DataReductionProxyPingbackClient);
|
|
|