summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authorbengr@chromium.org <bengr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-13 13:17:15 +0000
committerbengr@chromium.org <bengr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-13 13:17:15 +0000
commitd8fc4720c06d9e57d5fd98d6d6b723fffddbe159 (patch)
tree665d9568104f3bfe1330e7d7b567cbe8c5d003d3 /android_webview
parenta2d6ed8e40f2747490558f311c438fa0245d262a (diff)
downloadchromium_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.cc10
-rw-r--r--android_webview/browser/net/aw_network_delegate.h12
-rw-r--r--android_webview/browser/net/aw_url_request_context_getter.cc5
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.