blob: 0adbfc2b19a9c230239667cafbab586925eaedd0 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/loader/resource_handler.h"
#include "base/command_line.h"
#include "base/strings/string_number_conversions.h"
#include "content/browser/loader/resource_request_info_impl.h"
namespace content {
ResourceHandler::Delegate::Delegate() {}
ResourceHandler::Delegate::~Delegate() {}
void ResourceHandler::Delegate::PauseReadingBodyFromNet() {}
void ResourceHandler::Delegate::ResumeReadingBodyFromNet() {}
void ResourceHandler::SetDelegate(Delegate* delegate) {
delegate_ = delegate;
}
ResourceHandler::~ResourceHandler() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
}
ResourceHandler::ResourceHandler(net::URLRequest* request)
: request_(request) {}
void ResourceHandler::HoldController(
std::unique_ptr<ResourceController> controller) {
controller_ = std::move(controller);
}
std::unique_ptr<ResourceController> ResourceHandler::ReleaseController() {
DCHECK(controller_);
return std::move(controller_);
}
void ResourceHandler::Resume() {
ReleaseController()->Resume();
}
void ResourceHandler::ResumeForRedirect(
const std::vector<std::string>& removed_headers,
const net::HttpRequestHeaders& modified_headers) {
ReleaseController()->ResumeForRedirect(removed_headers, modified_headers);
}
void ResourceHandler::Cancel() {
ReleaseController()->Cancel();
}
void ResourceHandler::CancelWithError(int error_code) {
ReleaseController()->CancelWithError(error_code);
}
void ResourceHandler::OutOfBandCancel(int error_code, bool tell_renderer) {
delegate_->OutOfBandCancel(error_code, tell_renderer);
}
void ResourceHandler::PauseReadingBodyFromNet() {
delegate_->PauseReadingBodyFromNet();
}
void ResourceHandler::ResumeReadingBodyFromNet() {
delegate_->ResumeReadingBodyFromNet();
}
void ResourceHandler::GetNumericArg(const std::string& name, int* result) {
const std::string& value =
base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(name);
if (!value.empty())
base::StringToInt(value, result);
}
ResourceRequestInfoImpl* ResourceHandler::GetRequestInfo() const {
return ResourceRequestInfoImpl::ForRequest(request_);
}
int ResourceHandler::GetRequestID() const {
return GetRequestInfo()->GetRequestID();
}
ResourceMessageFilter* ResourceHandler::GetFilter() const {
return GetRequestInfo()->requester_info()->filter();
}
} // namespace content