| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef NET_URL_REQUEST_URL_REQUEST_THROTTLER_MANAGER_H_ | 5 #ifndef NET_URL_REQUEST_URL_REQUEST_THROTTLER_MANAGER_H_ |
| 6 #define NET_URL_REQUEST_URL_REQUEST_THROTTLER_MANAGER_H_ | 6 #define NET_URL_REQUEST_URL_REQUEST_THROTTLER_MANAGER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 URLRequestThrottlerManager(); | 40 URLRequestThrottlerManager(); |
| 41 ~URLRequestThrottlerManager() override; | 41 ~URLRequestThrottlerManager() override; |
| 42 | 42 |
| 43 // Must be called for every request, returns the URL request throttler entry | 43 // Must be called for every request, returns the URL request throttler entry |
| 44 // associated with the URL. The caller must inform this entry of some events. | 44 // associated with the URL. The caller must inform this entry of some events. |
| 45 // Please refer to url_request_throttler_entry_interface.h for further | 45 // Please refer to url_request_throttler_entry_interface.h for further |
| 46 // informations. | 46 // informations. |
| 47 scoped_refptr<URLRequestThrottlerEntryInterface> RegisterRequestUrl( | 47 scoped_refptr<URLRequestThrottlerEntryInterface> RegisterRequestUrl( |
| 48 const GURL& url); | 48 const GURL& url); |
| 49 | 49 |
| 50 // Adds the given host to a list of sites for which exponential back-off | |
| 51 // throttling will be disabled. Subdomains are not included, so they | |
| 52 // must be added separately. | |
| 53 void AddToOptOutList(const std::string& host); | |
| 54 | |
| 55 // Registers a new entry in this service and overrides the existing entry (if | 50 // Registers a new entry in this service and overrides the existing entry (if |
| 56 // any) for the URL. The service will hold a reference to the entry. | 51 // any) for the URL. The service will hold a reference to the entry. |
| 57 // It is only used by unit tests. | 52 // It is only used by unit tests. |
| 58 void OverrideEntryForTests(const GURL& url, URLRequestThrottlerEntry* entry); | 53 void OverrideEntryForTests(const GURL& url, URLRequestThrottlerEntry* entry); |
| 59 | 54 |
| 60 // Explicitly erases an entry. | 55 // Explicitly erases an entry. |
| 61 // This is useful to remove those entries which have got infinite lifetime and | 56 // This is useful to remove those entries which have got infinite lifetime and |
| 62 // thus won't be garbage collected. | 57 // thus won't be garbage collected. |
| 63 // It is only used by unit tests. | 58 // It is only used by unit tests. |
| 64 void EraseEntryForTests(const GURL& url); | 59 void EraseEntryForTests(const GURL& url); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 | 105 |
| 111 // Used by tests. | 106 // Used by tests. |
| 112 int GetNumberOfEntriesForTests() const { return url_entries_.size(); } | 107 int GetNumberOfEntriesForTests() const { return url_entries_.size(); } |
| 113 | 108 |
| 114 private: | 109 private: |
| 115 // From each URL we generate an ID composed of the scheme, host, port and path | 110 // From each URL we generate an ID composed of the scheme, host, port and path |
| 116 // that allows us to uniquely map an entry to it. | 111 // that allows us to uniquely map an entry to it. |
| 117 typedef std::map<std::string, scoped_refptr<URLRequestThrottlerEntry> > | 112 typedef std::map<std::string, scoped_refptr<URLRequestThrottlerEntry> > |
| 118 UrlEntryMap; | 113 UrlEntryMap; |
| 119 | 114 |
| 120 // We maintain a set of hosts that have opted out of exponential | |
| 121 // back-off throttling. | |
| 122 typedef std::set<std::string> OptOutHosts; | |
| 123 | |
| 124 // Maximum number of entries that we are willing to collect in our map. | 115 // Maximum number of entries that we are willing to collect in our map. |
| 125 static const unsigned int kMaximumNumberOfEntries; | 116 static const unsigned int kMaximumNumberOfEntries; |
| 126 // Number of requests that will be made between garbage collection. | 117 // Number of requests that will be made between garbage collection. |
| 127 static const unsigned int kRequestsBetweenCollecting; | 118 static const unsigned int kRequestsBetweenCollecting; |
| 128 | 119 |
| 129 // Map that contains a list of URL ID and their matching | 120 // Map that contains a list of URL ID and their matching |
| 130 // URLRequestThrottlerEntry. | 121 // URLRequestThrottlerEntry. |
| 131 UrlEntryMap url_entries_; | 122 UrlEntryMap url_entries_; |
| 132 | 123 |
| 133 // Set of hosts that have opted out. | |
| 134 OptOutHosts opt_out_hosts_; | |
| 135 | |
| 136 // This keeps track of how many requests have been made. Used with | 124 // This keeps track of how many requests have been made. Used with |
| 137 // GarbageCollectEntries. | 125 // GarbageCollectEntries. |
| 138 unsigned int requests_since_last_gc_; | 126 unsigned int requests_since_last_gc_; |
| 139 | 127 |
| 140 // Valid after construction. | 128 // Valid after construction. |
| 141 GURL::Replacements url_id_replacements_; | 129 GURL::Replacements url_id_replacements_; |
| 142 | 130 |
| 143 // Certain tests do not obey the net component's threading policy, so we | 131 // Certain tests do not obey the net component's threading policy, so we |
| 144 // keep track of whether we're being used by tests, and turn off certain | 132 // keep track of whether we're being used by tests, and turn off certain |
| 145 // checks. | 133 // checks. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 157 | 145 |
| 158 // Valid once we've registered for network notifications. | 146 // Valid once we've registered for network notifications. |
| 159 base::PlatformThreadId registered_from_thread_; | 147 base::PlatformThreadId registered_from_thread_; |
| 160 | 148 |
| 161 DISALLOW_COPY_AND_ASSIGN(URLRequestThrottlerManager); | 149 DISALLOW_COPY_AND_ASSIGN(URLRequestThrottlerManager); |
| 162 }; | 150 }; |
| 163 | 151 |
| 164 } // namespace net | 152 } // namespace net |
| 165 | 153 |
| 166 #endif // NET_URL_REQUEST_URL_REQUEST_THROTTLER_MANAGER_H_ | 154 #endif // NET_URL_REQUEST_URL_REQUEST_THROTTLER_MANAGER_H_ |
| OLD | NEW |