Index: content/browser/loader/resource_handler.cc |
diff --git a/content/browser/loader/resource_handler.cc b/content/browser/loader/resource_handler.cc |
index 1c9287e3ad29d84bad0ff66b299e765c2d4fb485..e2a1155630400ce0558e859fa80f68ade2bfe0fd 100644 |
--- a/content/browser/loader/resource_handler.cc |
+++ b/content/browser/loader/resource_handler.cc |
@@ -4,6 +4,7 @@ |
#include "content/browser/loader/resource_handler.h" |
+#include "content/browser/loader/resource_dispatcher_host_impl.h" |
#include "content/browser/loader/resource_request_info_impl.h" |
namespace content { |
@@ -11,12 +12,30 @@ namespace content { |
ResourceHandler::~ResourceHandler() {} |
ResourceHandler::ResourceHandler(net::URLRequest* request) |
- : controller_(NULL), |
- request_(request) { |
+ : request_(request) {} |
+ |
+std::unique_ptr<ResourceController> ResourceHandler::TakeController() { |
+ DCHECK(controller_); |
+ |
+ std::unique_ptr<ResourceController> controller; |
+ std::swap(controller, controller_); |
+ return controller; |
+} |
+ |
+void ResourceHandler::Resume() { |
+ TakeController()->Resume(); |
+} |
+ |
+void ResourceHandler::Cancel() { |
+ TakeController()->Cancel(); |
+} |
+ |
+void ResourceHandler::CancelAndIgnore() { |
+ TakeController()->CancelAndIgnore(); |
} |
-void ResourceHandler::SetController(ResourceController* controller) { |
- controller_ = controller; |
+void ResourceHandler::CancelWithError(int error_code) { |
+ TakeController()->CancelWithError(error_code); |
} |
ResourceRequestInfoImpl* ResourceHandler::GetRequestInfo() const { |
@@ -31,4 +50,10 @@ ResourceMessageFilter* ResourceHandler::GetFilter() const { |
return GetRequestInfo()->filter(); |
} |
+void ResourceHandler::OutOfBandCancel() { |
+ ResourceRequestInfoImpl* info = GetRequestInfo(); |
+ GlobalRequestID id = info->GetGlobalRequestID(); |
+ ResourceDispatcherHostImpl::Get()->CancelRequest(id.child_id, id.request_id); |
+} |
+ |
} // namespace content |