Chromium Code Reviews| Index: content/browser/loader/resource_handler.cc |
| diff --git a/content/browser/loader/resource_handler.cc b/content/browser/loader/resource_handler.cc |
| index 896809a3d2d334001d4d3f5fb92352b2657de096..cfd6d71988b5d4a3d8b609688ae154caa0611c40 100644 |
| --- a/content/browser/loader/resource_handler.cc |
| +++ b/content/browser/loader/resource_handler.cc |
| @@ -8,15 +8,52 @@ |
| namespace content { |
| +ResourceHandler::Delegate::Delegate() {} |
| + |
| +ResourceHandler::Delegate::~Delegate() {} |
| + |
| +void ResourceHandler::SetDelegate(Delegate* delegate) { |
| + delegate_ = delegate; |
| +} |
| + |
| ResourceHandler::~ResourceHandler() {} |
| ResourceHandler::ResourceHandler(net::URLRequest* request) |
| - : controller_(NULL), |
| - request_(request) { |
| + : request_(request) {} |
| + |
| +void ResourceHandler::HoldController( |
| + std::unique_ptr<ResourceController> controller) { |
| + controller_ = std::move(controller); |
| +} |
| + |
| +std::unique_ptr<ResourceController> ResourceHandler::ReleaseController() { |
| + DCHECK(controller_); |
| + |
| + // Can't use std::move, as that doesn't allow subsequently checking if |
| + // |controller_| is null or not. |
|
Charlie Harrison
2017/01/25 20:23:00
Are you sure? I thought move semantics guaranteed
mmenke
2017/01/25 22:07:59
You're right...It's not guaranteed be std::move in
|
| + std::unique_ptr<ResourceController> controller; |
| + std::swap(controller, controller_); |
| + return controller; |
| +} |
| + |
| +void ResourceHandler::Resume() { |
| + ReleaseController()->Resume(); |
| +} |
| + |
| +void ResourceHandler::Cancel() { |
| + ReleaseController()->Cancel(); |
| +} |
| + |
| +void ResourceHandler::CancelAndIgnore() { |
| + ReleaseController()->CancelAndIgnore(); |
| +} |
| + |
| +void ResourceHandler::CancelWithError(int error_code) { |
| + ReleaseController()->CancelWithError(error_code); |
| } |
| -void ResourceHandler::SetController(ResourceController* controller) { |
| - controller_ = controller; |
| +void ResourceHandler::OutOfBandCancel(int error_code, bool tell_renderer) { |
| + delegate_->OutOfBandCancel(error_code, tell_renderer); |
| } |
| ResourceRequestInfoImpl* ResourceHandler::GetRequestInfo() const { |