| 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 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 12 matching lines...) Expand all Loading... |
| 23 #include "base/file_path.h" | 23 #include "base/file_path.h" |
| 24 #include "base/hash_tables.h" | 24 #include "base/hash_tables.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/memory/weak_ptr.h" |
| 27 #include "base/message_loop_proxy.h" | 27 #include "base/message_loop_proxy.h" |
| 28 #include "base/task.h" | 28 #include "base/task.h" |
| 29 #include "base/threading/non_thread_safe.h" | 29 #include "base/threading/non_thread_safe.h" |
| 30 #include "net/base/cache_type.h" | 30 #include "net/base/cache_type.h" |
| 31 #include "net/base/completion_callback.h" | 31 #include "net/base/completion_callback.h" |
| 32 #include "net/base/load_states.h" | 32 #include "net/base/load_states.h" |
| 33 #include "net/base/net_api.h" | 33 #include "net/base/net_export.h" |
| 34 #include "net/http/http_transaction_factory.h" | 34 #include "net/http/http_transaction_factory.h" |
| 35 | 35 |
| 36 class GURL; | 36 class GURL; |
| 37 | 37 |
| 38 namespace disk_cache { | 38 namespace disk_cache { |
| 39 class Backend; | 39 class Backend; |
| 40 class Entry; | 40 class Entry; |
| 41 } | 41 } |
| 42 | 42 |
| 43 namespace net { | 43 namespace net { |
| 44 | 44 |
| 45 class CertVerifier; | 45 class CertVerifier; |
| 46 class DnsCertProvenanceChecker; | 46 class DnsCertProvenanceChecker; |
| 47 class DnsRRResolver; | 47 class DnsRRResolver; |
| 48 class HostResolver; | 48 class HostResolver; |
| 49 class HttpAuthHandlerFactory; | 49 class HttpAuthHandlerFactory; |
| 50 class HttpNetworkSession; | 50 class HttpNetworkSession; |
| 51 struct HttpRequestInfo; | 51 struct HttpRequestInfo; |
| 52 class HttpResponseInfo; | 52 class HttpResponseInfo; |
| 53 class IOBuffer; | 53 class IOBuffer; |
| 54 class NetLog; | 54 class NetLog; |
| 55 class NetworkDelegate; | 55 class NetworkDelegate; |
| 56 class ProxyService; | 56 class ProxyService; |
| 57 class SSLConfigService; | 57 class SSLConfigService; |
| 58 class ViewCacheHelper; | 58 class ViewCacheHelper; |
| 59 | 59 |
| 60 class NET_API HttpCache : public HttpTransactionFactory, | 60 class NET_EXPORT HttpCache : public HttpTransactionFactory, |
| 61 public base::SupportsWeakPtr<HttpCache>, | 61 public base::SupportsWeakPtr<HttpCache>, |
| 62 NON_EXPORTED_BASE(public base::NonThreadSafe) { | 62 NON_EXPORTED_BASE(public base::NonThreadSafe) { |
| 63 public: | 63 public: |
| 64 // The cache mode of operation. | 64 // The cache mode of operation. |
| 65 enum Mode { | 65 enum Mode { |
| 66 // Normal mode just behaves like a standard web cache. | 66 // Normal mode just behaves like a standard web cache. |
| 67 NORMAL = 0, | 67 NORMAL = 0, |
| 68 // Record mode caches everything for purposes of offline playback. | 68 // Record mode caches everything for purposes of offline playback. |
| 69 RECORD, | 69 RECORD, |
| 70 // Playback mode replays from a cache without considering any | 70 // Playback mode replays from a cache without considering any |
| 71 // standard invalidations. | 71 // standard invalidations. |
| 72 PLAYBACK, | 72 PLAYBACK, |
| 73 // Disables reads and writes from the cache. | 73 // Disables reads and writes from the cache. |
| 74 // Equivalent to setting LOAD_DISABLE_CACHE on every request. | 74 // Equivalent to setting LOAD_DISABLE_CACHE on every request. |
| 75 DISABLE | 75 DISABLE |
| 76 }; | 76 }; |
| 77 | 77 |
| 78 // A BackendFactory creates a backend object to be used by the HttpCache. | 78 // A BackendFactory creates a backend object to be used by the HttpCache. |
| 79 class NET_API BackendFactory { | 79 class NET_EXPORT BackendFactory { |
| 80 public: | 80 public: |
| 81 virtual ~BackendFactory() {} | 81 virtual ~BackendFactory() {} |
| 82 | 82 |
| 83 // The actual method to build the backend. Returns a net error code. If | 83 // The actual method to build the backend. Returns a net error code. If |
| 84 // ERR_IO_PENDING is returned, the |callback| will be notified when the | 84 // ERR_IO_PENDING is returned, the |callback| will be notified when the |
| 85 // operation completes, and |backend| must remain valid until the | 85 // operation completes, and |backend| must remain valid until the |
| 86 // notification arrives. | 86 // notification arrives. |
| 87 // The implementation must not access the factory object after invoking the | 87 // The implementation must not access the factory object after invoking the |
| 88 // |callback| because the object can be deleted from within the callback. | 88 // |callback| because the object can be deleted from within the callback. |
| 89 virtual int CreateBackend(NetLog* net_log, | 89 virtual int CreateBackend(NetLog* net_log, |
| 90 disk_cache::Backend** backend, | 90 disk_cache::Backend** backend, |
| 91 CompletionCallback* callback) = 0; | 91 CompletionCallback* callback) = 0; |
| 92 }; | 92 }; |
| 93 | 93 |
| 94 // A default backend factory for the common use cases. | 94 // A default backend factory for the common use cases. |
| 95 class NET_API DefaultBackend : public BackendFactory { | 95 class NET_EXPORT DefaultBackend : public BackendFactory { |
| 96 public: | 96 public: |
| 97 // |path| is the destination for any files used by the backend, and | 97 // |path| is the destination for any files used by the backend, and |
| 98 // |cache_thread| is the thread where disk operations should take place. If | 98 // |cache_thread| is the thread where disk operations should take place. If |
| 99 // |max_bytes| is zero, a default value will be calculated automatically. | 99 // |max_bytes| is zero, a default value will be calculated automatically. |
| 100 DefaultBackend(CacheType type, const FilePath& path, int max_bytes, | 100 DefaultBackend(CacheType type, const FilePath& path, int max_bytes, |
| 101 base::MessageLoopProxy* thread); | 101 base::MessageLoopProxy* thread); |
| 102 virtual ~DefaultBackend(); | 102 virtual ~DefaultBackend(); |
| 103 | 103 |
| 104 // Returns a factory for an in-memory cache. | 104 // Returns a factory for an in-memory cache. |
| 105 static BackendFactory* InMemory(int max_bytes); | 105 static BackendFactory* InMemory(int max_bytes); |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 ScopedRunnableMethodFactory<HttpCache> task_factory_; | 376 ScopedRunnableMethodFactory<HttpCache> task_factory_; |
| 377 | 377 |
| 378 scoped_ptr<PlaybackCacheMap> playback_cache_map_; | 378 scoped_ptr<PlaybackCacheMap> playback_cache_map_; |
| 379 | 379 |
| 380 DISALLOW_COPY_AND_ASSIGN(HttpCache); | 380 DISALLOW_COPY_AND_ASSIGN(HttpCache); |
| 381 }; | 381 }; |
| 382 | 382 |
| 383 } // namespace net | 383 } // namespace net |
| 384 | 384 |
| 385 #endif // NET_HTTP_HTTP_CACHE_H_ | 385 #endif // NET_HTTP_HTTP_CACHE_H_ |
| OLD | NEW |