Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dd177fe56f8aaa06d1dc0127e204e57a402e5ac7 |
--- /dev/null |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h |
@@ -0,0 +1,170 @@ |
+// 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_NETWORK_DELEGATE_H_ |
+#define COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_NETWORK_DELEGATE_H_ |
+ |
+#include "base/basictypes.h" |
+#include "base/memory/ref_counted.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "base/values.h" |
+#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_metrics.h" |
+#include "net/base/wrapping_network_delegate.h" |
+#include "net/proxy/proxy_retry_info.h" |
+ |
+template<class T> class PrefMember; |
+ |
+typedef PrefMember<bool> BooleanPrefMember; |
+ |
+class PrefService; |
+ |
+namespace base { |
+class MessageLoopProxy; |
+} |
+ |
+namespace net { |
+class ProxyConfig; |
+class ProxyInfo; |
+class ProxyServer; |
+class NetworkDelegate; |
+class URLRequest; |
+} |
+ |
+namespace data_reduction_proxy { |
+ |
+class DataReductionProxyAuthRequestHandler; |
+class DataReductionProxyParams; |
+class DataReductionProxyStatisticsPrefs; |
+class DataReductionProxyUsageStats; |
+ |
+class DataReductionProxyNetworkDelegate : public net::WrappingNetworkDelegate { |
bengr
2014/11/18 19:30:56
Please add a comment describing what this class do
megjablon
2014/11/19 19:23:41
Next patch
|
+ public: |
+ DataReductionProxyNetworkDelegate( |
+ scoped_ptr<net::NetworkDelegate> network_delegate); |
+ ~DataReductionProxyNetworkDelegate() override; |
bengr
2014/11/18 19:30:56
I think you want this to be virtual.
megjablon
2014/11/19 19:23:41
Done.
|
+ |
+ // Provides an opportunity to interpose on proxy resolution. Called before |
+ // ProxyService.ResolveProxy() returns. Two proxy configurations are provided |
+ // that specify the data reduction proxy's configuration and the effective |
+ // configuration according to the proxy service, respectively. Retry info is |
+ // presumed to be from the proxy service. |
+ typedef base::Callback<void( |
+ const GURL& url, |
+ int load_flags, |
+ const net::ProxyConfig& data_reduction_proxy_config, |
+ const net::ProxyConfig& proxy_service_proxy_config, |
+ const net::ProxyRetryInfoMap& proxy_retry_info_map, |
+ const DataReductionProxyParams* params, |
+ net::ProxyInfo* result)> OnResolveProxyHandler; |
+ |
+ // Provides an additional proxy configuration that can be consulted after |
+ // proxy resolution. |
+ typedef base::Callback<const net::ProxyConfig&()> ProxyConfigGetter; |
+ |
+ void set_profile_prefs(PrefService* profile_prefs); |
+ |
+ void set_ui_thread_proxy( |
+ scoped_refptr<base::MessageLoopProxy> ui_thread_proxy); |
+ |
+ void set_data_reduction_proxy_enabled_pref( |
+ BooleanPrefMember* data_reduction_proxy_enabled) { |
+ data_reduction_proxy_enabled_ = data_reduction_proxy_enabled; |
+ } |
+ |
+ // |data_reduction_proxy_params_| must outlive this |
+ // DataReductionProxyNetworkDelegate. |
+ void set_data_reduction_proxy_params(DataReductionProxyParams* params) { |
+ data_reduction_proxy_params_ = params; |
+ } |
+ |
+ // |data_reduction_proxy_usage_stats_| must outlive this |
+ // DataReductionProxyNetworkDelegate. |
+ void set_data_reduction_proxy_usage_stats( |
+ DataReductionProxyUsageStats* usage_stats) { |
+ data_reduction_proxy_usage_stats_ = usage_stats; |
+ } |
+ |
+ // |data_reduction_proxy_auth_request_handler_| must outlive this |
+ // DataReductionProxyNetworkDelegate. |
+ void set_data_reduction_proxy_auth_request_handler( |
+ DataReductionProxyAuthRequestHandler* handler) { |
+ data_reduction_proxy_auth_request_handler_ = handler; |
+ } |
+ |
+ // |data_reduction_proxy_statistics_prefs_| must outlive this |
+ // DataReductionProxyNetworkDelegate. |
+ void set_data_reduction_proxy_statistics_prefs( |
+ DataReductionProxyStatisticsPrefs* |
+ statistics_prefs) { |
+ data_reduction_proxy_statistics_prefs_ = statistics_prefs; |
+ } |
+ |
+ void set_on_resolve_proxy_handler(OnResolveProxyHandler handler) { |
bengr
2014/11/18 19:30:56
Can this be a const &?
megjablon
2014/11/19 19:23:41
Done.
|
+ on_resolve_proxy_handler_ = handler; |
+ } |
+ |
+ void set_proxy_config_getter(const ProxyConfigGetter& getter) { |
+ proxy_config_getter_ = getter; |
+ } |
+ |
+ // Creates a Value summary of the persistent state of the network session. |
+ // The caller is responsible for deleting the returned value. |
+ // Must be called on the UI thread. |
+ static base::Value* HistoricNetworkStatsInfoToValue( |
+ PrefService* profile_prefs); |
+ |
+ // Creates a Value summary of the state of the network session. The caller is |
+ // responsible for deleting the returned value. |
+ base::Value* SessionNetworkStatsInfoToValue() const; |
+ |
+ private: |
+ void OnResolveProxyInternal(const GURL& url, |
+ int load_flags, |
+ const net::ProxyService& proxy_service, |
+ net::ProxyInfo* result) override; |
+ void OnProxyFallbackInternal(const net::ProxyServer& bad_proxy, |
+ int net_error) override; |
+ void OnBeforeSendProxyHeadersInternal( |
+ net::URLRequest* request, |
+ const net::ProxyInfo& proxy_info, |
+ net::HttpRequestHeaders* headers) override; |
+ void OnCompletedInternal(net::URLRequest* request, |
bengr
2014/11/18 19:30:56
Add a blank line above and between all methods.
megjablon
2014/11/19 19:23:41
Done.
|
+ bool started) override; |
+ |
+ void AccumulateContentLength(int64 received_payload_byte_count, |
+ int64 original_payload_byte_count, |
+ DataReductionProxyRequestType request_type); |
+ |
+ PrefService* profile_prefs_; |
+ scoped_refptr<base::MessageLoopProxy> ui_thread_proxy_; |
+ |
+ // Total size of all content (excluding headers) that has been received |
+ // over the network. |
+ int64 received_content_length_; |
+ |
+ // Total original size of all content before it was transferred. |
+ int64 original_content_length_; |
+ |
+ //Weak, owned by our owner. |
+ BooleanPrefMember* data_reduction_proxy_enabled_; |
+ |
+ // |data_reduction_proxy_params_| must outlive this |
+ // DataReductionProxyNetworkDelegate. |
+ DataReductionProxyParams* data_reduction_proxy_params_; |
+ // |data_reduction_proxy_usage_stats_| must outlive this |
+ // DataReductionProxyNetworkDelegate. |
+ DataReductionProxyUsageStats* data_reduction_proxy_usage_stats_; |
bengr
2014/11/18 19:30:56
Add a blank line between each member variable.
megjablon
2014/11/19 19:23:41
Done.
|
+ DataReductionProxyAuthRequestHandler* |
+ data_reduction_proxy_auth_request_handler_; |
+ DataReductionProxyStatisticsPrefs* data_reduction_proxy_statistics_prefs_; |
+ |
+ OnResolveProxyHandler on_resolve_proxy_handler_; |
+ ProxyConfigGetter proxy_config_getter_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DataReductionProxyNetworkDelegate); |
+}; |
+ |
+} // namespace data_reduction_proxy |
+ |
+#endif // COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_NETWORK_DELEGATE_H_ |