Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats.h |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats.h |
deleted file mode 100644 |
index e65fedbb6ef67b8f04a1294b8fcffdad1f6e0f2b..0000000000000000000000000000000000000000 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats.h |
+++ /dev/null |
@@ -1,173 +0,0 @@ |
-// Copyright 2014 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 COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_USAGE_STATS_H_ |
-#define COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_USAGE_STATS_H_ |
- |
-#include "base/callback.h" |
-#include "base/prefs/pref_member.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/threading/thread_checker.h" |
-#include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h" |
-#include "net/base/host_port_pair.h" |
-#include "net/base/network_change_notifier.h" |
-#include "net/url_request/url_request.h" |
- |
-namespace net { |
-class HttpResponseHeaders; |
-class ProxyConfig; |
-class ProxyServer; |
-} |
- |
-namespace data_reduction_proxy { |
- |
-class DataReductionProxyConfig; |
- |
-// TODO(bengr): Rename as DataReductionProxyBypassStats. |
-class DataReductionProxyUsageStats |
- : public net::NetworkChangeNotifier::NetworkChangeObserver { |
- public: |
- typedef base::Callback<void(bool /* unreachable */)> UnreachableCallback; |
- |
- // Records a data reduction proxy bypass event as a "BlockType" if |
- // |bypass_all| is true and as a "BypassType" otherwise. Records the event as |
- // "Primary" if |is_primary| is true and "Fallback" otherwise. |
- static void RecordDataReductionProxyBypassInfo( |
- bool is_primary, |
- bool bypass_all, |
- const net::ProxyServer& proxy_server, |
- DataReductionProxyBypassType bypass_type); |
- |
- // For the given response |headers| that are expected to include the data |
- // reduction proxy via header, records response code UMA if the data reduction |
- // proxy via header is not present. |
- static void DetectAndRecordMissingViaHeaderResponseCode( |
- bool is_primary, |
- const net::HttpResponseHeaders* headers); |
- |
- // |params| outlives this class instance. |unreachable_callback| provides a |
- // hook to inform the user that the Data Reduction Proxy is unreachable, which |
- // occurs on the UI thread, hence the |ui_task_runner|. |
- // |config| must not be null. |
- DataReductionProxyUsageStats( |
- DataReductionProxyConfig* config, |
- UnreachableCallback unreachable_callback, |
- const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner); |
- |
- ~DataReductionProxyUsageStats() override; |
- |
- // Callback intended to be called from |DataReductionProxyNetworkDelegate| |
- // when a request completes. This method is used to gather usage stats. |
- void OnUrlRequestCompleted(const net::URLRequest* request, bool started); |
- |
- // Records the last bypass reason to |bypass_type_| and sets |
- // |triggering_request_| to true. A triggering request is the first request to |
- // cause the current bypass. |
- void SetBypassType(DataReductionProxyBypassType type); |
- |
- // Visible for testing. |
- DataReductionProxyBypassType GetBypassType() const; |
- |
- // Records all the data reduction proxy bytes-related histograms for the |
- // completed URLRequest |request|. |
- void RecordBytesHistograms( |
- const net::URLRequest& request, |
- const BooleanPrefMember& data_reduction_proxy_enabled, |
- const net::ProxyConfig& data_reduction_proxy_config); |
- |
- // Called by |ChromeNetworkDelegate| when a proxy is put into the bad proxy |
- // list. Used to track when the data reduction proxy falls back. |
- void OnProxyFallback(const net::ProxyServer& bypassed_proxy, |
- int net_error); |
- |
- // Called by |ChromeNetworkDelegate| when an HTTP connect has been called. |
- // Used to track proxy connection failures. |
- void OnConnectComplete(const net::HostPortPair& proxy_server, |
- int net_error); |
- |
- private: |
- friend class DataReductionProxyUsageStatsTest; |
- FRIEND_TEST_ALL_PREFIXES(DataReductionProxyUsageStatsTest, |
- RecordMissingViaHeaderBytes); |
- |
- enum BypassedBytesType { |
- NOT_BYPASSED = 0, /* Not bypassed. */ |
- SSL, /* Bypass due to SSL. */ |
- LOCAL_BYPASS_RULES, /* Bypass due to client-side bypass rules. */ |
- PROXY_OVERRIDDEN, /* Bypass due to a proxy taking precedence. */ |
- AUDIO_VIDEO, /* Audio/Video bypass. */ |
- TRIGGERING_REQUEST, /* Triggering request bypass. */ |
- NETWORK_ERROR, /* Network error. */ |
- BYPASSED_BYTES_TYPE_MAX /* This must always be last.*/ |
- }; |
- |
- // Given |data_reduction_proxy_enabled|, a |request|, and the |
- // |data_reduction_proxy_config| records the number of bypassed bytes for that |
- // |request| into UMAs based on bypass type. |data_reduction_proxy_enabled| |
- // tells us the state of the kDataReductionProxyEnabled preference. |
- void RecordBypassedBytesHistograms( |
- const net::URLRequest& request, |
- const BooleanPrefMember& data_reduction_proxy_enabled, |
- const net::ProxyConfig& data_reduction_proxy_config); |
- |
- // Records UMA of the number of response bytes of responses that are expected |
- // to have the data reduction proxy via header, but where the data reduction |
- // proxy via header is not present. |
- void RecordMissingViaHeaderBytes(const net::URLRequest& request); |
- |
- // NetworkChangeNotifier::NetworkChangeObserver: |
- void OnNetworkChanged( |
- net::NetworkChangeNotifier::ConnectionType type) override; |
- |
- // Clears request counts unconditionally. |
- void ClearRequestCounts(); |
- |
- // Checks if the availability status of the data reduction proxy has changed, |
- // and notifies the UIThread via NotifyUnavailabilityOnUIThread if so. The |
- // data reduction proxy is considered unavailable if and only if no requests |
- // went through the proxy but some eligible requests were service by other |
- // routes. |
- void NotifyUnavailabilityIfChanged(); |
- void NotifyUnavailabilityOnUIThread(bool unavailable); |
- |
- void RecordBypassedBytes( |
- DataReductionProxyBypassType bypass_type, |
- BypassedBytesType bypassed_bytes_type, |
- int64 content_length); |
- |
- DataReductionProxyConfig* data_reduction_proxy_config_; |
- |
- UnreachableCallback unreachable_callback_; |
- |
- // The last reason for bypass as determined by |
- // MaybeBypassProxyAndPrepareToRetry |
- DataReductionProxyBypassType last_bypass_type_; |
- // True if the last request triggered the current bypass. |
- bool triggering_request_; |
- const scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; |
- |
- // The following 2 fields are used to determine if data reduction proxy is |
- // unreachable. We keep a count of requests which should go through |
- // data request proxy, as well as those which actually do. The proxy is |
- // unreachable if no successful requests are made through it despite a |
- // non-zero number of requests being eligible. |
- |
- // Count of successful requests through the data reduction proxy. |
- unsigned long successful_requests_through_proxy_count_; |
- |
- // Count of network errors encountered when connecting to a data reduction |
- // proxy. |
- unsigned long proxy_net_errors_count_; |
- |
- // Whether or not the data reduction proxy is unavailable. |
- bool unavailable_; |
- |
- base::ThreadChecker thread_checker_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DataReductionProxyUsageStats); |
-}; |
- |
-} // namespace data_reduction_proxy |
- |
-#endif // COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_USAGE_STATS_H_ |