| Index: content/browser/loader/sync_resource_handler.cc
|
| diff --git a/content/browser/loader/sync_resource_handler.cc b/content/browser/loader/sync_resource_handler.cc
|
| index 21e520b4547ab789a576114ddb7e2f59bbde8177..3dbea2dd9567cfa0f9ef4fefa5e8bd4f9913eabf 100644
|
| --- a/content/browser/loader/sync_resource_handler.cc
|
| +++ b/content/browser/loader/sync_resource_handler.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/callback_helpers.h"
|
| #include "base/logging.h"
|
| #include "content/browser/loader/netlog_observer.h"
|
| +#include "content/browser/loader/resource_controller.h"
|
| #include "content/browser/loader/resource_dispatcher_host_impl.h"
|
| #include "content/browser/loader/resource_request_info_impl.h"
|
| #include "content/common/resource_messages.h"
|
| @@ -35,10 +36,10 @@ SyncResourceHandler::~SyncResourceHandler() {
|
| result_handler_.Run(nullptr);
|
| }
|
|
|
| -bool SyncResourceHandler::OnRequestRedirected(
|
| +void SyncResourceHandler::OnRequestRedirected(
|
| const net::RedirectInfo& redirect_info,
|
| ResourceResponse* response,
|
| - bool* defer) {
|
| + std::unique_ptr<ResourceController> controller) {
|
| if (rdh_->delegate()) {
|
| rdh_->delegate()->OnRequestRedirected(
|
| redirect_info.new_url, request(), GetRequestInfo()->GetContext(),
|
| @@ -51,21 +52,24 @@ bool SyncResourceHandler::OnRequestRedirected(
|
| // WebCore/platform/network/cf/ResourceHandleCFNet.cpp :-(
|
| if (redirect_info.new_url.GetOrigin() != result_.final_url.GetOrigin()) {
|
| LOG(ERROR) << "Cross origin redirect denied";
|
| - return false;
|
| + controller->Cancel();
|
| + return;
|
| }
|
| result_.final_url = redirect_info.new_url;
|
|
|
| total_transfer_size_ += request()->GetTotalReceivedBytes();
|
| - return true;
|
| + controller->Resume();
|
| }
|
|
|
| -bool SyncResourceHandler::OnResponseStarted(
|
| +void SyncResourceHandler::OnResponseStarted(
|
| ResourceResponse* response,
|
| - bool* defer) {
|
| + std::unique_ptr<ResourceController> controller) {
|
| ResourceRequestInfoImpl* info = GetRequestInfo();
|
| DCHECK(info->requester_info()->IsRenderer());
|
| - if (!info->requester_info()->filter())
|
| - return false;
|
| + if (!info->requester_info()->filter()) {
|
| + controller->Cancel();
|
| + return;
|
| + }
|
|
|
| if (rdh_->delegate()) {
|
| rdh_->delegate()->OnResponseStarted(request(), info->GetContext(),
|
| @@ -83,11 +87,13 @@ bool SyncResourceHandler::OnResponseStarted(
|
| result_.response_time = response->head.response_time;
|
| result_.load_timing = response->head.load_timing;
|
| result_.devtools_info = response->head.devtools_info;
|
| - return true;
|
| + controller->Resume();
|
| }
|
|
|
| -bool SyncResourceHandler::OnWillStart(const GURL& url, bool* defer) {
|
| - return true;
|
| +void SyncResourceHandler::OnWillStart(
|
| + const GURL& url,
|
| + std::unique_ptr<ResourceController> controller) {
|
| + controller->Resume();
|
| }
|
|
|
| bool SyncResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf,
|
| @@ -99,16 +105,17 @@ bool SyncResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf,
|
| return true;
|
| }
|
|
|
| -bool SyncResourceHandler::OnReadCompleted(int bytes_read, bool* defer) {
|
| - if (!bytes_read)
|
| - return true;
|
| - result_.data.append(read_buffer_->data(), bytes_read);
|
| - return true;
|
| +void SyncResourceHandler::OnReadCompleted(
|
| + int bytes_read,
|
| + std::unique_ptr<ResourceController> controller) {
|
| + if (bytes_read)
|
| + result_.data.append(read_buffer_->data(), bytes_read);
|
| + controller->Resume();
|
| }
|
|
|
| void SyncResourceHandler::OnResponseCompleted(
|
| const net::URLRequestStatus& status,
|
| - bool* defer) {
|
| + std::unique_ptr<ResourceController> controller) {
|
| result_.error_code = status.error();
|
|
|
| int total_transfer_size = request()->GetTotalReceivedBytes();
|
| @@ -116,6 +123,8 @@ void SyncResourceHandler::OnResponseCompleted(
|
| result_.encoded_body_length = request()->GetRawBodyBytes();
|
|
|
| base::ResetAndReturn(&result_handler_).Run(&result_);
|
| +
|
| + controller->Resume();
|
| }
|
|
|
| void SyncResourceHandler::OnDataDownloaded(int bytes_downloaded) {
|
|
|