diff options
author | bengr@chromium.org <bengr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-13 13:17:15 +0000 |
---|---|---|
committer | bengr@chromium.org <bengr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-13 13:17:15 +0000 |
commit | d8fc4720c06d9e57d5fd98d6d6b723fffddbe159 (patch) | |
tree | 665d9568104f3bfe1330e7d7b567cbe8c5d003d3 /android_webview | |
parent | a2d6ed8e40f2747490558f311c438fa0245d262a (diff) | |
download | chromium_src-d8fc4720c06d9e57d5fd98d6d6b723fffddbe159.zip chromium_src-d8fc4720c06d9e57d5fd98d6d6b723fffddbe159.tar.gz chromium_src-d8fc4720c06d9e57d5fd98d6d6b723fffddbe159.tar.bz2 |
Moved data reduction proxy bypass logic to a NetworkDelegate
BUG=367221
Review URL: https://codereview.chromium.org/286903018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@277009 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
-rw-r--r-- | android_webview/browser/net/aw_network_delegate.cc | 10 | ||||
-rw-r--r-- | android_webview/browser/net/aw_network_delegate.h | 12 | ||||
-rw-r--r-- | android_webview/browser/net/aw_url_request_context_getter.cc | 5 |
3 files changed, 25 insertions, 2 deletions
diff --git a/android_webview/browser/net/aw_network_delegate.cc b/android_webview/browser/net/aw_network_delegate.cc index a18226c..b3fb3fa 100644 --- a/android_webview/browser/net/aw_network_delegate.cc +++ b/android_webview/browser/net/aw_network_delegate.cc @@ -6,13 +6,14 @@ #include "android_webview/browser/aw_cookie_access_policy.h" #include "base/android/build_info.h" +#include "components/data_reduction_proxy/browser/data_reduction_proxy_protocol.h" #include "net/base/net_errors.h" #include "net/base/completion_callback.h" #include "net/url_request/url_request.h" namespace android_webview { -AwNetworkDelegate::AwNetworkDelegate() { +AwNetworkDelegate::AwNetworkDelegate() : data_reduction_proxy_params_(NULL) { } AwNetworkDelegate::~AwNetworkDelegate() { @@ -47,6 +48,13 @@ int AwNetworkDelegate::OnHeadersReceived( const net::HttpResponseHeaders* original_response_headers, scoped_refptr<net::HttpResponseHeaders>* override_response_headers, GURL* allowed_unsafe_redirect_url) { + + data_reduction_proxy::MaybeBypassProxyAndPrepareToRetry( + data_reduction_proxy_params_, + request, + original_response_headers, + override_response_headers); + return net::OK; } diff --git a/android_webview/browser/net/aw_network_delegate.h b/android_webview/browser/net/aw_network_delegate.h index 7b78dda..b325e84 100644 --- a/android_webview/browser/net/aw_network_delegate.h +++ b/android_webview/browser/net/aw_network_delegate.h @@ -6,6 +6,7 @@ #define ANDROID_WEBVIEW_BROWSER_NET_AW_NETWORK_DELEGATE_H_ #include "base/basictypes.h" +#include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h" #include "net/base/network_delegate.h" namespace android_webview { @@ -16,6 +17,14 @@ class AwNetworkDelegate : public net::NetworkDelegate { AwNetworkDelegate(); virtual ~AwNetworkDelegate(); + // Sets the |DataReductionProxySettings| object to use. If not set, the + // NetworkDelegate will not perform any operations related to the data + // reduction proxy. + void set_data_reduction_proxy_params( + data_reduction_proxy::DataReductionProxyParams* params) { + data_reduction_proxy_params_ = params; + } + private: // NetworkDelegate implementation. virtual int OnBeforeURLRequest(net::URLRequest* request, @@ -59,6 +68,9 @@ class AwNetworkDelegate : public net::NetworkDelegate { net::SocketStream* stream, const net::CompletionCallback& callback) OVERRIDE; + // Data reduction proxy parameters object. Must outlive this. + data_reduction_proxy::DataReductionProxyParams* data_reduction_proxy_params_; + DISALLOW_COPY_AND_ASSIGN(AwNetworkDelegate); }; diff --git a/android_webview/browser/net/aw_url_request_context_getter.cc b/android_webview/browser/net/aw_url_request_context_getter.cc index 50ea9f9..ceb361f 100644 --- a/android_webview/browser/net/aw_url_request_context_getter.cc +++ b/android_webview/browser/net/aw_url_request_context_getter.cc @@ -188,7 +188,8 @@ void AwURLRequestContextGetter::InitializeURLRequestContext() { net::URLRequestContextBuilder builder; builder.set_user_agent(GetUserAgent()); - builder.set_network_delegate(new AwNetworkDelegate()); + AwNetworkDelegate* aw_network_delegate = new AwNetworkDelegate(); + builder.set_network_delegate(aw_network_delegate); #if !defined(DISABLE_FTP_SUPPORT) builder.set_ftp_enabled(false); // Android WebView does not support ftp yet. #endif @@ -228,6 +229,8 @@ void AwURLRequestContextGetter::InitializeURLRequestContext() { DataReductionProxySettings* drp_settings = browser_context->GetDataReductionProxySettings(); if (drp_settings) { + aw_network_delegate->set_data_reduction_proxy_params( + drp_settings->params()); std::string drp_key = drp_settings->params()->key(); // Only precache credentials if a key is available at URLRequestContext // initialization. |