Index: content/browser/download/download_resource_handler.cc |
diff --git a/content/browser/download/download_resource_handler.cc b/content/browser/download/download_resource_handler.cc |
index d34615ff2d373c66abe2e796b85b49a45bdddbc2..e726bfbc80d87a3f7b93a49ad9fabe45c52add48 100644 |
--- a/content/browser/download/download_resource_handler.cc |
+++ b/content/browser/download/download_resource_handler.cc |
@@ -31,12 +31,13 @@ DownloadResourceHandler::DownloadResourceHandler( |
int render_view_id, |
int request_id, |
const GURL& url, |
+ DownloadId dl_id, |
DownloadFileManager* download_file_manager, |
net::URLRequest* request, |
bool save_as, |
const DownloadResourceHandler::OnStartedCallback& started_cb, |
const DownloadSaveInfo& save_info) |
- : download_id_(-1), |
+ : download_id_(dl_id), |
global_id_(render_process_host_id, request_id), |
render_view_id_(render_view_id), |
content_length_(0), |
@@ -48,6 +49,7 @@ DownloadResourceHandler::DownloadResourceHandler( |
buffer_(new DownloadBuffer), |
rdh_(rdh), |
is_paused_(false) { |
+ DCHECK(dl_id.IsValid()); |
download_stats::RecordDownloadCount(download_stats::UNTHROTTLED_COUNT); |
} |
@@ -68,6 +70,7 @@ bool DownloadResourceHandler::OnRequestRedirected(int request_id, |
// Send the download creation information to the download thread. |
bool DownloadResourceHandler::OnResponseStarted(int request_id, |
ResourceResponse* response) { |
+ DCHECK(download_id_.IsValid()); |
VLOG(20) << __FUNCTION__ << "()" << DebugString() |
<< " request_id = " << request_id; |
download_start_time_ = base::TimeTicks::Now(); |
@@ -80,15 +83,19 @@ bool DownloadResourceHandler::OnResponseStarted(int request_id, |
const ResourceDispatcherHostRequestInfo* request_info = |
ResourceDispatcherHost::InfoForRequest(request_); |
- download_id_ = download_file_manager_->GetNextId(); |
- |
// Deleted in DownloadManager. |
DownloadCreateInfo* info = new DownloadCreateInfo(FilePath(), GURL(), |
base::Time::Now(), 0, content_length_, DownloadItem::IN_PROGRESS, |
- download_id_, request_info->has_user_gesture(), |
+ download_id_.local(), request_info->has_user_gesture(), |
request_info->transition_type()); |
info->url_chain = request_->url_chain(); |
info->referrer_url = GURL(request_->referrer()); |
+ info->start_time = base::Time::Now(); |
+ info->received_bytes = 0; |
+ info->total_bytes = content_length_; |
+ info->state = DownloadItem::IN_PROGRESS; |
+ info->download_id = download_id_.local(); |
+ info->has_user_gesture = request_info->has_user_gesture(); |
info->request_handle = DownloadRequestHandle(rdh_, |
global_id_.child_id, |
render_view_id_, |
@@ -189,7 +196,7 @@ bool DownloadResourceHandler::OnResponseCompleted( |
<< " status.error() = " << status.error(); |
net::Error error_code = (status.status() == net::URLRequestStatus::FAILED) ? |
static_cast<net::Error>(status.error()) : net::OK; |
- if (download_id_ == -1) |
+ if (!download_id_.IsValid()) |
CallStartedCB(error_code); |
// We transfer ownership to |DownloadFileManager| to delete |buffer_|, |
// so that any functions queued up on the FILE thread are executed |
@@ -270,7 +277,7 @@ std::string DownloadResourceHandler::DebugString() const { |
" save_info_.file_path = \"%" PRFilePath "\"" |
" }", |
request_->url().spec().c_str(), |
- download_id_, |
+ download_id_.local(), |
global_id_.child_id, |
global_id_.request_id, |
render_view_id_, |