Chromium Code Reviews| Index: content/shell/shell_download_manager_delegate.cc |
| diff --git a/content/shell/shell_download_manager_delegate.cc b/content/shell/shell_download_manager_delegate.cc |
| index 2bb5425f54f1c0aa8979b626aa5d80846e18d997..f7b42458096acfc6edb16eeb2033f085a3b6bd01 100644 |
| --- a/content/shell/shell_download_manager_delegate.cc |
| +++ b/content/shell/shell_download_manager_delegate.cc |
| @@ -35,15 +35,14 @@ void ShellDownloadManagerDelegate::SetDownloadManager( |
| download_manager_ = download_manager; |
| } |
| -bool ShellDownloadManagerDelegate::ShouldStartDownload(int32 download_id) { |
| - DownloadItem* download = |
| - download_manager_->GetActiveDownloadItem(download_id); |
| - |
| +bool ShellDownloadManagerDelegate::DetermineDownloadTarget( |
| + DownloadItem* download, |
| + const DownloadTargetCallback& callback) { |
| if (!download->GetForcedFilePath().empty()) { |
| - download->OnTargetPathDetermined( |
| - download->GetForcedFilePath(), |
| - DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
| - content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS); |
| + callback.Run(download->GetForcedFilePath(), |
| + DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
| + content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
|
jam
2012/07/24 20:41:16
nit: here and below, get rid of content::
asanka
2012/07/24 21:21:29
Done.
|
| + download->GetForcedFilePath()); |
| return true; |
| } |
| @@ -60,12 +59,13 @@ bool ShellDownloadManagerDelegate::ShouldStartDownload(int32 download_id) { |
| FROM_HERE, |
| base::Bind( |
| &ShellDownloadManagerDelegate::GenerateFilename, |
| - this, download_id, generated_name)); |
| + this, download->GetId(), callback, generated_name)); |
| return false; |
| } |
| void ShellDownloadManagerDelegate::GenerateFilename( |
| int32 download_id, |
| + const DownloadTargetCallback& callback, |
| const FilePath& generated_name) { |
| FilePath suggested_path = download_manager_->GetBrowserContext()->GetPath(). |
| Append(FILE_PATH_LITERAL("Downloads")); |
| @@ -77,29 +77,21 @@ void ShellDownloadManagerDelegate::GenerateFilename( |
| BrowserThread::UI, |
| FROM_HERE, |
| base::Bind( |
| - &ShellDownloadManagerDelegate::RestartDownload, |
| - this, download_id, suggested_path)); |
| + &ShellDownloadManagerDelegate::ChooseDownloadPath, |
| + this, download_id, callback, suggested_path)); |
| } |
| -void ShellDownloadManagerDelegate::RestartDownload( |
| +void ShellDownloadManagerDelegate::ChooseDownloadPath( |
| int32 download_id, |
| + const DownloadTargetCallback& callback, |
| const FilePath& suggested_path) { |
| - DownloadItem* download = |
| + DownloadItem* item = |
| download_manager_->GetActiveDownloadItem(download_id); |
| - if (!download) |
| + if (!item) |
| return; |
| - // Since we have no download UI, show the user a dialog always. |
| - download->OnTargetPathDetermined(suggested_path, |
| - DownloadItem::TARGET_DISPOSITION_PROMPT, |
| - content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS); |
| - download_manager_->RestartDownload(download_id); |
| -} |
| - |
| -void ShellDownloadManagerDelegate::ChooseDownloadPath(DownloadItem* item) { |
| FilePath result; |
| #if defined(OS_WIN) && !defined(USE_AURA) |
| - const FilePath suggested_path(item->GetTargetFilePath()); |
| std::wstring file_part = FilePath(suggested_path).BaseName().value(); |
| wchar_t file_name[MAX_PATH]; |
| base::wcslcpy(file_name, file_part.c_str(), arraysize(file_name)); |
| @@ -124,11 +116,8 @@ void ShellDownloadManagerDelegate::ChooseDownloadPath(DownloadItem* item) { |
| NOTIMPLEMENTED(); |
| #endif |
| - if (result.empty()) { |
| - download_manager_->FileSelectionCanceled(item->GetId()); |
| - } else { |
| - download_manager_->FileSelected(result, item->GetId()); |
| - } |
| + callback.Run(result, DownloadItem::TARGET_DISPOSITION_PROMPT, |
| + content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, result); |
| } |
| } // namespace content |