| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "components/gcm_driver/gcm_backoff_policy.h" | 
 |  | 
 | namespace gcm { | 
 |  | 
 | namespace { | 
 |  | 
 | // Backoff policy. Shared across GCM requests. | 
 | // Note: In order to ensure a minimum of 20 seconds between server errors (for | 
 | // server reasons), we have a 30s +- 10s (33%) jitter initial backoff. | 
 | const net::BackoffEntry::Policy kDefaultBackoffPolicy = { | 
 |   // Number of initial errors (in sequence) to ignore before applying | 
 |   // exponential back-off rules. | 
 |   0, | 
 |  | 
 |   // Initial delay for exponential back-off in ms. | 
 |   30 * 1000,  // 30 seconds. | 
 |  | 
 |   // Factor by which the waiting time will be multiplied. | 
 |   2, | 
 |  | 
 |   // Fuzzing percentage. ex: 10% will spread requests randomly | 
 |   // between 90%-100% of the calculated time. | 
 |   0.33,  // 33%. | 
 |  | 
 |   // Maximum amount of time we are willing to delay our request in ms. | 
 |   10 * 60 * 1000, // 10 minutes. | 
 |  | 
 |   // Time to keep an entry from being discarded even when it | 
 |   // has no significant state, -1 to never discard. | 
 |   -1, | 
 |  | 
 |   // Don't use initial delay unless the last request was an error. | 
 |   false, | 
 | }; | 
 |  | 
 | }  // namespace | 
 |  | 
 | const net::BackoffEntry::Policy& GetGCMBackoffPolicy() { | 
 |   return kDefaultBackoffPolicy; | 
 | } | 
 |  | 
 | }  // namespace gcm |