Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(951)

Side by Side Diff: net/http/http_cache.h

Issue 793823002: Let prefetched resources skip cache revalidation once for a short duration. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleaning up Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | net/http/http_cache.cc » ('j') | net/http/http_cache.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 // 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 19 matching lines...) Expand all
30 #include "net/base/completion_callback.h" 30 #include "net/base/completion_callback.h"
31 #include "net/base/load_states.h" 31 #include "net/base/load_states.h"
32 #include "net/base/net_export.h" 32 #include "net/base/net_export.h"
33 #include "net/base/request_priority.h" 33 #include "net/base/request_priority.h"
34 #include "net/http/http_network_session.h" 34 #include "net/http/http_network_session.h"
35 #include "net/http/http_transaction_factory.h" 35 #include "net/http/http_transaction_factory.h"
36 36
37 class GURL; 37 class GURL;
38 38
39 namespace base { 39 namespace base {
40 class Clock;
40 class SingleThreadTaskRunner; 41 class SingleThreadTaskRunner;
41 } // namespace base 42 } // namespace base
42 43
43 namespace disk_cache { 44 namespace disk_cache {
44 class Backend; 45 class Backend;
45 class Entry; 46 class Entry;
46 } // namespace disk_cache 47 } // namespace disk_cache
47 48
48 namespace net { 49 namespace net {
49 50
50 class CertVerifier; 51 class CertVerifier;
51 class ChannelIDService; 52 class ChannelIDService;
52 class DiskBasedCertCache; 53 class DiskBasedCertCache;
53 class HostResolver; 54 class HostResolver;
54 class HttpAuthHandlerFactory; 55 class HttpAuthHandlerFactory;
56 class HttpCachePrefetchValidationTest;
55 class HttpNetworkSession; 57 class HttpNetworkSession;
56 class HttpResponseInfo; 58 class HttpResponseInfo;
57 class HttpServerProperties; 59 class HttpServerProperties;
58 class IOBuffer; 60 class IOBuffer;
59 class NetLog; 61 class NetLog;
60 class NetworkDelegate; 62 class NetworkDelegate;
61 class ProxyService; 63 class ProxyService;
62 class SSLConfigService; 64 class SSLConfigService;
63 class TransportSecurityState; 65 class TransportSecurityState;
64 class ViewCacheHelper; 66 class ViewCacheHelper;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 // Must remain at the end of the enum. 242 // Must remain at the end of the enum.
241 kNumCacheEntryDataIndices 243 kNumCacheEntryDataIndices
242 }; 244 };
243 245
244 class MetadataWriter; 246 class MetadataWriter;
245 class QuicServerInfoFactoryAdaptor; 247 class QuicServerInfoFactoryAdaptor;
246 class Transaction; 248 class Transaction;
247 class WorkItem; 249 class WorkItem;
248 friend class Transaction; 250 friend class Transaction;
249 friend class ViewCacheHelper; 251 friend class ViewCacheHelper;
252 friend class HttpCachePrefetchValidationTest;
250 struct PendingOp; // Info for an entry under construction. 253 struct PendingOp; // Info for an entry under construction.
251 class AsyncValidation; // Encapsulates a single async revalidation. 254 class AsyncValidation; // Encapsulates a single async revalidation.
252 255
253 typedef std::list<Transaction*> TransactionList; 256 typedef std::list<Transaction*> TransactionList;
254 typedef std::list<WorkItem*> WorkItemList; 257 typedef std::list<WorkItem*> WorkItemList;
255 typedef std::map<std::string, AsyncValidation*> AsyncValidationMap; 258 typedef std::map<std::string, AsyncValidation*> AsyncValidationMap;
256 259
257 struct ActiveEntry { 260 struct ActiveEntry {
258 explicit ActiveEntry(disk_cache::Entry* entry); 261 explicit ActiveEntry(disk_cache::Entry* entry);
259 ~ActiveEntry(); 262 ~ActiveEntry();
260 263
261 disk_cache::Entry* disk_entry; 264 disk_cache::Entry* disk_entry;
262 Transaction* writer; 265 Transaction* writer;
263 TransactionList readers; 266 TransactionList readers;
264 TransactionList pending_queue; 267 TransactionList pending_queue;
265 bool will_process_pending_queue; 268 bool will_process_pending_queue;
266 bool doomed; 269 bool doomed;
267 }; 270 };
268 271
269 typedef base::hash_map<std::string, ActiveEntry*> ActiveEntriesMap; 272 typedef base::hash_map<std::string, ActiveEntry*> ActiveEntriesMap;
270 typedef base::hash_map<std::string, PendingOp*> PendingOpsMap; 273 typedef base::hash_map<std::string, PendingOp*> PendingOpsMap;
271 typedef std::set<ActiveEntry*> ActiveEntriesSet; 274 typedef std::set<ActiveEntry*> ActiveEntriesSet;
272 typedef base::hash_map<std::string, int> PlaybackCacheMap; 275 typedef base::hash_map<std::string, int> PlaybackCacheMap;
273 276
277 // The number of minutes after a resource is prefetched that it can be used
278 // again without validation.
279 static const int kPrefetchReuseMins = 5;
280
274 // Methods ------------------------------------------------------------------ 281 // Methods ------------------------------------------------------------------
275 282
276 // Creates the |backend| object and notifies the |callback| when the operation 283 // Creates the |backend| object and notifies the |callback| when the operation
277 // completes. Returns an error code. 284 // completes. Returns an error code.
278 int CreateBackend(disk_cache::Backend** backend, 285 int CreateBackend(disk_cache::Backend** backend,
279 const net::CompletionCallback& callback); 286 const net::CompletionCallback& callback);
280 287
281 // Makes sure that the backend creation is complete before allowing the 288 // Makes sure that the backend creation is complete before allowing the
282 // provided transaction to use the object. Returns an error code. |trans| 289 // provided transaction to use the object. Returns an error code. |trans|
283 // will be notified via its IO callback if this method returns ERR_IO_PENDING. 290 // will be notified via its IO callback if this method returns ERR_IO_PENDING.
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 ActiveEntriesSet doomed_entries_; 455 ActiveEntriesSet doomed_entries_;
449 456
450 // The set of entries "under construction". 457 // The set of entries "under construction".
451 PendingOpsMap pending_ops_; 458 PendingOpsMap pending_ops_;
452 459
453 scoped_ptr<PlaybackCacheMap> playback_cache_map_; 460 scoped_ptr<PlaybackCacheMap> playback_cache_map_;
454 461
455 // The async validations currently in progress, keyed by URL. 462 // The async validations currently in progress, keyed by URL.
456 AsyncValidationMap async_validations_; 463 AsyncValidationMap async_validations_;
457 464
465 // A clock that can be swapped out for testing.
466 scoped_ptr<base::Clock> clock_;
467
458 base::WeakPtrFactory<HttpCache> weak_factory_; 468 base::WeakPtrFactory<HttpCache> weak_factory_;
459 469
460 DISALLOW_COPY_AND_ASSIGN(HttpCache); 470 DISALLOW_COPY_AND_ASSIGN(HttpCache);
461 }; 471 };
462 472
463 } // namespace net 473 } // namespace net
464 474
465 #endif // NET_HTTP_HTTP_CACHE_H_ 475 #endif // NET_HTTP_HTTP_CACHE_H_
OLDNEW
« no previous file with comments | « no previous file | net/http/http_cache.cc » ('j') | net/http/http_cache.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698