summaryrefslogtreecommitdiffstats
path: root/content/browser/loader/resource_request_info_impl.h
diff options
context:
space:
mode:
authordavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 03:59:18 +0000
committerdavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 03:59:18 +0000
commit146b8b276bc5388c25482c78d270e7fa773e3cc5 (patch)
treefa6608a7bbb88a7b71e146b6cfa642be51493d92 /content/browser/loader/resource_request_info_impl.h
parentf967658e63c06a3fe1b505375d14bead8b35eb0b (diff)
downloadchromium_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.h15
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_;