diff options
author | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 03:59:18 +0000 |
---|---|---|
committer | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 03:59:18 +0000 |
commit | 146b8b276bc5388c25482c78d270e7fa773e3cc5 (patch) | |
tree | fa6608a7bbb88a7b71e146b6cfa642be51493d92 /content/browser/loader/resource_request_info_impl.h | |
parent | f967658e63c06a3fe1b505375d14bead8b35eb0b (diff) | |
download | chromium_src-146b8b276bc5388c25482c78d270e7fa773e3cc5.zip chromium_src-146b8b276bc5388c25482c78d270e7fa773e3cc5.tar.gz chromium_src-146b8b276bc5388c25482c78d270e7fa773e3cc5.tar.bz2 |
Allow prefetches to outlive their owning RenderViewHost.
This is a rework of r231910. Instead of putting the detachable logic in
AsyncResourceHandler, move it to a wrapper DetachableResourceHandler. On
detach, it simulates a cancel to the ResourceHandler it wraps and then
continues to drain the request itself. This should have fewer buffering
complications.
BUG=286186
TEST=ResourceDispatcherHostTest.Cancel,
ResourceDispatcherHostTest.DetachedResourceTimesOut,
ResourceDispatcherHostTest.DeletedFilterDetached,
ResourceDispatcherHostTest.DeletedFilterDetachedRedirect,
ResourceDispatcherHostTest.DetachWhileStartIsDeferred
ResourceDispatcherHostTest.TestProcessCancelDetachedTimeout,
ResourceDispatcherHostTest.CancelRequestsForContextDetached,
ResourceDispatcherHostTest.DataSentBeforeDetach
Review URL: https://codereview.chromium.org/59783003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236132 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/loader/resource_request_info_impl.h')
-rw-r--r-- | content/browser/loader/resource_request_info_impl.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/content/browser/loader/resource_request_info_impl.h b/content/browser/loader/resource_request_info_impl.h index b6f8563..0db6259 100644 --- a/content/browser/loader/resource_request_info_impl.h +++ b/content/browser/loader/resource_request_info_impl.h @@ -8,6 +8,7 @@ #include <string> #include "base/basictypes.h" +#include "base/gtest_prod_util.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" @@ -19,6 +20,7 @@ namespace content { class CrossSiteResourceHandler; +class DetachableResourceHandler; class ResourceContext; class ResourceMessageFilter; struct GlobalRequestID; @@ -117,6 +119,14 @@ class ResourceRequestInfoImpl : public ResourceRequestInfo, return should_replace_current_entry_; } + // DetachableResourceHandler for this request. May be NULL. + DetachableResourceHandler* detachable_handler() const { + return detachable_handler_; + } + void set_detachable_handler(DetachableResourceHandler* h) { + detachable_handler_ = h; + } + // Identifies the type of process (renderer, plugin, etc.) making the request. int process_type() const { return process_type_; } @@ -141,8 +151,13 @@ class ResourceRequestInfoImpl : public ResourceRequestInfo, void set_memory_cost(int cost) { memory_cost_ = cost; } private: + FRIEND_TEST_ALL_PREFIXES(ResourceDispatcherHostTest, + DeletedFilterDetached); + FRIEND_TEST_ALL_PREFIXES(ResourceDispatcherHostTest, + DeletedFilterDetachedRedirect); // Non-owning, may be NULL. CrossSiteResourceHandler* cross_site_handler_; + DetachableResourceHandler* detachable_handler_; int process_type_; int child_id_; |