Index: net/url_request/url_request_throttler_manager.h |
diff --git a/net/url_request/url_request_throttler_manager.h b/net/url_request/url_request_throttler_manager.h |
index 4b9b21f316ee3ad53f60e9b49371e4c2531edfb7..846b682ad612f724f9b0d45de68e94cd0b8ef93d 100644 |
--- a/net/url_request/url_request_throttler_manager.h |
+++ b/net/url_request/url_request_throttler_manager.h |
@@ -16,10 +16,14 @@ |
#include "base/threading/non_thread_safe.h" |
#include "googleurl/src/gurl.h" |
#include "net/base/net_api.h" |
+#include "net/base/network_change_notifier.h" |
#include "net/url_request/url_request_throttler_entry.h" |
namespace net { |
+class BoundNetLog; |
+class NetLog; |
+ |
// Class that registers URL request throttler entries for URLs being accessed |
// in order to supervise traffic. URL requests for HTTP contents should |
// register their URLs in this manager on each request. |
@@ -34,7 +38,9 @@ namespace net { |
// although to allow it to be used as a singleton, construction and destruction |
// can occur on a separate thread. |
class NET_API URLRequestThrottlerManager |
- : NON_EXPORTED_BASE(public base::NonThreadSafe) { |
+ : NON_EXPORTED_BASE(public base::NonThreadSafe), |
+ public NetworkChangeNotifier::IPAddressObserver, |
+ public NetworkChangeNotifier::OnlineStateObserver { |
public: |
static URLRequestThrottlerManager* GetInstance(); |
@@ -71,6 +77,16 @@ class NET_API URLRequestThrottlerManager |
void set_enforce_throttling(bool enforce); |
bool enforce_throttling(); |
+ // Sets the NetLog instance to use. |
+ void set_net_log(NetLog* net_log); |
+ NetLog* net_log() const; |
+ |
+ // IPAddressObserver interface. |
+ virtual void OnIPAddressChanged() OVERRIDE; |
+ |
+ // OnlineStateObserver interface. |
+ virtual void OnOnlineStateChanged(bool online) OVERRIDE; |
+ |
protected: |
URLRequestThrottlerManager(); |
~URLRequestThrottlerManager(); |
@@ -90,6 +106,15 @@ class NET_API URLRequestThrottlerManager |
// Method that does the actual work of garbage collecting. |
void GarbageCollectEntries(); |
+ // When we switch from online to offline or change IP addresses, we |
+ // clear all back-off history. This is a precaution in case the change in |
+ // online state now lets us communicate without error with servers that |
+ // we were previously getting 500 or 503 responses from (perhaps the |
+ // responses are from a badly-written proxy that should have returned a |
+ // 502 or 504 because it's upstream connection was down or it had no route |
+ // to the server). |
+ void OnNetworkChange(); |
+ |
// Used by tests. |
int GetNumberOfEntriesForTests() const { return url_entries_.size(); } |
@@ -136,6 +161,13 @@ class NET_API URLRequestThrottlerManager |
// workaround. |
bool enable_thread_checks_; |
+ // Initially false, switches to true once we have logged because of back-off |
+ // being disabled for localhost. |
+ bool logged_for_localhost_disabled_; |
+ |
+ // NetLog to use, or NULL if none configured. |
+ scoped_ptr<BoundNetLog> net_log_; |
+ |
DISALLOW_COPY_AND_ASSIGN(URLRequestThrottlerManager); |
}; |