| Index: chrome/browser/download/download_manager.cc
|
| diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc
|
| index f7e05f7d20dd12d9141808959a504543c157f7a7..ec8926edda9d1b1f6d23089374ac54e293b92c1f 100644
|
| --- a/chrome/browser/download/download_manager.cc
|
| +++ b/chrome/browser/download/download_manager.cc
|
| @@ -21,6 +21,7 @@
|
| #include "chrome/browser/download/download_history.h"
|
| #include "chrome/browser/download/download_item.h"
|
| #include "chrome/browser/download/download_prefs.h"
|
| +#include "chrome/browser/download/download_process_handle.h"
|
| #include "chrome/browser/download/download_safe_browsing_client.h"
|
| #include "chrome/browser/download/download_status_updater.h"
|
| #include "chrome/browser/download/download_util.h"
|
| @@ -432,8 +433,7 @@ void DownloadManager::OnPathExistenceAvailable(DownloadCreateInfo* info) {
|
| if (!select_file_dialog_.get())
|
| select_file_dialog_ = SelectFileDialog::Create(this);
|
|
|
| - TabContents* contents = tab_util::GetTabContentsByID(info->child_id,
|
| - info->render_view_id);
|
| + TabContents* contents = info->process_handle.GetTabContents();
|
| SelectFileDialog::FileTypeInfo file_type_info;
|
| FilePath::StringType extension = info->suggested_path.Extension();
|
| if (!extension.empty()) {
|
| @@ -703,22 +703,15 @@ void DownloadManager::DownloadCancelled(int32 download_id) {
|
| download_history_->UpdateEntry(download);
|
| }
|
|
|
| - DownloadCancelledInternal(download_id,
|
| - download->render_process_id(),
|
| - download->request_id());
|
| + DownloadCancelledInternal(download_id, download->process_handle());
|
| }
|
|
|
| -void DownloadManager::DownloadCancelledInternal(int download_id,
|
| - int render_process_id,
|
| - int request_id) {
|
| +void DownloadManager::DownloadCancelledInternal(
|
| + int download_id, DownloadProcessHandle process_handle) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| // Cancel the network request. RDH is guaranteed to outlive the IO thread.
|
| - BrowserThread::PostTask(
|
| - BrowserThread::IO, FROM_HERE,
|
| - NewRunnableFunction(&download_util::CancelDownloadRequest,
|
| - g_browser_process->resource_dispatcher_host(),
|
| - render_process_id,
|
| - request_id));
|
| + download_util::CancelDownloadRequest(
|
| + g_browser_process->resource_dispatcher_host(), process_handle);
|
|
|
| BrowserThread::PostTask(
|
| BrowserThread::FILE, FROM_HERE,
|
| @@ -776,8 +769,7 @@ void DownloadManager::PauseDownload(int32 download_id, bool pause) {
|
| NewRunnableMethod(this,
|
| &DownloadManager::PauseDownloadRequest,
|
| g_browser_process->resource_dispatcher_host(),
|
| - download->render_process_id(),
|
| - download->request_id(),
|
| + download->process_handle(),
|
| pause));
|
| }
|
|
|
| @@ -787,11 +779,12 @@ void DownloadManager::UpdateAppIcon() {
|
| }
|
|
|
| void DownloadManager::PauseDownloadRequest(ResourceDispatcherHost* rdh,
|
| - int render_process_id,
|
| - int request_id,
|
| + DownloadProcessHandle process_handle,
|
| bool pause) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - rdh->PauseRequest(render_process_id, request_id, pause);
|
| + rdh->PauseRequest(process_handle.child_id(),
|
| + process_handle.request_id(),
|
| + pause);
|
| }
|
|
|
| void DownloadManager::RemoveDownload(int64 download_handle) {
|
| @@ -982,9 +975,7 @@ void DownloadManager::FileSelectionCanceled(void* params) {
|
| // The user didn't pick a place to save the file, so need to cancel the
|
| // download that's already in progress to the temporary location.
|
| DownloadCreateInfo* info = reinterpret_cast<DownloadCreateInfo*>(params);
|
| - DownloadCancelledInternal(info->download_id,
|
| - info->child_id,
|
| - info->request_id);
|
| + DownloadCancelledInternal(info->download_id, info->process_handle);
|
| }
|
|
|
| void DownloadManager::DangerousDownloadValidated(DownloadItem* download) {
|
| @@ -1044,7 +1035,7 @@ void DownloadManager::OnCreateDownloadEntryComplete(
|
|
|
| // Show in the appropriate browser UI.
|
| // This includes buttons to save or cancel, for a dangerous download.
|
| - ShowDownloadInBrowser(info, download);
|
| + ShowDownloadInBrowser(info.process_handle, download);
|
|
|
| // Inform interested objects about the new download.
|
| NotifyModelChanged();
|
| @@ -1068,13 +1059,12 @@ void DownloadManager::OnCreateDownloadEntryComplete(
|
| }
|
| }
|
|
|
| -void DownloadManager::ShowDownloadInBrowser(const DownloadCreateInfo& info,
|
| - DownloadItem* download) {
|
| +void DownloadManager::ShowDownloadInBrowser(
|
| + DownloadProcessHandle process_handle, DownloadItem* download) {
|
| // The 'contents' may no longer exist if the user closed the tab before we
|
| // get this start completion event. If it does, tell the origin TabContents
|
| // to display its download shelf.
|
| - TabContents* contents = tab_util::GetTabContentsByID(info.child_id,
|
| - info.render_view_id);
|
| + TabContents* contents = process_handle.GetTabContents();
|
|
|
| // If the contents no longer exists, we start the download in the last active
|
| // browser. This is not ideal but better than fully hiding the download from
|
|
|