| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "net/proxy/proxy_service.h" | 5 #include "net/proxy/proxy_service.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 1188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1199 | 1199 |
| 1200 bool re_resolve = result->config_id_ != config_.id(); | 1200 bool re_resolve = result->config_id_ != config_.id(); |
| 1201 | 1201 |
| 1202 if (re_resolve) { | 1202 if (re_resolve) { |
| 1203 // If we have a new config or the config was never tried, we delete the | 1203 // If we have a new config or the config was never tried, we delete the |
| 1204 // list of bad proxies and we try again. | 1204 // list of bad proxies and we try again. |
| 1205 proxy_retry_info_.clear(); | 1205 proxy_retry_info_.clear(); |
| 1206 return ResolveProxy(url, load_flags, result, callback, pac_request, | 1206 return ResolveProxy(url, load_flags, result, callback, pac_request, |
| 1207 network_delegate, net_log); | 1207 network_delegate, net_log); |
| 1208 } | 1208 } |
| 1209 | 1209 const net::ProxyServer& proxy_server = result->proxy_server(); |
| 1210 #if defined(SPDY_PROXY_AUTH_ORIGIN) | 1210 if (proxy_server.is_valid() && !proxy_server.is_direct()) { |
| 1211 if (result->proxy_server().isDataReductionProxy()) { | 1211 if (proxy_server.host_port_pair().Equals( |
| 1212 RecordDataReductionProxyBypassInfo( | 1212 data_reduction_default_origin_)) { |
| 1213 true, false, result->proxy_server(), NETWORK_ERROR); | 1213 RecordDataReductionProxyBypassInfo( |
| 1214 RecordDataReductionProxyBypassOnNetworkError( | 1214 true, false, proxy_server, NETWORK_ERROR); |
| 1215 true, result->proxy_server(), net_error); | 1215 RecordDataReductionProxyBypassOnNetworkError( |
| 1216 } else if (result->proxy_server().isDataReductionProxyFallback()) { | 1216 true, proxy_server, net_error); |
| 1217 RecordDataReductionProxyBypassInfo( | 1217 } else if (proxy_server.host_port_pair().Equals( |
| 1218 false, false, result->proxy_server(), NETWORK_ERROR); | 1218 data_reduction_default_fallback_origin_)) { |
| 1219 RecordDataReductionProxyBypassOnNetworkError( | 1219 RecordDataReductionProxyBypassInfo( |
| 1220 false, result->proxy_server(), net_error); | 1220 false, false, proxy_server, NETWORK_ERROR); |
| 1221 RecordDataReductionProxyBypassOnNetworkError( |
| 1222 false, proxy_server, net_error); |
| 1223 } |
| 1221 } | 1224 } |
| 1222 #endif | |
| 1223 | 1225 |
| 1224 // We don't have new proxy settings to try, try to fallback to the next proxy | 1226 // We don't have new proxy settings to try, try to fallback to the next proxy |
| 1225 // in the list. | 1227 // in the list. |
| 1226 bool did_fallback = result->Fallback(net_log); | 1228 bool did_fallback = result->Fallback(net_log); |
| 1227 | 1229 |
| 1228 // Return synchronous failure if there is nothing left to fall-back to. | 1230 // Return synchronous failure if there is nothing left to fall-back to. |
| 1229 // TODO(eroman): This is a yucky API, clean it up. | 1231 // TODO(eroman): This is a yucky API, clean it up. |
| 1230 return did_fallback ? OK : ERR_FAILED; | 1232 return did_fallback ? OK : ERR_FAILED; |
| 1231 } | 1233 } |
| 1232 | 1234 |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1391 if (previous_state != STATE_NONE) | 1393 if (previous_state != STATE_NONE) |
| 1392 ApplyProxyConfigIfAvailable(); | 1394 ApplyProxyConfigIfAvailable(); |
| 1393 } | 1395 } |
| 1394 | 1396 |
| 1395 void ProxyService::ForceReloadProxyConfig() { | 1397 void ProxyService::ForceReloadProxyConfig() { |
| 1396 DCHECK(CalledOnValidThread()); | 1398 DCHECK(CalledOnValidThread()); |
| 1397 ResetProxyConfig(false); | 1399 ResetProxyConfig(false); |
| 1398 ApplyProxyConfigIfAvailable(); | 1400 ApplyProxyConfigIfAvailable(); |
| 1399 } | 1401 } |
| 1400 | 1402 |
| 1403 void ProxyService::SetDataReductionProxyOrigins( |
| 1404 const std::string& data_reduction_default_origin, |
| 1405 const std::string& data_reduction_default_fallback_origin) { |
| 1406 DCHECK(CalledOnValidThread()); |
| 1407 data_reduction_default_origin_ = |
| 1408 net::HostPortPair::FromURL(GURL(data_reduction_default_origin)); |
| 1409 data_reduction_default_fallback_origin_ = |
| 1410 net::HostPortPair::FromURL(GURL(data_reduction_default_fallback_origin)); |
| 1411 |
| 1412 } |
| 1413 |
| 1401 // static | 1414 // static |
| 1402 ProxyConfigService* ProxyService::CreateSystemProxyConfigService( | 1415 ProxyConfigService* ProxyService::CreateSystemProxyConfigService( |
| 1403 base::SingleThreadTaskRunner* io_thread_task_runner, | 1416 base::SingleThreadTaskRunner* io_thread_task_runner, |
| 1404 base::MessageLoop* file_loop) { | 1417 base::MessageLoop* file_loop) { |
| 1405 #if defined(OS_WIN) | 1418 #if defined(OS_WIN) |
| 1406 return new ProxyConfigServiceWin(); | 1419 return new ProxyConfigServiceWin(); |
| 1407 #elif defined(OS_IOS) | 1420 #elif defined(OS_IOS) |
| 1408 return new ProxyConfigServiceIOS(); | 1421 return new ProxyConfigServiceIOS(); |
| 1409 #elif defined(OS_MACOSX) | 1422 #elif defined(OS_MACOSX) |
| 1410 return new ProxyConfigServiceMac(io_thread_task_runner); | 1423 return new ProxyConfigServiceMac(io_thread_task_runner); |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1610 State previous_state = ResetProxyConfig(false); | 1623 State previous_state = ResetProxyConfig(false); |
| 1611 if (previous_state != STATE_NONE) | 1624 if (previous_state != STATE_NONE) |
| 1612 ApplyProxyConfigIfAvailable(); | 1625 ApplyProxyConfigIfAvailable(); |
| 1613 } | 1626 } |
| 1614 | 1627 |
| 1615 void ProxyService::OnDNSChanged() { | 1628 void ProxyService::OnDNSChanged() { |
| 1616 OnIPAddressChanged(); | 1629 OnIPAddressChanged(); |
| 1617 } | 1630 } |
| 1618 | 1631 |
| 1619 } // namespace net | 1632 } // namespace net |
| OLD | NEW |