| Index: content/browser/download/download_file_manager.cc
|
| diff --git a/content/browser/download/download_file_manager.cc b/content/browser/download/download_file_manager.cc
|
| index 8450c0fcb87e2641569ec3f8e574d552fe87ad28..e6ecc9f81d49118e9e0b8301cba279c05d6eae05 100644
|
| --- a/content/browser/download/download_file_manager.cc
|
| +++ b/content/browser/download/download_file_manager.cc
|
| @@ -11,9 +11,10 @@
|
| #include "base/utf_string_conversions.h"
|
| #include "content/browser/browser_thread.h"
|
| #include "content/browser/download/download_buffer.h"
|
| -#include "content/browser/download/download_file.h"
|
| #include "content/browser/download/download_create_info.h"
|
| +#include "content/browser/download/download_file.h"
|
| #include "content/browser/download/download_manager.h"
|
| +#include "content/browser/download/download_request_handle.h"
|
| #include "content/browser/renderer_host/resource_dispatcher_host.h"
|
| #include "content/browser/tab_contents/tab_contents.h"
|
| #include "content/public/browser/download_manager_delegate.h"
|
| @@ -49,9 +50,9 @@ void DownloadFileManager::OnShutdown() {
|
| STLDeleteValues(&downloads_);
|
| }
|
|
|
| -void DownloadFileManager::CreateDownloadFile(DownloadCreateInfo* info,
|
| - DownloadManager* download_manager,
|
| - bool get_hash) {
|
| +void DownloadFileManager::CreateDownloadFile(
|
| + DownloadCreateInfo* info, const DownloadRequestHandle& request_handle,
|
| + DownloadManager* download_manager, bool get_hash) {
|
| DCHECK(info);
|
| VLOG(20) << __FUNCTION__ << "()" << " info = " << info->DebugString();
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| @@ -60,9 +61,9 @@ void DownloadFileManager::CreateDownloadFile(DownloadCreateInfo* info,
|
| scoped_ptr<DownloadCreateInfo> infop(info);
|
|
|
| scoped_ptr<DownloadFile>
|
| - download_file(new DownloadFile(info, download_manager));
|
| + download_file(new DownloadFile(info, request_handle, download_manager));
|
| if (net::OK != download_file->Initialize(get_hash)) {
|
| - info->request_handle.CancelRequest();
|
| + request_handle.CancelRequest();
|
| return;
|
| }
|
|
|
| @@ -71,7 +72,7 @@ void DownloadFileManager::CreateDownloadFile(DownloadCreateInfo* info,
|
| downloads_[global_id] = download_file.release();
|
|
|
| // The file is now ready, we can un-pause the request and start saving data.
|
| - info->request_handle.ResumeRequest();
|
| + request_handle.ResumeRequest();
|
|
|
| StartUpdateTimer();
|
|
|
| @@ -115,13 +116,14 @@ void DownloadFileManager::UpdateInProgressDownloads() {
|
| }
|
| }
|
|
|
| -void DownloadFileManager::StartDownload(DownloadCreateInfo* info) {
|
| +void DownloadFileManager::StartDownload(
|
| + DownloadCreateInfo* info, const DownloadRequestHandle& request_handle) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| DCHECK(info);
|
|
|
| - DownloadManager* manager = info->request_handle.GetDownloadManager();
|
| + DownloadManager* manager = request_handle.GetDownloadManager();
|
| if (!manager) {
|
| - info->request_handle.CancelRequest();
|
| + request_handle.CancelRequest();
|
| delete info;
|
| return;
|
| }
|
| @@ -129,12 +131,13 @@ void DownloadFileManager::StartDownload(DownloadCreateInfo* info) {
|
| // TODO(phajdan.jr): fix the duplication of path info below.
|
| info->path = info->save_info.file_path;
|
|
|
| - manager->CreateDownloadItem(info);
|
| + manager->CreateDownloadItem(info, request_handle);
|
| bool hash_needed = manager->delegate()->GenerateFileHash();
|
|
|
| BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| NewRunnableMethod(this, &DownloadFileManager::CreateDownloadFile,
|
| - info, make_scoped_refptr(manager), hash_needed));
|
| + info, request_handle, make_scoped_refptr(manager),
|
| + hash_needed));
|
| }
|
|
|
| // We don't forward an update to the UI thread here, since we want to throttle
|
|
|