summaryrefslogtreecommitdiffstats
path: root/net/http/http_cache.h
Commit message (Collapse)AuthorAgeFilesLines
* `#pragma once` for app, base, chrome, gfx, ipc, net, skia, viewsthakis@chromium.org2010-07-261-0/+1
| | | | | | | | | BUG=50273 TEST=everything still builds, build is 10% faster on windows, same speed on mac/linux TBR: erg git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53716 0039d316-1c4b-4281-b951-d872f2087c98
* Http Cache: chain GetLoadState from transactions waiting forrvargas@google.com2010-07-151-0/+4
| | | | | | | | | | | | | | | | | | access to an entry to the transaction that has exclusive access to that entry. This means that requests that are blocked on the single writer lock of the http cache will report the load state of the request that has the lock, and WAITING_FOR_CACHE is reserved for requests that are actually waiting for the entry to be created by the cache. BUG=43582 TEST=net_unittests Review URL: http://codereview.chromium.org/2892010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52557 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 52334 - Http Cache: chain GetLoadState from transactions waiting forrvargas@google.com2010-07-141-4/+0
| | | | | | | | | | | | | | | | | | | | | | access to an entry to the transaction that has exclusive access to that entry. This means that requests that are blocked on the single writer lock of the http cache will report the load state of the request that has the lock, and WAITING_FOR_CACHE is reserved for requests that are actually waiting for the entry to be created by the cache. BUG=43582 TEST=net_unittests Review URL: http://codereview.chromium.org/2976004 TBR=rvargas@google.com Review URL: http://codereview.chromium.org/2921010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52405 0039d316-1c4b-4281-b951-d872f2087c98
* Http Cache: chain GetLoadState from transactions waiting forrvargas@google.com2010-07-141-0/+4
| | | | | | | | | | | | | | | | | | | access to an entry to the transaction that has exclusive access to that entry. This means that requests that are blocked on the single writer lock of the http cache will report the load state of the request that has the lock, and WAITING_FOR_CACHE is reserved for requests that are actually waiting for the entry to be created by the cache. BUG=43582 TEST=net_unittests Review URL: http://codereview.chromium.org/2976004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52334 0039d316-1c4b-4281-b951-d872f2087c98
* Annotate some network classes as non-threadsafe.eroman@chromium.org2010-07-121-1/+3
| | | | | | | | | | This is a defensive change to catch attempts to delete them on a different thread than where they were created (when in Debug mode). Although most classes in net are not thread safe and could be annotated, I chose to annotate these specific ones since they are frequently the top-level objects held by embedders. Review URL: http://codereview.chromium.org/1812007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52111 0039d316-1c4b-4281-b951-d872f2087c98
* Massively simplify the NetworkChangeNotifier infrastructure:pkasting@chromium.org2010-06-251-3/+2
| | | | | | | | | | | | | | * Use a process-wide object (singleton pattern) * Create/destroy this object on the main thread, make it outlive all consumers * Make observer-related functions threadsafe As a result, the notifier can now be used by any thread (eliminating things like NetworkChangeObserverProxy and NetworkChangeNotifierProxy, and expanding its usefulness); its creation and inner workings are much simplified (eliminating implementation-specific classes); and it is simpler to access (eliminating things like NetworkChangeNotifierThread and a LOT of passing pointers around). BUG=none TEST=Unittests; network changes still trigger notifications Review URL: http://codereview.chromium.org/2802015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50895 0039d316-1c4b-4281-b951-d872f2087c98
* Add a net::HttpNetworkDelegate and a ChromeNetworkDelegate.willchan@chromium.org2010-06-151-0/+2
| | | | | | | | | net::HttpNetworkDelegate is an interface for providing hooks into http network activity. ChromeNetworkDelgate implements this interface in chrome/ code. In the future, it might also implement other interfaces. My only current intended consumer for this would be extensions. There's no actual behavior change, this is all just plumbing for now. BUG=29314 Review URL: http://codereview.chromium.org/2749015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49804 0039d316-1c4b-4281-b951-d872f2087c98
* Reland 49600 - Http cache: Remove deprecated code.rvargas@google.com2010-06-141-21/+0
| | | | | | | | | | | | | BUG=26729 TEST=current tests Review URL: http://codereview.chromium.org/2776007 TBR=rvargas@google.com Review URL: http://codereview.chromium.org/2809004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49706 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 49600 - Http cache: Remove deprecated code.rvargas@google.com2010-06-111-0/+21
| | | | | | | | | | | | BUG=26729 TEST=current tests Review URL: http://codereview.chromium.org/2776007 TBR=rvargas@google.com Review URL: http://codereview.chromium.org/2779020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49613 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Remove deprecated code.rvargas@google.com2010-06-111-21/+0
| | | | | | | | | BUG=26729 TEST=current tests Review URL: http://codereview.chromium.org/2776007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49600 0039d316-1c4b-4281-b951-d872f2087c98
* Rework the logging for sockets/connectjobs.eroman@chromium.org2010-06-031-0/+3
| | | | | | | | | | | | | | | | | | In particular, make it work better when using backup jobs / late binding (the display was very confused before because of how these asynchronous events would nest). Also changed the paradigm for how PassiveLogCollector preserves these async associations -- this fixes how it replays the events to net-internals. (Before we would collapse the event streams into the SOURCE_URL_REQUEST which lost some hiearchy.. now I keep the separate streams). Some of the particular changes to the event streams: * ConnectJobs now create their own source stream internally. * Sockets are now bounded by +SOCKET_ALIVE / -SOCKET_ALIVE events (removed the one-off SOCKET_DONE event). * The socket log streams contains +SOCKET_IN_USE / -SOCKET_IN_USE event blocks to show which URLRequest was controlling it at various points in time (this makes it much easier to understand which read/writes belonged to a particular network transaction when a socket gets re-used). * ConnectJobs are bounded by +SOCKET_POOL_CONNECT_JOB / - SOCKET_POOL_CONNECT_JOB events. * ConnectJobs log the net error they failed with. * Removed the SOCKET_BACKUP_TIMER_EXTENDED event. Review URL: http://codereview.chromium.org/2363003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48797 0039d316-1c4b-4281-b951-d872f2087c98
* view-cache: Refactor ViewCacheHelper and ViewHttpCacheJobFactoryrvargas@google.com2010-05-271-2/+2
| | | | | | | | | | | | to use asynchronous interfaces. BUG=26730 TEST=unittest Review URL: http://codereview.chromium.org/2168004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48438 0039d316-1c4b-4281-b951-d872f2087c98
* net-internals: use the async interface for displaying cache statistics.rvargas@google.com2010-05-271-0/+3
| | | | | | | | | BUG=26729 TEST=none Review URL: http://codereview.chromium.org/2279003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48344 0039d316-1c4b-4281-b951-d872f2087c98
* Create a dedicated cache thread and use it to create thervargas@google.com2010-05-181-3/+3
| | | | | | | | | | | Http cache. BUG=26730 TEST=none Review URL: http://codereview.chromium.org/1989014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47564 0039d316-1c4b-4281-b951-d872f2087c98
* Http Cache: Add a backend factory class so that the callerrvargas@google.com2010-05-121-47/+53
| | | | | | | | | | | | has more control about the backend instantiation. BUG=none TEST=current unit tests. Review URL: http://codereview.chromium.org/2000011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47050 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Add a check to MockHttpCache to make surervargas@google.com2010-05-101-2/+2
| | | | | | | | | | | | | that we always use a completion callback when making disk cache requests, and add new states to truncate the entry's metadata. BUG=26729 TEST=unittests Review URL: http://codereview.chromium.org/2006007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46867 0039d316-1c4b-4281-b951-d872f2087c98
* Http Cache: Handle the asynchronous instantiation of thervargas@google.com2010-05-071-13/+40
| | | | | | | | | | | | | backend. We queue all trasnactions that reach Start before we are done creating the disk cache. BUG=26729 TEST=unittests. Review URL: http://codereview.chromium.org/2002002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46745 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Add support for a dedicated cache thread.rvargas@google.com2010-04-291-2/+14
| | | | | | | | | | | | This is an interface-only change, nothing is really moving to another thread yet. BUG=26730 TEST=none Review URL: http://codereview.chromium.org/983007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45974 0039d316-1c4b-4281-b951-d872f2087c98
* Use HttpRequestHeaders for extra_headers.willchan@chromium.org2010-04-201-1/+1
| | | | | | | | BUG=22588 Review URL: http://codereview.chromium.org/1604011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45096 0039d316-1c4b-4281-b951-d872f2087c98
* Update about:cache to display cached metadata for an entry.tonyg@chromium.org2010-04-191-0/+13
| | | | | | | | | | Also, factor a constant for the number of cache data indices. BUG=32407 TEST=None Review URL: http://codereview.chromium.org/1594036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44918 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Expose storing metadata on a given entry.rvargas@google.com2010-03-021-0/+1
| | | | | | | | | | BUG=32406 TEST=unittests Review URL: http://codereview.chromium.org/660041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40400 0039d316-1c4b-4281-b951-d872f2087c98
* Add APIs to expose http cache's metadata and thervargas@google.com2010-02-231-0/+10
| | | | | | | | | | | the ability to stop caching a given request. BUG=32406, 22900 TEST=none Review URL: http://codereview.chromium.org/600167 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39751 0039d316-1c4b-4281-b951-d872f2087c98
* Added factories for HttpAuthHandler.cbentzel@chromium.org2010-02-151-1/+4
| | | | | | | | | | | | | | | | | | | The driving rationale for this change was to prevent choosing an AuthHandler when it is not supported on the system due to a missing runtime component (such as not being able to locate a gssapi shared library when seeing a Negotiate scheme). It also has the advantage (currently unused) of determining some per-auth-scheme properties only the first time that a challenge for that scheme is seen (such as maximum token length for the SSPI implementation of NTLM). Finally, it may make unit tests easier to generate since the factory can be easily mocked. BUG=34795 TEST=New unit test for HttpAuthHandlerDispatchFactory. Review URL: http://codereview.chromium.org/582007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39065 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Remove the explicit transaction callback and let thervargas@google.com2010-02-111-19/+23
| | | | | | | | | | | cache grab it when needed. BUG=26729 TEST=none. Review URL: http://codereview.chromium.org/594041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38848 0039d316-1c4b-4281-b951-d872f2087c98
* Pass the NetworkChangeNotifier to HostResolver.willchan@chromium.org2010-02-041-2/+5
| | | | | | | | | | | | | | | This requires the following refactors: (1) NetworkChangeNotifier moves out of HttpNetworkSession into IOThread. (2) HostResolver gets initialized with NetworkChangeNotifier. (3) NetworkChangeNotifier needs to get passed into HttpCache and HttpNetworkSession (required updating a lot of files). (4) NetworkChangeNotifier is no longer reference counted. It is owned by IOThread. (5) IOThread gains a new struct: Globals. It can only be used on the io thread. (6) ChromeURLRequestContextFactory uses IOThread::Globals to initialize ChromeURLRequest objects with the host resolver and network change notifier. BUG=26159 Review URL: http://codereview.chromium.org/552117 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38052 0039d316-1c4b-4281-b951-d872f2087c98
* Http Cache: Use asynchronous Open/Create/Doom entry calls.rvargas@google.com2010-01-141-9/+89
| | | | | | | | | | | | | | | | More changes to the state machine: now we really issue asynchronous calls when getting new cache entries. We have to add a new serialization mechanism to the http cache in order to handle races among multiple requests creating and opening the same entry. BUG=26729 TEST=unittests Review URL: http://codereview.chromium.org/523019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36211 0039d316-1c4b-4281-b951-d872f2087c98
* Rename CloseIdleConnections -> CloseCurrentConnections.mbelshe@chromium.org2010-01-141-2/+4
| | | | | | | | | | | | | | | | | This method is (and was) just for debugging; while it was closing idle connections, that was not aggressive enough; the benchmark needs to close all connections, not just the idle ones. To ensure connections are abandoned, create a new pool; leaving the old pool to languish as any pending sockets die. BUG=none TEST=none Review URL: http://codereview.chromium.org/549031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36208 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Use asynchronous IO to read an write thervargas@google.com2009-12-211-0/+2
| | | | | | | | | | | | response headers from the disk cache. BUG=26729 TEST=current unit tests. Review URL: http://codereview.chromium.org/506081 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35094 0039d316-1c4b-4281-b951-d872f2087c98
* Clear disk cache when the cache is not initializedhclam@chromium.org2009-11-071-2/+5
| | | | | | | | | | | | | | BUG=24765 TEST=unit test, clear browsing data and the cache, media cache will be cleared even if a media object was not loaded. Since the disk cache backend in HttpCache is lazily initialized, clearing the cache before it receives the first transaction would have no effect. So initialize the disk cache explicitly when we clear the cache. Review URL: http://codereview.chromium.org/378015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31361 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Make sure that we remove pending transactionsrvargas@google.com2009-10-261-0/+2
| | | | | | | | | | | when they belong to a doomed entry. BUG=25588 TEST=unittests Review URL: http://codereview.chromium.org/335015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30054 0039d316-1c4b-4281-b951-d872f2087c98
* Convert the HTTP cache to use FilePath rather than wstring for thetony@chromium.org2009-10-151-3/+4
| | | | | | | | | | disk cache path. BUG=24672 Review URL: http://codereview.chromium.org/276048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29213 0039d316-1c4b-4281-b951-d872f2087c98
* Initial CL for fixing some of the proxy auth issues.chron@chromium.org2009-10-061-0/+1
| | | | | | | | | | | | | | Auth_cache is contained in the http session. We need to share the http session with the parent profile request context in order to retain http authentication. Weirdly enough, Profile::GetDefaultRequestContext() is not the same as profile_->GetRequestContext(), It does NOT yet pop up a dialog if the user hasn't done so already. BUG=19581 TEST=Included. Review URL: http://codereview.chromium.org/241001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28086 0039d316-1c4b-4281-b951-d872f2087c98
* Implement ScopedRunnableMethodFactory using WeakPtr.darin@chromium.org2009-09-251-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This required some changes to WeakPtr to support the addition of WeakPtrFactory::HasWeakPtrs(), which is used to implement ScopedRunnableMethodFactory::empty(). Now, the WeakReferenceOwner just holds a pointer to the Flag class, and the Flag holds a back-pointer that it can use to clear the WeakReferenceOwner's pointer when the Flag is destroyed. I use the null'ness of this back-pointer in place of the bool member that was previously used to indicate if the WeakReference is valid. It was also necessary to expose a HasOneRef method on RefCounted. I included one on RefCountedThreadSafe for completeness. Finally, I switched HttpCache over to using WeakPtr instead of RevocableStore so that I could delete RevocableStore. (I'm making this change to consolidate similar functionality.) R=abarth BUG=none TEST=none Review URL: http://codereview.chromium.org/235027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27287 0039d316-1c4b-4281-b951-d872f2087c98
* Replace some net::ERR_FAILED generic error codes with more specific codes.eroman@chromium.org2009-09-241-1/+1
| | | | | | | | | | The goal is to end up with more meaningful errors if a page fails to load. BUG=22623 Review URL: http://codereview.chromium.org/222009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27038 0039d316-1c4b-4281-b951-d872f2087c98
* Http Cache: Add support for resuming downloading arvargas@google.com2009-09-041-6/+11
| | | | | | | | | | | | resource after the original request was interrupted. BUG=8995 TEST=unittests Review URL: http://codereview.chromium.org/197016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25551 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Cleanup from tracking of bug 9952.rvargas@google.com2009-09-011-1/+0
| | | | | | | | | BUG=9952 TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24992 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor function to unpack an Entry from its pickle to a HttpResponseInfo.mbelshe@google.com2009-08-251-0/+4
| | | | | | | | | | | This will be used for some dump_cache modifications which are coming. BUG=none TEST=none Review URL: http://codereview.chromium.org/174388 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24319 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Enable experimental support for byte range requests.rvargas@google.com2009-08-241-0/+5
| | | | | | | | | | | Requires --enable-byte-range-support BUG=12258 TEST=covered by unit tests. Review URL: http://codereview.chromium.org/173231 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24113 0039d316-1c4b-4281-b951-d872f2087c98
* Revert cl 24015rvargas@google.com2009-08-211-5/+0
| | | | | | | | | BUG=none TEST=none Review URL: http://codereview.chromium.org/174260 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24026 0039d316-1c4b-4281-b951-d872f2087c98
* Http cache: Enable experimental support for byte range requests.rvargas@google.com2009-08-211-0/+5
| | | | | | | | | | | Requires --enable-byte-range-support BUG=12258 TEST=covered by unit tests. Review URL: http://codereview.chromium.org/173173 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24015 0039d316-1c4b-4281-b951-d872f2087c98
* Pref-backed SSLConfigService for Linux.mattm@chromium.org2009-08-191-0/+3
| | | | | | | | | | Makes SSLConfigService into a ref-counted interface, and makes Profile own an SSLConfigServiceFactory which is used to create the SSLConfigService and pass it through the URLRequestContext on down to where it is actually used. R=eroman,wtc BUG=11507,19290 Review URL: http://codereview.chromium.org/165003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23757 0039d316-1c4b-4281-b951-d872f2087c98
* Http Cache: Deactivate entries without having the key of thervargas@google.com2009-08-071-0/+1
| | | | | | | | | | | | | | | entry to delete. The disk cache may fail to provide the key for a given entry (if there is a disk error, for instance), so we fall back to enumerate the active entries to delete this one. BUG=9952 TEST=unittest Review URL: http://codereview.chromium.org/165089 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22701 0039d316-1c4b-4281-b951-d872f2087c98
* Add more code to debug a crash inside HttpCache::DeactivateEntryrvargas@google.com2009-07-061-0/+1
| | | | | | | | | BUG=9952 TEST=none Review URL: http://codereview.chromium.org/155018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19981 0039d316-1c4b-4281-b951-d872f2087c98
* * Avoid doing concurrent DNS resolves of the same hostname in HostResolver.ericroman@google.com2009-06-121-2/+6
| | | | | | | | | | | | | | | | * Add a 1 minute cache for host resolves. * Refactor HostResolver to handle multiple requests. * Make HostResolver a dependency of URLRequestContext. operate the HostResolver in async mode for proxy resolver (bridging to IO thread). TEST=unittests BUG=13163 Review URL: http://codereview.chromium.org/118100 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18236 0039d316-1c4b-4281-b951-d872f2087c98
* Add two small features to the HttpCache for benchmarking/debugging.mbelshe@google.com2009-06-051-1/+7
| | | | | | | | | | | | | | | | | | The first exposes a method to close all idle sockets. This allows me to create benchmark tests in the app which can close connections before starting the test for better simulations. The second change is to expose cache modes for cache disabled and cache bypassed. DISABLE sets the LOAD_DISABLE_CACHE on every request; BYPASS sets the LOAD_BYPASS_CACHE on every request. TEST=http_cache_unittest.cc BUG=6754 Review URL: http://codereview.chromium.org/119189 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17720 0039d316-1c4b-4281-b951-d872f2087c98
* Disk cache: First pass to make it possible to havervargas@google.com2009-03-251-14/+4
| | | | | | | | | | | | multiple instances of BackendImpl. We need multiple objects to be able to support media files on the cache. After this change, histograms will be the only thing that get messed up by multiple disk caches. Review URL: http://codereview.chromium.org/49027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12520 0039d316-1c4b-4281-b951-d872f2087c98
* Net module changes to support caching responses to a POST request.darin@chromium.org2009-03-241-3/+1
| | | | | | | | | | | The solution is to add a user-defined identifier to UploadData. If that identifier is set, and if the request method is POST, then HttpCache will enable caching for the response. (The cache key will be a composition of the identifier and the URL.) A subsequent POST request to the same URL with the same identifier will "hit" the previously generated cache entry. Reuse from the cache is subject to all of the standard rules. BUG=2636 R=wtc Review URL: http://codereview.chromium.org/52028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12374 0039d316-1c4b-4281-b951-d872f2087c98
* Remove unneeded uses of logging.h in header files.thestig@chromium.org2009-03-121-0/+1
| | | | | | Review URL: http://codereview.chromium.org/43148 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11590 0039d316-1c4b-4281-b951-d872f2087c98
* NO CODE CHANGEdeanm@chromium.org2009-03-111-1/+0
| | | | | | | | | Normalize end of file newlines in net/. All files end in a single newline. Review URL: http://codereview.chromium.org/43079 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11442 0039d316-1c4b-4281-b951-d872f2087c98
* Proposed change to support resource loading for media files.hclam@chromium.org2009-03-021-1/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Highlights of changes: - Added methods to disk_cache::Entry: - Entry::PrepareTargetAsExternalFile(int index) Prepare a stream in an entry to use external file for storage. - Entry::GetExternalFile(int index) Get the external file backing the stream in the entry. - Added a property "CacheType type_" to HttpCache, along with setter and getter. There shall be two cache types, COMMON_CACHE and MEDIA_CACHE for distinguishing between different purpose of HttpCache. We have this property to trigger special behavior for caching needs of media files. - Added static methods to ChromeURLRequestContext - ChromeURLRequestContext::CreateOriginalForMedia Create a URLRequestContext for media files for the original profile. - ChromeURLRequestContext::CreateOffTheRecordForMedia Create a URLRequestContext for media files for off the record profile. - Added method to Profile interface. - GetRequestContextForMedia To get the request context for media files from the context. Design decissions: - Enforce writing to external file by calling methods to Entry rather than construct Backend by a different flag. Since we only want a valid and full response to go into an external file rather than redirection response or erroneous response, we should let HttpCache::Transaction to decide when to have an external file for response data. We eliminate a lot of useless external cache files. - Adding the CacheType enum and property to HttpCache, we could allow possible (?) future extensions to HttpCache to handle other different caching needs. And there's no need to add change constructors of HttpCache, but maybe we should add a specific constructor to accomodate a media HttpCache? - Adding Profile::GetRequestContextForMedia() Since we will need to use this new request context in ResourceDispatcherHost, I think the best place to keep it is in the profile. Also we will expose to user that there's a separate cache for media, so it's better to expose it in the Profile level to allow settings to the media cache, e.g. max file size, etc. Review URL: http://codereview.chromium.org/19747 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10745 0039d316-1c4b-4281-b951-d872f2087c98