Index: chrome/browser/renderer_host/download_resource_handler.cc |
diff --git a/chrome/browser/renderer_host/download_resource_handler.cc b/chrome/browser/renderer_host/download_resource_handler.cc |
index f35d5e4166ce7a127ce62a813137ecc2081b24e6..131426166e432384e9f521dae1c347a8d4c0da30 100644 |
--- a/chrome/browser/renderer_host/download_resource_handler.cc |
+++ b/chrome/browser/renderer_host/download_resource_handler.cc |
@@ -33,6 +33,8 @@ DownloadResourceHandler::DownloadResourceHandler( |
DownloadFileManager* download_file_manager, |
net::URLRequest* request, |
bool save_as, |
+ OnResponseStartedCallback started_cb, |
+ OnUnstartableCallback unstartable_cb, |
const DownloadSaveInfo& save_info) |
: download_id_(-1), |
global_id_(render_process_host_id, request_id), |
@@ -41,6 +43,8 @@ DownloadResourceHandler::DownloadResourceHandler( |
download_file_manager_(download_file_manager), |
request_(request), |
save_as_(save_as), |
+ started_cb_(started_cb), |
+ unstartable_cb_(unstartable_cb), |
save_info_(save_info), |
buffer_(new DownloadBuffer), |
rdh_(rdh), |
@@ -79,6 +83,8 @@ bool DownloadResourceHandler::OnResponseStarted(int request_id, |
download_id_ = download_file_manager_->GetNextId(); |
+ started_cb_.Run(download_id_); |
+ |
// Deleted in DownloadManager. |
DownloadCreateInfo* info = new DownloadCreateInfo; |
info->url_chain = request_->url_chain(); |
@@ -178,6 +184,9 @@ bool DownloadResourceHandler::OnResponseCompleted( |
<< " status.os_error() = " << status.os_error(); |
int error_code = (status.status() == net::URLRequestStatus::FAILED) ? |
status.os_error() : 0; |
+ if (download_id_ == -1) { |
+ unstartable_cb_.Run(error_code); |
+ } |
// We transfer ownership to |DownloadFileManager| to delete |buffer_|, |
// so that any functions queued up on the FILE thread are executed |
// before deletion. |