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

Unified Diff: net/proxy/proxy_service.cc

Issue 332313003: Add Finch experiment for selectively bypassing proxies. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: callback design (not yet done) Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: net/proxy/proxy_service.cc
diff --git a/net/proxy/proxy_service.cc b/net/proxy/proxy_service.cc
index c5cd6ac3354c6630f64426dd938a29d1a00e7ee3..25770d98b941b85f3ce41da875a908a97a6b15f4 100644
--- a/net/proxy/proxy_service.cc
+++ b/net/proxy/proxy_service.cc
@@ -771,7 +771,7 @@ class ProxyService::PacRequest
}
void StartAndCompleteCheckingForSynchronous() {
- int rv = service_->TryToCompleteSynchronously(url_, results_);
+ int rv = service_->TryToCompleteSynchronously(url_, 0, results_);
if (rv == ERR_IO_PENDING)
rv = Start();
if (rv != ERR_IO_PENDING)
@@ -877,10 +877,12 @@ class ProxyService::PacRequest
ProxyService::ProxyService(ProxyConfigService* config_service,
ProxyResolver* resolver,
+ NetworkDelegate* network_delegate,
NetLog* net_log)
: resolver_(resolver),
next_config_id_(1),
- current_state_(STATE_NONE) ,
+ current_state_(STATE_NONE),
+ network_delegate_(network_delegate),
net_log_(net_log),
stall_proxy_auto_config_delay_(TimeDelta::FromMilliseconds(
kDelayAfterNetworkChangesMs)),
@@ -909,7 +911,7 @@ ProxyService* ProxyService::CreateUsingSystemProxyResolver(
ProxyResolver* proxy_resolver = new MultiThreadedProxyResolver(
new ProxyResolverFactoryForSystem(), num_pac_threads);
- return new ProxyService(proxy_config_service, proxy_resolver, net_log);
+ return new ProxyService(proxy_config_service, proxy_resolver, NULL, net_log);
}
// static
@@ -918,6 +920,7 @@ ProxyService* ProxyService::CreateWithoutProxyResolver(
NetLog* net_log) {
return new ProxyService(proxy_config_service,
new ProxyResolverNull(),
+ NULL,
net_log);
}
@@ -944,7 +947,7 @@ ProxyService* ProxyService::CreateDirect() {
ProxyService* ProxyService::CreateDirectWithNetLog(NetLog* net_log) {
// Use direct connections.
return new ProxyService(new ProxyConfigServiceDirect, new ProxyResolverNull,
- net_log);
+ NULL, net_log);
}
// static
@@ -961,10 +964,11 @@ ProxyService* ProxyService::CreateFixedFromPacResult(
return new ProxyService(proxy_config_service.release(),
proxy_resolver.release(),
- NULL);
+ NULL, NULL);
}
int ProxyService::ResolveProxy(const GURL& raw_url,
+ int load_flags,
ProxyInfo* result,
const net::CompletionCallback& callback,
PacRequest** pac_request,
@@ -989,10 +993,11 @@ int ProxyService::ResolveProxy(const GURL& raw_url,
// Check if the request can be completed right away. (This is the case when
// using a direct connection for example).
- int rv = TryToCompleteSynchronously(url, result);
+ int rv = TryToCompleteSynchronously(url, load_flags, result);
if (rv != ERR_IO_PENDING)
return DidFinishResolvingProxy(result, rv, net_log);
+ // TODO(rcs): add load_flags to PacRequest.
mmenke 2014/06/27 18:59:35 Flywheel requests always go through a PAC currentl
rcs 2014/06/28 03:53:38 I ran this (a few days) without adding load_flags
rcs 2014/06/28 04:01:04 *a few days ago
rcs 2014/06/30 19:46:31 I verified that data compression proxy requests do
scoped_refptr<PacRequest> req(
new PacRequest(this, url, result, callback, net_log));
@@ -1017,6 +1022,7 @@ int ProxyService::ResolveProxy(const GURL& raw_url,
}
int ProxyService::TryToCompleteSynchronously(const GURL& url,
+ int load_flags,
ProxyInfo* result) {
DCHECK_NE(STATE_NONE, current_state_);
@@ -1037,6 +1043,13 @@ int ProxyService::TryToCompleteSynchronously(const GURL& url,
config_.proxy_rules().Apply(url, result);
result->config_source_ = config_.source();
result->config_id_ = config_.id();
+
+ // Allow the network delegate to interpose on the resolution decision,
+ // possibly modifying the ProxyInfo.
+ if (network_delegate_) {
+ network_delegate_->NotifyResolveProxy(url, load_flags, result);
+ }
+
return OK;
}
@@ -1183,7 +1196,7 @@ int ProxyService::ReconsiderProxyAfterError(const GURL& url,
// If we have a new config or the config was never tried, we delete the
// list of bad proxies and we try again.
proxy_retry_info_.clear();
- return ResolveProxy(url, result, callback, pac_request, net_log);
+ return ResolveProxy(url, 0, result, callback, pac_request, net_log);
}
#if defined(SPDY_PROXY_AUTH_ORIGIN)
@@ -1623,7 +1636,7 @@ SyncProxyServiceHelper::~SyncProxyServiceHelper() {}
void SyncProxyServiceHelper::StartAsyncResolve(const GURL& url,
const BoundNetLog& net_log) {
result_ = proxy_service_->ResolveProxy(
- url, &proxy_info_, callback_, NULL, net_log);
+ url, 0, &proxy_info_, callback_, NULL, net_log);
if (result_ != net::ERR_IO_PENDING) {
OnCompletion(result_);
}

Powered by Google App Engine
This is Rietveld 408576698