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

Side by Side Diff: net/proxy/proxy_service.h

Issue 298883011: Record errors that trigger a data reduction proxy bypass (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments 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 unified diff | Download patch
OLDNEW
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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 // to ResolveProxy. The semantics of this call are otherwise similar to 135 // to ResolveProxy. The semantics of this call are otherwise similar to
136 // ResolveProxy. 136 // ResolveProxy.
137 // 137 //
138 // NULL can be passed for |pac_request| if the caller will not need to 138 // NULL can be passed for |pac_request| if the caller will not need to
139 // cancel the request. 139 // cancel the request.
140 // 140 //
141 // Returns ERR_FAILED if there is not another proxy config to try. 141 // Returns ERR_FAILED if there is not another proxy config to try.
142 // 142 //
143 // Profiling information for the request is saved to |net_log| if non-NULL. 143 // Profiling information for the request is saved to |net_log| if non-NULL.
144 int ReconsiderProxyAfterError(const GURL& url, 144 int ReconsiderProxyAfterError(const GURL& url,
145 int net_error,
mef 2014/05/28 15:39:57 please add comment in regards to usage of |net_err
bengr 2014/05/29 16:09:48 Done.
145 ProxyInfo* results, 146 ProxyInfo* results,
146 const CompletionCallback& callback, 147 const CompletionCallback& callback,
147 PacRequest** pac_request, 148 PacRequest** pac_request,
148 const BoundNetLog& net_log); 149 const BoundNetLog& net_log);
149 150
150 // Explicitly trigger proxy fallback for the given |results| by updating our 151 // Explicitly trigger proxy fallback for the given |results| by updating our
151 // list of bad proxies to include the first entry of |results|, and, 152 // list of bad proxies to include the first entry of |results|, and,
152 // optionally, another bad proxy. Will retry after |retry_delay| if positive, 153 // optionally, another bad proxy. Will retry after |retry_delay| if positive,
153 // and will use the default proxy retry duration otherwise. Proxies marked as 154 // 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 155 // 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
279 280
280 // Bypass the proxy because of an internal server error. 281 // Bypass the proxy because of an internal server error.
281 INTERNAL_SERVER_ERROR_BYPASS, 282 INTERNAL_SERVER_ERROR_BYPASS,
282 283
283 // Bypass the proxy because of any other error. 284 // Bypass the proxy because of any other error.
284 ERROR_BYPASS, 285 ERROR_BYPASS,
285 286
286 // Bypass the proxy because responses appear not to be coming via it. 287 // Bypass the proxy because responses appear not to be coming via it.
287 MISSING_VIA_HEADER, 288 MISSING_VIA_HEADER,
288 289
290 // Bypass the proxy because the proxy, not the origin, sent a 4xx response.
291 PROXY_4XX_BYPASS,
292
289 // This must always be last. 293 // This must always be last.
290 BYPASS_EVENT_TYPE_MAX 294 BYPASS_EVENT_TYPE_MAX
291 }; 295 };
292 296
293 // Records a |DataReductionProxyBypassEventType| for either the data reduction 297 // Records a |DataReductionProxyBypassEventType| for either the data reduction
294 // proxy (|is_primary| is true) or the data reduction proxy fallback. 298 // proxy (|is_primary| is true) or the data reduction proxy fallback.
295 void RecordDataReductionProxyBypassInfo( 299 void RecordDataReductionProxyBypassInfo(
296 bool is_primary, 300 bool is_primary,
297 const ProxyServer& proxy_server, 301 const ProxyServer& proxy_server,
298 DataReductionProxyBypassEventType bypass_type) const; 302 DataReductionProxyBypassEventType bypass_type) const;
303
304 // Records a net error code that resulted in bypassing the data reduction
305 // proxy (|is_primary| is true) or the data reduction proxy fallback.
306 void RecordDataReductionProxyBypassOnNetworkError(
307 bool is_primary,
308 const ProxyServer& proxy_server,
309 int net_error);
299 #endif 310 #endif
300 311
301 private: 312 private:
302 FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigAfterFailedAutodetect); 313 FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigAfterFailedAutodetect);
303 FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigFromPACToDirect); 314 FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigFromPACToDirect);
304 friend class PacRequest; 315 friend class PacRequest;
305 class InitProxyResolver; 316 class InitProxyResolver;
306 class ProxyScriptDeciderPoller; 317 class ProxyScriptDeciderPoller;
307 318
308 // TODO(eroman): change this to a std::set. Note that this requires updating 319 // 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
451 class NET_EXPORT SyncProxyServiceHelper 462 class NET_EXPORT SyncProxyServiceHelper
452 : public base::RefCountedThreadSafe<SyncProxyServiceHelper> { 463 : public base::RefCountedThreadSafe<SyncProxyServiceHelper> {
453 public: 464 public:
454 SyncProxyServiceHelper(base::MessageLoop* io_message_loop, 465 SyncProxyServiceHelper(base::MessageLoop* io_message_loop,
455 ProxyService* proxy_service); 466 ProxyService* proxy_service);
456 467
457 int ResolveProxy(const GURL& url, 468 int ResolveProxy(const GURL& url,
458 ProxyInfo* proxy_info, 469 ProxyInfo* proxy_info,
459 const BoundNetLog& net_log); 470 const BoundNetLog& net_log);
460 int ReconsiderProxyAfterError(const GURL& url, 471 int ReconsiderProxyAfterError(const GURL& url,
472 int net_error,
461 ProxyInfo* proxy_info, 473 ProxyInfo* proxy_info,
462 const BoundNetLog& net_log); 474 const BoundNetLog& net_log);
463 475
464 private: 476 private:
465 friend class base::RefCountedThreadSafe<SyncProxyServiceHelper>; 477 friend class base::RefCountedThreadSafe<SyncProxyServiceHelper>;
466 478
467 virtual ~SyncProxyServiceHelper(); 479 virtual ~SyncProxyServiceHelper();
468 480
469 void StartAsyncResolve(const GURL& url, const BoundNetLog& net_log); 481 void StartAsyncResolve(const GURL& url, const BoundNetLog& net_log);
470 void StartAsyncReconsider(const GURL& url, const BoundNetLog& net_log); 482 void StartAsyncReconsider(const GURL& url,
483 int net_error,
484 const BoundNetLog& net_log);
471 485
472 void OnCompletion(int result); 486 void OnCompletion(int result);
473 487
474 base::MessageLoop* io_message_loop_; 488 base::MessageLoop* io_message_loop_;
475 ProxyService* proxy_service_; 489 ProxyService* proxy_service_;
476 490
477 base::WaitableEvent event_; 491 base::WaitableEvent event_;
478 CompletionCallback callback_; 492 CompletionCallback callback_;
479 ProxyInfo proxy_info_; 493 ProxyInfo proxy_info_;
480 int result_; 494 int result_;
481 }; 495 };
482 496
483 } // namespace net 497 } // namespace net
484 498
485 #endif // NET_PROXY_PROXY_SERVICE_H_ 499 #endif // NET_PROXY_PROXY_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698