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 #ifndef NET_PROXY_PROXY_SERVICE_H_ | 5 #ifndef NET_PROXY_PROXY_SERVICE_H_ |
6 #define NET_PROXY_PROXY_SERVICE_H_ | 6 #define NET_PROXY_PROXY_SERVICE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 // Profiling information for the request is saved to |net_log| if non-NULL. | 125 // Profiling information for the request is saved to |net_log| if non-NULL. |
126 int ResolveProxy(const GURL& url, | 126 int ResolveProxy(const GURL& url, |
127 ProxyInfo* results, | 127 ProxyInfo* results, |
128 const net::CompletionCallback& callback, | 128 const net::CompletionCallback& callback, |
129 PacRequest** pac_request, | 129 PacRequest** pac_request, |
130 const BoundNetLog& net_log); | 130 const BoundNetLog& net_log); |
131 | 131 |
132 // This method is called after a failure to connect or resolve a host name. | 132 // This method is called after a failure to connect or resolve a host name. |
133 // It gives the proxy service an opportunity to reconsider the proxy to use. | 133 // It gives the proxy service an opportunity to reconsider the proxy to use. |
134 // The |results| parameter contains the results returned by an earlier call | 134 // The |results| parameter contains the results returned by an earlier call |
135 // to ResolveProxy. The semantics of this call are otherwise similar to | 135 // to ResolveProxy. The |net_error| parameter contains the network error |
136 // ResolveProxy. | 136 // code associated with the failure. See "net/base/net_error_list.h" for a |
| 137 // list of possible values. The semantics of this call are otherwise |
| 138 // similar to ResolveProxy. |
137 // | 139 // |
138 // NULL can be passed for |pac_request| if the caller will not need to | 140 // NULL can be passed for |pac_request| if the caller will not need to |
139 // cancel the request. | 141 // cancel the request. |
140 // | 142 // |
141 // Returns ERR_FAILED if there is not another proxy config to try. | 143 // Returns ERR_FAILED if there is not another proxy config to try. |
142 // | 144 // |
143 // Profiling information for the request is saved to |net_log| if non-NULL. | 145 // Profiling information for the request is saved to |net_log| if non-NULL. |
144 int ReconsiderProxyAfterError(const GURL& url, | 146 int ReconsiderProxyAfterError(const GURL& url, |
| 147 int net_error, |
145 ProxyInfo* results, | 148 ProxyInfo* results, |
146 const CompletionCallback& callback, | 149 const CompletionCallback& callback, |
147 PacRequest** pac_request, | 150 PacRequest** pac_request, |
148 const BoundNetLog& net_log); | 151 const BoundNetLog& net_log); |
149 | 152 |
150 // Explicitly trigger proxy fallback for the given |results| by updating our | 153 // Explicitly trigger proxy fallback for the given |results| by updating our |
151 // list of bad proxies to include the first entry of |results|, and, | 154 // list of bad proxies to include the first entry of |results|, and, |
152 // optionally, another bad proxy. Will retry after |retry_delay| if positive, | 155 // optionally, another bad proxy. Will retry after |retry_delay| if positive, |
153 // and will use the default proxy retry duration otherwise. Proxies marked as | 156 // and will use the default proxy retry duration otherwise. Proxies marked as |
154 // bad will not be retried until |retry_delay| has passed. Returns true if | 157 // bad will not be retried until |retry_delay| has passed. Returns true if |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 | 282 |
280 // Bypass the proxy because of an internal server error. | 283 // Bypass the proxy because of an internal server error. |
281 INTERNAL_SERVER_ERROR_BYPASS, | 284 INTERNAL_SERVER_ERROR_BYPASS, |
282 | 285 |
283 // Bypass the proxy because of any other error. | 286 // Bypass the proxy because of any other error. |
284 ERROR_BYPASS, | 287 ERROR_BYPASS, |
285 | 288 |
286 // Bypass the proxy because responses appear not to be coming via it. | 289 // Bypass the proxy because responses appear not to be coming via it. |
287 MISSING_VIA_HEADER, | 290 MISSING_VIA_HEADER, |
288 | 291 |
| 292 // Bypass the proxy because the proxy, not the origin, sent a 4xx response. |
| 293 PROXY_4XX_BYPASS, |
| 294 |
289 // This must always be last. | 295 // This must always be last. |
290 BYPASS_EVENT_TYPE_MAX | 296 BYPASS_EVENT_TYPE_MAX |
291 }; | 297 }; |
292 | 298 |
293 // Records a |DataReductionProxyBypassEventType| for either the data reduction | 299 // Records a |DataReductionProxyBypassEventType| for either the data reduction |
294 // proxy (|is_primary| is true) or the data reduction proxy fallback. | 300 // proxy (|is_primary| is true) or the data reduction proxy fallback. |
295 void RecordDataReductionProxyBypassInfo( | 301 void RecordDataReductionProxyBypassInfo( |
296 bool is_primary, | 302 bool is_primary, |
297 const ProxyServer& proxy_server, | 303 const ProxyServer& proxy_server, |
298 DataReductionProxyBypassEventType bypass_type) const; | 304 DataReductionProxyBypassEventType bypass_type) const; |
| 305 |
| 306 // Records a net error code that resulted in bypassing the data reduction |
| 307 // proxy (|is_primary| is true) or the data reduction proxy fallback. |
| 308 void RecordDataReductionProxyBypassOnNetworkError( |
| 309 bool is_primary, |
| 310 const ProxyServer& proxy_server, |
| 311 int net_error); |
299 #endif | 312 #endif |
300 | 313 |
301 private: | 314 private: |
302 FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigAfterFailedAutodetect); | 315 FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigAfterFailedAutodetect); |
303 FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigFromPACToDirect); | 316 FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigFromPACToDirect); |
304 friend class PacRequest; | 317 friend class PacRequest; |
305 class InitProxyResolver; | 318 class InitProxyResolver; |
306 class ProxyScriptDeciderPoller; | 319 class ProxyScriptDeciderPoller; |
307 | 320 |
308 // TODO(eroman): change this to a std::set. Note that this requires updating | 321 // TODO(eroman): change this to a std::set. Note that this requires updating |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
451 class NET_EXPORT SyncProxyServiceHelper | 464 class NET_EXPORT SyncProxyServiceHelper |
452 : public base::RefCountedThreadSafe<SyncProxyServiceHelper> { | 465 : public base::RefCountedThreadSafe<SyncProxyServiceHelper> { |
453 public: | 466 public: |
454 SyncProxyServiceHelper(base::MessageLoop* io_message_loop, | 467 SyncProxyServiceHelper(base::MessageLoop* io_message_loop, |
455 ProxyService* proxy_service); | 468 ProxyService* proxy_service); |
456 | 469 |
457 int ResolveProxy(const GURL& url, | 470 int ResolveProxy(const GURL& url, |
458 ProxyInfo* proxy_info, | 471 ProxyInfo* proxy_info, |
459 const BoundNetLog& net_log); | 472 const BoundNetLog& net_log); |
460 int ReconsiderProxyAfterError(const GURL& url, | 473 int ReconsiderProxyAfterError(const GURL& url, |
| 474 int net_error, |
461 ProxyInfo* proxy_info, | 475 ProxyInfo* proxy_info, |
462 const BoundNetLog& net_log); | 476 const BoundNetLog& net_log); |
463 | 477 |
464 private: | 478 private: |
465 friend class base::RefCountedThreadSafe<SyncProxyServiceHelper>; | 479 friend class base::RefCountedThreadSafe<SyncProxyServiceHelper>; |
466 | 480 |
467 virtual ~SyncProxyServiceHelper(); | 481 virtual ~SyncProxyServiceHelper(); |
468 | 482 |
469 void StartAsyncResolve(const GURL& url, const BoundNetLog& net_log); | 483 void StartAsyncResolve(const GURL& url, const BoundNetLog& net_log); |
470 void StartAsyncReconsider(const GURL& url, const BoundNetLog& net_log); | 484 void StartAsyncReconsider(const GURL& url, |
| 485 int net_error, |
| 486 const BoundNetLog& net_log); |
471 | 487 |
472 void OnCompletion(int result); | 488 void OnCompletion(int result); |
473 | 489 |
474 base::MessageLoop* io_message_loop_; | 490 base::MessageLoop* io_message_loop_; |
475 ProxyService* proxy_service_; | 491 ProxyService* proxy_service_; |
476 | 492 |
477 base::WaitableEvent event_; | 493 base::WaitableEvent event_; |
478 CompletionCallback callback_; | 494 CompletionCallback callback_; |
479 ProxyInfo proxy_info_; | 495 ProxyInfo proxy_info_; |
480 int result_; | 496 int result_; |
481 }; | 497 }; |
482 | 498 |
483 } // namespace net | 499 } // namespace net |
484 | 500 |
485 #endif // NET_PROXY_PROXY_SERVICE_H_ | 501 #endif // NET_PROXY_PROXY_SERVICE_H_ |
OLD | NEW |