| Index: chrome/browser/safe_browsing/protocol_manager.h
|
| diff --git a/chrome/browser/safe_browsing/protocol_manager.h b/chrome/browser/safe_browsing/protocol_manager.h
|
| index fe354284b81f6e4f91571023dcbbb046a537457c..4e6c6771ef8337da92e823b34d718f2be4bba5a9 100644
|
| --- a/chrome/browser/safe_browsing/protocol_manager.h
|
| +++ b/chrome/browser/safe_browsing/protocol_manager.h
|
| @@ -216,6 +216,8 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
| TestParseV4HashResponseNonPermissionMetadata);
|
| FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest,
|
| TestGetHashBackOffTimes);
|
| + FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest,
|
| + TestGetV4HashBackOffTimes);
|
| FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestNextChunkUrl);
|
| FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestUpdateUrl);
|
| friend class SafeBrowsingServerTest;
|
| @@ -284,6 +286,12 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
| base::TimeDelta GetNextBackOffInterval(size_t* error_count,
|
| size_t* multiplier) const;
|
|
|
| + // Worker function for calculating the V4 GetHash backoff times.
|
| + // |multiplier| is doubled for each consecutive error after the
|
| + // first, and |error_count| is incremented with each call.
|
| + base::TimeDelta GetNextV4BackOffInterval(size_t* error_count,
|
| + size_t* multiplier) const;
|
| +
|
| // Manages our update with the next allowable update time. If 'back_off_' is
|
| // true, we must decrease the frequency of requests of the SafeBrowsing
|
| // service according to section 5 of the protocol specification.
|
| @@ -318,6 +326,10 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
| // current time is |now|.
|
| void HandleGetHashError(const base::Time& now);
|
|
|
| + // Updates internal state for each GetHash V4 response error, assuming that
|
| + // the current time is |now|.
|
| + void HandleGetHashV4Error(const base::Time& now);
|
| +
|
| // Helper function for update completion.
|
| void UpdateFinished(bool success);
|
| void UpdateFinished(bool success, bool back_off);
|
| @@ -359,10 +371,12 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
| // The number of HTTP response errors, used for request backoff timing.
|
| size_t update_error_count_;
|
| size_t gethash_error_count_;
|
| + size_t gethash_v4_error_count_;
|
|
|
| // Multipliers which double (max == 8) for each error after the second.
|
| size_t update_back_off_mult_;
|
| size_t gethash_back_off_mult_;
|
| + size_t gethash_v4_back_off_mult_;
|
|
|
| // Multiplier between 0 and 1 to spread clients over an interval.
|
| float back_off_fuzz_;
|
| @@ -394,6 +408,7 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
|
|
| // While in GetHash backoff, we can't make another GetHash until this time.
|
| base::Time next_gethash_time_;
|
| + base::Time next_gethash_v4_time_;
|
|
|
| // Current product version sent in each request.
|
| std::string version_;
|
|
|