OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // This file contains the SdchManager class and two nested classes | 5 // This file contains the SdchManager class and two nested classes |
6 // (Dictionary, DictionarySet). SdchManager::Dictionary contains all | 6 // (Dictionary, DictionarySet). SdchManager::Dictionary contains all |
7 // of the information about an SDCH dictionary. The manager is | 7 // of the information about an SDCH dictionary. The manager is |
8 // responsible for storing those dictionaries, and provides access to | 8 // responsible for storing those dictionaries, and provides access to |
9 // them through DictionarySet objects. A DictionarySet is an object | 9 // them through DictionarySet objects. A DictionarySet is an object |
10 // whose lifetime is under the control of the consumer. It is a | 10 // whose lifetime is under the control of the consumer. It is a |
11 // reference to a set of dictionaries, and guarantees that none of | 11 // reference to a set of dictionaries, and guarantees that none of |
12 // those dictionaries will be destroyed while the DictionarySet | 12 // those dictionaries will be destroyed while the DictionarySet |
13 // reference is alive. | 13 // reference is alive. |
14 | 14 |
15 #ifndef NET_BASE_SDCH_MANAGER_H_ | 15 #ifndef NET_BASE_SDCH_MANAGER_H_ |
16 #define NET_BASE_SDCH_MANAGER_H_ | 16 #define NET_BASE_SDCH_MANAGER_H_ |
17 | 17 |
18 #include <map> | 18 #include <map> |
19 #include <set> | 19 #include <set> |
20 #include <string> | 20 #include <string> |
21 #include <vector> | 21 #include <vector> |
22 | 22 |
23 #include "base/gtest_prod_util.h" | 23 #include "base/gtest_prod_util.h" |
24 #include "base/memory/ref_counted.h" | 24 #include "base/memory/ref_counted.h" |
25 #include "base/memory/scoped_ptr.h" | 25 #include "base/memory/scoped_ptr.h" |
| 26 #include "base/memory/weak_ptr.h" |
26 #include "base/observer_list.h" | 27 #include "base/observer_list.h" |
27 #include "base/threading/thread_checker.h" | 28 #include "base/threading/thread_checker.h" |
28 #include "base/time/time.h" | 29 #include "base/time/time.h" |
29 #include "net/base/net_export.h" | 30 #include "net/base/net_export.h" |
30 #include "net/base/sdch_problem_codes.h" | 31 #include "net/base/sdch_problem_codes.h" |
31 #include "url/gurl.h" | 32 #include "url/gurl.h" |
32 | 33 |
33 namespace base { | 34 namespace base { |
34 class Clock; | 35 class Clock; |
35 class Value; | 36 class Value; |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 | 286 |
286 // Remove an SDCH dictionary | 287 // Remove an SDCH dictionary |
287 SdchProblemCode RemoveSdchDictionary(const std::string& server_hash); | 288 SdchProblemCode RemoveSdchDictionary(const std::string& server_hash); |
288 | 289 |
289 // Registration for events generated by the SDCH subsystem. | 290 // Registration for events generated by the SDCH subsystem. |
290 void AddObserver(SdchObserver* observer); | 291 void AddObserver(SdchObserver* observer); |
291 void RemoveObserver(SdchObserver* observer); | 292 void RemoveObserver(SdchObserver* observer); |
292 | 293 |
293 static scoped_ptr<DictionarySet> CreateEmptyDictionarySetForTesting(); | 294 static scoped_ptr<DictionarySet> CreateEmptyDictionarySetForTesting(); |
294 | 295 |
| 296 // For investigation of http://crbug.com/454198; remove when resolved. |
| 297 base::WeakPtr<SdchManager> GetWeakPtr(); |
| 298 |
295 private: | 299 private: |
296 struct BlacklistInfo { | 300 struct BlacklistInfo { |
297 BlacklistInfo() : count(0), exponential_count(0), reason(SDCH_OK) {} | 301 BlacklistInfo() : count(0), exponential_count(0), reason(SDCH_OK) {} |
298 | 302 |
299 int count; // # of times to refuse SDCH advertisement. | 303 int count; // # of times to refuse SDCH advertisement. |
300 int exponential_count; // Current exponential backoff ratchet. | 304 int exponential_count; // Current exponential backoff ratchet. |
301 SdchProblemCode reason; // Why domain was blacklisted. | 305 SdchProblemCode reason; // Why domain was blacklisted. |
302 }; | 306 }; |
303 | 307 |
304 typedef std::map<std::string, BlacklistInfo> DomainBlacklistInfo; | 308 typedef std::map<std::string, BlacklistInfo> DomainBlacklistInfo; |
(...skipping 26 matching lines...) Expand all Loading... |
331 ExperimentSet allow_latency_experiment_; | 335 ExperimentSet allow_latency_experiment_; |
332 | 336 |
333 // Observers that want to be notified of SDCH events. | 337 // Observers that want to be notified of SDCH events. |
334 // Assert list is empty on destruction since if there is an observer | 338 // Assert list is empty on destruction since if there is an observer |
335 // that hasn't removed itself from the list, that observer probably | 339 // that hasn't removed itself from the list, that observer probably |
336 // has a reference to the SdchManager. | 340 // has a reference to the SdchManager. |
337 ObserverList<SdchObserver, true> observers_; | 341 ObserverList<SdchObserver, true> observers_; |
338 | 342 |
339 base::ThreadChecker thread_checker_; | 343 base::ThreadChecker thread_checker_; |
340 | 344 |
| 345 base::WeakPtrFactory<SdchManager> factory_; |
| 346 |
341 DISALLOW_COPY_AND_ASSIGN(SdchManager); | 347 DISALLOW_COPY_AND_ASSIGN(SdchManager); |
342 }; | 348 }; |
343 | 349 |
344 } // namespace net | 350 } // namespace net |
345 | 351 |
346 #endif // NET_BASE_SDCH_MANAGER_H_ | 352 #endif // NET_BASE_SDCH_MANAGER_H_ |
OLD | NEW |