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 47991f5fe248acc2114d71b914a537af7f9c5729..b0475ce0db12d7fb4f02e859102b61002a2bb5bd 100644 |
--- a/content/browser/loader/sync_resource_handler.cc |
+++ b/content/browser/loader/sync_resource_handler.cc |
@@ -4,6 +4,7 @@ |
#include "content/browser/loader/sync_resource_handler.h" |
+#include "base/callback_helpers.h" |
#include "base/logging.h" |
#include "content/browser/loader/netlog_observer.h" |
#include "content/browser/loader/resource_dispatcher_host_impl.h" |
@@ -20,25 +21,19 @@ namespace content { |
SyncResourceHandler::SyncResourceHandler( |
net::URLRequest* request, |
- IPC::Message* result_message, |
+ const SyncLoadResultCallback& result_handler, |
ResourceDispatcherHostImpl* resource_dispatcher_host) |
: ResourceHandler(request), |
read_buffer_(new net::IOBuffer(kReadBufSize)), |
- result_message_(result_message), |
+ result_handler_(result_handler), |
rdh_(resource_dispatcher_host), |
total_transfer_size_(0) { |
result_.final_url = request->url(); |
} |
SyncResourceHandler::~SyncResourceHandler() { |
- if (result_message_) { |
- result_message_->set_reply_error(); |
- ResourceMessageFilter* filter = GetFilter(); |
- // If the filter doesn't exist at this point, the process has died and isn't |
- // waiting for the result message anymore. |
- if (filter) |
- filter->Send(result_message_); |
- } |
+ if (result_handler_) |
+ result_handler_.Run(nullptr); |
} |
bool SyncResourceHandler::OnRequestRedirected( |
@@ -114,20 +109,13 @@ bool SyncResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { |
void SyncResourceHandler::OnResponseCompleted( |
const net::URLRequestStatus& status, |
bool* defer) { |
- ResourceMessageFilter* filter = GetFilter(); |
- if (!filter) |
- return; |
- |
result_.error_code = status.error(); |
int total_transfer_size = request()->GetTotalReceivedBytes(); |
result_.encoded_data_length = total_transfer_size_ + total_transfer_size; |
result_.encoded_body_length = request()->GetRawBodyBytes(); |
- ResourceHostMsg_SyncLoad::WriteReplyParams(result_message_, result_); |
- filter->Send(result_message_); |
- result_message_ = NULL; |
- return; |
+ base::ResetAndReturn(&result_handler_).Run(&result_); |
} |
void SyncResourceHandler::OnDataDownloaded(int bytes_downloaded) { |