OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 declares a HttpTransactionFactory implementation that can be | 5 // This file declares a HttpTransactionFactory implementation that can be |
6 // layered on top of another HttpTransactionFactory to add HTTP caching. The | 6 // layered on top of another HttpTransactionFactory to add HTTP caching. The |
7 // caching logic follows RFC 2616 (any exceptions are called out in the code). | 7 // caching logic follows RFC 2616 (any exceptions are called out in the code). |
8 // | 8 // |
9 // The HttpCache takes a disk_cache::Backend as a parameter, and uses that for | 9 // The HttpCache takes a disk_cache::Backend as a parameter, and uses that for |
10 // the cache storage. | 10 // the cache storage. |
(...skipping 13 matching lines...) Expand all Loading... |
24 #include "net/base/cache_type.h" | 24 #include "net/base/cache_type.h" |
25 #include "net/http/http_transaction_factory.h" | 25 #include "net/http/http_transaction_factory.h" |
26 | 26 |
27 namespace disk_cache { | 27 namespace disk_cache { |
28 class Backend; | 28 class Backend; |
29 class Entry; | 29 class Entry; |
30 } | 30 } |
31 | 31 |
32 namespace net { | 32 namespace net { |
33 | 33 |
| 34 class HostResolver; |
34 class HttpNetworkSession; | 35 class HttpNetworkSession; |
35 class HttpRequestInfo; | 36 class HttpRequestInfo; |
36 class HttpResponseInfo; | 37 class HttpResponseInfo; |
37 class ProxyService; | 38 class ProxyService; |
38 | 39 |
39 class HttpCache : public HttpTransactionFactory { | 40 class HttpCache : public HttpTransactionFactory { |
40 public: | 41 public: |
41 ~HttpCache(); | 42 ~HttpCache(); |
42 | 43 |
43 // The cache mode of operation. | 44 // The cache mode of operation. |
44 enum Mode { | 45 enum Mode { |
45 // Normal mode just behaves like a standard web cache. | 46 // Normal mode just behaves like a standard web cache. |
46 NORMAL = 0, | 47 NORMAL = 0, |
47 // Record mode caches everything for purposes of offline playback. | 48 // Record mode caches everything for purposes of offline playback. |
48 RECORD, | 49 RECORD, |
49 // Playback mode replays from a cache without considering any | 50 // Playback mode replays from a cache without considering any |
50 // standard invalidations. | 51 // standard invalidations. |
51 PLAYBACK, | 52 PLAYBACK, |
52 // Disables reads and writes from the cache. | 53 // Disables reads and writes from the cache. |
53 // Equivalent to setting LOAD_DISABLE_CACHE on every request. | 54 // Equivalent to setting LOAD_DISABLE_CACHE on every request. |
54 DISABLE | 55 DISABLE |
55 }; | 56 }; |
56 | 57 |
57 // Initialize the cache from the directory where its data is stored. The | 58 // Initialize the cache from the directory where its data is stored. The |
58 // disk cache is initialized lazily (by CreateTransaction) in this case. If | 59 // disk cache is initialized lazily (by CreateTransaction) in this case. If |
59 // |cache_size| is zero, a default value will be calculated automatically. | 60 // |cache_size| is zero, a default value will be calculated automatically. |
60 HttpCache(ProxyService* proxy_service, | 61 HttpCache(HostResolver* host_resolver, |
| 62 ProxyService* proxy_service, |
61 const std::wstring& cache_dir, | 63 const std::wstring& cache_dir, |
62 int cache_size); | 64 int cache_size); |
63 | 65 |
64 // Initialize the cache from the directory where its data is stored. The | 66 // Initialize the cache from the directory where its data is stored. The |
65 // disk cache is initialized lazily (by CreateTransaction) in this case. If | 67 // disk cache is initialized lazily (by CreateTransaction) in this case. If |
66 // |cache_size| is zero, a default value will be calculated automatically. | 68 // |cache_size| is zero, a default value will be calculated automatically. |
67 // Provide an existing HttpNetworkSession, the cache can construct a | 69 // Provide an existing HttpNetworkSession, the cache can construct a |
68 // network layer with a shared HttpNetworkSession in order for multiple | 70 // network layer with a shared HttpNetworkSession in order for multiple |
69 // network layers to share information (e.g. authenication data). | 71 // network layers to share information (e.g. authenication data). |
70 HttpCache(HttpNetworkSession* session, const std::wstring& cache_dir, | 72 HttpCache(HttpNetworkSession* session, const std::wstring& cache_dir, |
71 int cache_size); | 73 int cache_size); |
72 | 74 |
73 // Initialize using an in-memory cache. The cache is initialized lazily | 75 // Initialize using an in-memory cache. The cache is initialized lazily |
74 // (by CreateTransaction) in this case. If |cache_size| is zero, a default | 76 // (by CreateTransaction) in this case. If |cache_size| is zero, a default |
75 // value will be calculated automatically. | 77 // value will be calculated automatically. |
76 HttpCache(ProxyService* proxy_service, int cache_size); | 78 HttpCache(HostResolver* host_resolver, |
| 79 ProxyService* proxy_service, |
| 80 int cache_size); |
77 | 81 |
78 // Initialize the cache from its component parts, which is useful for | 82 // Initialize the cache from its component parts, which is useful for |
79 // testing. The lifetime of the network_layer and disk_cache are managed by | 83 // testing. The lifetime of the network_layer and disk_cache are managed by |
80 // the HttpCache and will be destroyed using |delete| when the HttpCache is | 84 // the HttpCache and will be destroyed using |delete| when the HttpCache is |
81 // destroyed. | 85 // destroyed. |
82 HttpCache(HttpTransactionFactory* network_layer, | 86 HttpCache(HttpTransactionFactory* network_layer, |
83 disk_cache::Backend* disk_cache); | 87 disk_cache::Backend* disk_cache); |
84 | 88 |
85 HttpTransactionFactory* network_layer() { return network_layer_.get(); } | 89 HttpTransactionFactory* network_layer() { return network_layer_.get(); } |
86 disk_cache::Backend* disk_cache() { return disk_cache_.get(); } | 90 disk_cache::Backend* disk_cache() { return disk_cache_.get(); } |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 scoped_ptr<PlaybackCacheMap> playback_cache_map_; | 189 scoped_ptr<PlaybackCacheMap> playback_cache_map_; |
186 | 190 |
187 RevocableStore transactions_; | 191 RevocableStore transactions_; |
188 | 192 |
189 DISALLOW_COPY_AND_ASSIGN(HttpCache); | 193 DISALLOW_COPY_AND_ASSIGN(HttpCache); |
190 }; | 194 }; |
191 | 195 |
192 } // namespace net | 196 } // namespace net |
193 | 197 |
194 #endif // NET_HTTP_HTTP_CACHE_H_ | 198 #endif // NET_HTTP_HTTP_CACHE_H_ |
OLD | NEW |