Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.cc

Issue 30883003: Simple fallback implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@patched
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h" 5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h"
6 6
7 #include "base/android/build_info.h" 7 #include "base/android/build_info.h"
8 #include "base/android/jni_android.h" 8 #include "base/android/jni_android.h"
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 // New values should be added at the end before |NUM_SPDY_PROXY_AUTH_STATE|. 48 // New values should be added at the end before |NUM_SPDY_PROXY_AUTH_STATE|.
49 enum { 49 enum {
50 CHROME_STARTUP, 50 CHROME_STARTUP,
51 SPDY_PROXY_AUTH_ON_AT_STARTUP, 51 SPDY_PROXY_AUTH_ON_AT_STARTUP,
52 SPDY_PROXY_AUTH_ON_BY_USER, 52 SPDY_PROXY_AUTH_ON_BY_USER,
53 SPDY_PROXY_AUTH_OFF_BY_USER, 53 SPDY_PROXY_AUTH_OFF_BY_USER,
54 // Used by UMA histograms and should always be the last value. 54 // Used by UMA histograms and should always be the last value.
55 NUM_SPDY_PROXY_AUTH_STATE 55 NUM_SPDY_PROXY_AUTH_STATE
56 }; 56 };
57 57
58 std::string ProtocolAndHost(std::string origin) {
bengr 2013/10/20 18:19:31 Please add a comment that describes the format of
59 if (origin.empty()) {
60 return origin;
61 }
62 GURL url = GURL(origin);
63 std::string protocol = url.SchemeIsSecure() ? "HTTPS " : "HTTP ";
64 return protocol + net::HostPortPair::FromURL(url).ToString() + "; ";
65 }
66
58 } // namespace 67 } // namespace
59 68
60 DataReductionProxySettingsAndroid::DataReductionProxySettingsAndroid( 69 DataReductionProxySettingsAndroid::DataReductionProxySettingsAndroid(
61 JNIEnv* env, jobject obj): DataReductionProxySettings() { 70 JNIEnv* env, jobject obj): DataReductionProxySettings() {
62 } 71 }
63 72
64 DataReductionProxySettingsAndroid::~DataReductionProxySettingsAndroid() {} 73 DataReductionProxySettingsAndroid::~DataReductionProxySettingsAndroid() {}
65 74
66 void DataReductionProxySettingsAndroid::InitDataReductionProxySettings( 75 void DataReductionProxySettingsAndroid::InitDataReductionProxySettings(
67 JNIEnv* env, 76 JNIEnv* env,
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 262
254 // TODO(bengr): Replace with our own ProxyResolver. 263 // TODO(bengr): Replace with our own ProxyResolver.
255 std::string DataReductionProxySettingsAndroid::GetProxyPacScript() { 264 std::string DataReductionProxySettingsAndroid::GetProxyPacScript() {
256 // Compose the PAC-only bypass code; these will be URL patterns that 265 // Compose the PAC-only bypass code; these will be URL patterns that
257 // are matched by regular expression. Host bypasses are handled outside 266 // are matched by regular expression. Host bypasses are handled outside
258 // of the PAC file using the regular proxy bypass list configs. 267 // of the PAC file using the regular proxy bypass list configs.
259 std::string bypass_clause = 268 std::string bypass_clause =
260 "(" + JoinString(pac_bypass_rules_, ") || (") + ")"; 269 "(" + JoinString(pac_bypass_rules_, ") || (") + ")";
261 270
262 // Generate a proxy PAC that falls back to direct loading when the proxy is 271 // Generate a proxy PAC that falls back to direct loading when the proxy is
263 // unavailable and only process HTTP traffic. (With a statically configured 272 // unavailable and only process HTTP traffic.
264 // proxy, proxy failures will simply result in a connection error presented to
265 // users.)
266 273
267 std::string proxy_host = 274 std::string proxy_host = ProtocolAndHost(
268 DataReductionProxySettings::GetDataReductionProxyOriginHostPort(); 275 DataReductionProxySettings::GetDataReductionProxyOrigin());
276 std::string fallback_host = ProtocolAndHost(
277 DataReductionProxySettings::GetDataReductionProxyFallback());
269 std::string pac = "function FindProxyForURL(url, host) {" 278 std::string pac = "function FindProxyForURL(url, host) {"
270 " if (" + bypass_clause + ") {" 279 " if (" + bypass_clause + ") {"
271 " return 'DIRECT';" 280 " return 'DIRECT';"
272 " } " 281 " } "
273 " if (url.substring(0, 5) == 'http:') {" 282 " if (url.substring(0, 5) == 'http:') {"
274 " return 'HTTPS " + proxy_host + 283 " return '" + proxy_host + fallback_host + "DIRECT';"
275 "; DIRECT';"
276 " }" 284 " }"
277 " return 'DIRECT';" 285 " return 'DIRECT';"
278 "}"; 286 "}";
279 return pac; 287 return pac;
280 } 288 }
281 289
282 // Used by generated jni code. 290 // Used by generated jni code.
283 static jint Init(JNIEnv* env, jobject obj) { 291 static jint Init(JNIEnv* env, jobject obj) {
284 DataReductionProxySettingsAndroid* settings = 292 DataReductionProxySettingsAndroid* settings =
285 new DataReductionProxySettingsAndroid(env, obj); 293 new DataReductionProxySettingsAndroid(env, obj);
286 return reinterpret_cast<jint>(settings); 294 return reinterpret_cast<jint>(settings);
287 } 295 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698