| Index: net/url_request/url_request_throttler_entry.h
|
| diff --git a/net/url_request/url_request_throttler_entry.h b/net/url_request/url_request_throttler_entry.h
|
| index cefe8d25b5017cb408a305a8b218d4a5bb6f9d6c..cff20d2f8e1ca857a208b7bf8ff6ec9beef88422 100644
|
| --- a/net/url_request/url_request_throttler_entry.h
|
| +++ b/net/url_request/url_request_throttler_entry.h
|
| @@ -4,11 +4,13 @@
|
|
|
| #ifndef NET_URL_REQUEST_URL_REQUEST_THROTTLER_ENTRY_H_
|
| #define NET_URL_REQUEST_URL_REQUEST_THROTTLER_ENTRY_H_
|
| +#pragma once
|
|
|
| #include <queue>
|
| #include <string>
|
|
|
| #include "base/basictypes.h"
|
| +#include "net/base/backoff_entry.h"
|
| #include "net/url_request/url_request_throttler_entry_interface.h"
|
|
|
| namespace net {
|
| @@ -35,9 +37,6 @@ class URLRequestThrottlerEntry : public URLRequestThrottlerEntryInterface {
|
| // Initial delay for exponential back-off.
|
| static const int kDefaultInitialBackoffMs;
|
|
|
| - // Additional constant to adjust back-off.
|
| - static const int kDefaultAdditionalConstantMs;
|
| -
|
| // Factor by which the waiting time will be multiplied.
|
| static const double kDefaultMultiplyFactor;
|
|
|
| @@ -63,7 +62,6 @@ class URLRequestThrottlerEntry : public URLRequestThrottlerEntryInterface {
|
| URLRequestThrottlerEntry(int sliding_window_period_ms,
|
| int max_send_threshold,
|
| int initial_backoff_ms,
|
| - int additional_constant_ms,
|
| double multiply_factor,
|
| double jitter_factor,
|
| int maximum_backoff_ms);
|
| @@ -80,27 +78,22 @@ class URLRequestThrottlerEntry : public URLRequestThrottlerEntryInterface {
|
| virtual void UpdateWithResponse(
|
| const URLRequestThrottlerHeaderInterface* response);
|
| virtual void ReceivedContentWasMalformed();
|
| - virtual void SetEntryLifetimeMsForTest(int lifetime_ms);
|
|
|
| protected:
|
| virtual ~URLRequestThrottlerEntry();
|
|
|
| void Initialize();
|
|
|
| - // Calculates the release time for exponential back-off.
|
| - base::TimeTicks CalculateExponentialBackoffReleaseTime();
|
| -
|
| // Equivalent to TimeTicks::Now(), virtual to be mockable for testing purpose.
|
| virtual base::TimeTicks GetTimeNow() const;
|
|
|
| // Used internally to increase release time following a retry-after header.
|
| void HandleCustomRetryAfter(const std::string& header_value);
|
|
|
| - // Used by tests.
|
| - void set_exponential_backoff_release_time(
|
| - const base::TimeTicks& release_time) {
|
| - exponential_backoff_release_time_ = release_time;
|
| - }
|
| + // Retrieves the backoff entry object we're using. Used to enable a
|
| + // unit testing seam for dependency injection in tests.
|
| + virtual const BackoffEntry* GetBackoffEntry() const;
|
| + virtual BackoffEntry* GetBackoffEntry();
|
|
|
| // Used by tests.
|
| base::TimeTicks sliding_window_release_time() const {
|
| @@ -112,25 +105,10 @@ class URLRequestThrottlerEntry : public URLRequestThrottlerEntryInterface {
|
| sliding_window_release_time_ = release_time;
|
| }
|
|
|
| - // Used by tests.
|
| - void set_failure_count(int failure_count) {
|
| - failure_count_ = failure_count;
|
| - }
|
| + // Valid and immutable after construction time.
|
| + BackoffEntry::Policy backoff_policy_;
|
|
|
| private:
|
| - // Timestamp calculated by the exponential back-off algorithm at which we are
|
| - // allowed to start sending requests again.
|
| - base::TimeTicks exponential_backoff_release_time_;
|
| -
|
| - // Number of times we encounter server errors or malformed response bodies.
|
| - int failure_count_;
|
| -
|
| - // If true, the last request response was a failure.
|
| - // Note that this member can be false at the same time as failure_count_ can
|
| - // be greater than 0, since we gradually decrease failure_count_, instead of
|
| - // resetting it to 0 directly, when we receive successful responses.
|
| - bool latest_response_was_failure_;
|
| -
|
| // Timestamp calculated by the sliding window algorithm for when we advise
|
| // clients the next request should be made, at the earliest. Advisory only,
|
| // not used to deny requests.
|
| @@ -142,13 +120,9 @@ class URLRequestThrottlerEntry : public URLRequestThrottlerEntryInterface {
|
|
|
| const base::TimeDelta sliding_window_period_;
|
| const int max_send_threshold_;
|
| - const int initial_backoff_ms_;
|
| - const int additional_constant_ms_;
|
| - const double multiply_factor_;
|
| - const double jitter_factor_;
|
| - const int maximum_backoff_ms_;
|
| - // Set to -1 if the entry never expires.
|
| - int entry_lifetime_ms_;
|
| +
|
| + // Access it through backoff_entry() to allow a unit test seam.
|
| + BackoffEntry backoff_entry_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(URLRequestThrottlerEntry);
|
| };
|
|
|