| Index: net/url_request/url_fetcher_core.h
|
| diff --git a/net/url_request/url_fetcher_core.h b/net/url_request/url_fetcher_core.h
|
| index 4b258e5384c380e611447da09d29d79838b678d1..67589c481c2f701e077c7877a009effec04efbcf 100644
|
| --- a/net/url_request/url_fetcher_core.h
|
| +++ b/net/url_request/url_fetcher_core.h
|
| @@ -20,6 +20,7 @@
|
| #include "base/timer.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "net/base/host_port_pair.h"
|
| +#include "net/base/network_change_notifier.h"
|
| #include "net/http/http_request_headers.h"
|
| #include "net/url_request/url_fetcher.h"
|
| #include "net/url_request/url_request.h"
|
| @@ -38,7 +39,8 @@ class URLRequestThrottlerEntryInterface;
|
|
|
| class URLFetcherCore
|
| : public base::RefCountedThreadSafe<URLFetcherCore>,
|
| - public URLRequest::Delegate {
|
| + public URLRequest::Delegate,
|
| + public NetworkChangeNotifier::ConnectionTypeObserver {
|
| public:
|
| URLFetcherCore(URLFetcher* fetcher,
|
| const GURL& original_url,
|
| @@ -86,9 +88,10 @@ class URLFetcherCore
|
| const URLFetcher::CreateDataCallback& create_data_callback);
|
| void SetStopOnRedirect(bool stop_on_redirect);
|
| void SetAutomaticallyRetryOn5xx(bool retry);
|
| - void SetMaxRetries(int max_retries);
|
| - int GetMaxRetries() const;
|
| + void SetMaxRetriesOn5xx(int max_retries);
|
| + int GetMaxRetriesOn5xx() const;
|
| base::TimeDelta GetBackoffDelay() const;
|
| + void SetAutomaticallyRetryOnNetworkChanges(int max_retries);
|
| void SaveResponseToFileAtPath(
|
| const FilePath& file_path,
|
| scoped_refptr<base::TaskRunner> file_task_runner);
|
| @@ -122,6 +125,10 @@ class URLFetcherCore
|
| virtual void OnReadCompleted(URLRequest* request,
|
| int bytes_read) OVERRIDE;
|
|
|
| + // Overridden from NetworkChangeNotifier::ConnectionTypeObserver:
|
| + virtual void OnConnectionTypeChanged(
|
| + NetworkChangeNotifier::ConnectionType type) OVERRIDE;
|
| +
|
| URLFetcherDelegate* delegate() const { return delegate_; }
|
| static void CancelAll();
|
| static int GetNumFetcherCores();
|
| @@ -352,11 +359,6 @@ class URLFetcherCore
|
| original_url_throttler_entry_;
|
| scoped_refptr<URLRequestThrottlerEntryInterface> url_throttler_entry_;
|
|
|
| - // |num_retries_| indicates how many times we've failed to successfully
|
| - // fetch this URL. Once this value exceeds the maximum number of retries
|
| - // specified by the owner URLFetcher instance, we'll give up.
|
| - int num_retries_;
|
| -
|
| // True if the URLFetcher has been cancelled.
|
| bool was_cancelled_;
|
|
|
| @@ -384,11 +386,22 @@ class URLFetcherCore
|
| // re-execute the request, after the back-off delay has expired.
|
| // true by default.
|
| bool automatically_retry_on_5xx_;
|
| - // Maximum retries allowed.
|
| - int max_retries_;
|
| + // |num_retries_on_5xx_| indicates how many times we've failed to successfully
|
| + // fetch this URL due to 5xx responses. Once this value exceeds the maximum
|
| + // number of retries specified by the owner URLFetcher instance,
|
| + // we'll give up.
|
| + int num_retries_on_5xx_;
|
| + // Maximum retries allowed when 5xx responses are received.
|
| + int max_retries_on_5xx_;
|
| // Back-off time delay. 0 by default.
|
| base::TimeDelta backoff_delay_;
|
|
|
| + // The number of retries that have been attempted due to ERR_NETWORK_CHANGED.
|
| + int num_retries_on_network_changes_;
|
| + // Maximum retries allowed when the request fails with ERR_NETWORK_CHANGED.
|
| + // 0 by default.
|
| + int max_retries_on_network_changes_;
|
| +
|
| // Timer to poll the progress of uploading for POST and PUT requests.
|
| // When crbug.com/119629 is fixed, scoped_ptr is not necessary here.
|
| scoped_ptr<base::RepeatingTimer<URLFetcherCore> >
|
|
|