| Index: components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats.h
|
| diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats.h b/components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats.h
|
| index 6c217b2f5768bdba67c736494cee83e2629dc718..42d09207ec7cc397cebab63280f0a550ae365a74 100644
|
| --- a/components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats.h
|
| +++ b/components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats.h
|
| @@ -6,10 +6,13 @@
|
| #define COMPONENTS_DATA_REDUCTION_PROXY_BROWSER_DATA_REDUCTION_PROXY_USAGE_STATS_H_
|
|
|
| #include "base/message_loop/message_loop_proxy.h"
|
| +#include "base/prefs/pref_member.h"
|
| #include "base/threading/thread_checker.h"
|
| #include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
|
| #include "net/base/host_port_pair.h"
|
| #include "net/base/network_change_notifier.h"
|
| +#include "net/proxy/proxy_service.h"
|
| +#include "net/url_request/url_request.h"
|
|
|
| namespace data_reduction_proxy {
|
|
|
| @@ -23,20 +26,52 @@ class DataReductionProxyUsageStats
|
| base::MessageLoopProxy* io_thread_proxy);
|
| virtual ~DataReductionProxyUsageStats();
|
|
|
| - /**
|
| - * Callback intended to be called from |ChromeNetworkDelegate| when a
|
| - * request completes. This method is used to gather usage stats.
|
| - */
|
| + // Callback intended to be called from |ChromeNetworkDelegate| when a
|
| + // request completes. This method is used to gather usage stats.
|
| void OnUrlRequestCompleted(const net::URLRequest* request, bool started);
|
|
|
| - /**
|
| - * Determines whether the data reduction proxy is unreachable.
|
| - * Returns true if data reduction proxy is unreachable.
|
| - */
|
| + // Determines whether the data reduction proxy is unreachable.
|
| + // Returns true if data reduction proxy is unreachable.
|
| bool isDataReductionProxyUnreachable();
|
|
|
| + // Records the last bypass reason to |bypass_type_| and sets
|
| + // |triggering_request_| to true.
|
| + void SetBypassType(net::ProxyService::DataReductionProxyBypassType type);
|
| +
|
| + // Records the number of bypassed bytes for various bypass reasons into their
|
| + // respective UMAs.
|
| + void RecordBypassedBytesHistograms(
|
| + int64 content_length,
|
| + const net::URLRequest& request,
|
| + const BooleanPrefMember* data_reduction_proxy_enabled);
|
| +
|
| private:
|
| + enum BypassedBytesType {
|
| + // Not bypassed.
|
| + NOT_BYPASSED = 0,
|
| +
|
| + // Bypass due to SSL.
|
| + SSL = 1,
|
| +
|
| + // Bypass due to client-side bypass rules.
|
| + LOCAL_BYPASS_RULES = 2,
|
| +
|
| + // Audio/Video bypass.
|
| + AUDIO_VIDEO = 3,
|
| +
|
| + // Triggering request bypass.
|
| + TRIGGERING_REQUEST = 4,
|
| +
|
| + // Network error.
|
| + NETWORK_ERROR = 5,
|
| +
|
| + // This must always be last.
|
| + BYPASSED_BYTES_TYPE_MAX = 6
|
| + };
|
| +
|
| DataReductionProxyParams* data_reduction_proxy_params_;
|
| + net::ProxyService::DataReductionProxyBypassType bypass_type_;
|
| + bool triggering_request_;
|
| base::MessageLoopProxy* ui_thread_proxy_;
|
| base::MessageLoopProxy* io_thread_proxy_;
|
|
|
| @@ -63,6 +98,11 @@ class DataReductionProxyUsageStats
|
|
|
| base::ThreadChecker thread_checker_;
|
|
|
| + void RecordBypassedBytes(
|
| + net::ProxyService::DataReductionProxyBypassType bypass_type,
|
| + BypassedBytesType bypassed_bytes_type,
|
| + int64 content_length);
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(DataReductionProxyUsageStats);
|
| };
|
|
|
|
|