| Index: chrome/browser/download/download_manager.cc
|
| ===================================================================
|
| --- chrome/browser/download/download_manager.cc (revision 91035)
|
| +++ chrome/browser/download/download_manager.cc (working copy)
|
| @@ -524,7 +524,7 @@
|
| SelectFileDialog::FileTypeInfo file_type_info;
|
| FilePath::StringType extension = suggested_path.Extension();
|
| if (!extension.empty()) {
|
| - extension.erase(extension.begin()); // drop the .
|
| + extension.erase(extension.begin()); // drop the .
|
| file_type_info.extensions.resize(1);
|
| file_type_info.extensions[0].push_back(extension);
|
| }
|
| @@ -975,11 +975,14 @@
|
| return RemoveDownloadsBetween(base::Time(), base::Time());
|
| }
|
|
|
| -void DownloadManager::SavePageAsDownloadStarted(DownloadItem* download_item) {
|
| +void DownloadManager::SavePageAsDownloadStarted(DownloadItem* download) {
|
| #if !defined(NDEBUG)
|
| - save_page_as_downloads_.insert(download_item);
|
| + save_page_as_downloads_.insert(download);
|
| #endif
|
| - downloads_.insert(download_item);
|
| + downloads_.insert(download);
|
| + // Add to history and notify observers.
|
| + AddDownloadItemToHistory(download, DownloadHistory::kUninitializedHandle);
|
| + NotifyModelChanged();
|
| }
|
|
|
| // Initiate a download of a specific URL. We send the request to the
|
| @@ -1163,20 +1166,10 @@
|
| CheckForHistoryFilesRemoval();
|
| }
|
|
|
| -// Once the new DownloadItem's creation info has been committed to the history
|
| -// service, we associate the DownloadItem with the db handle, update our
|
| -// 'history_downloads_' map and inform observers.
|
| -void DownloadManager::OnCreateDownloadEntryComplete(int32 download_id,
|
| - int64 db_handle) {
|
| +void DownloadManager::AddDownloadItemToHistory(DownloadItem* download,
|
| + int64 db_handle) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - DownloadItem* download = GetActiveDownloadItem(download_id);
|
| - if (!download)
|
| - return;
|
|
|
| - VLOG(20) << __FUNCTION__ << "()" << " db_handle = " << db_handle
|
| - << " download_id = " << download_id
|
| - << " download = " << download->DebugString(true);
|
| -
|
| // It's not immediately obvious, but HistoryBackend::CreateDownload() can
|
| // call this function with an invalid |db_handle|. For instance, this can
|
| // happen when the history database is offline. We cannot have multiple
|
| @@ -1194,7 +1187,24 @@
|
|
|
| DCHECK(!ContainsKey(history_downloads_, download->db_handle()));
|
| history_downloads_[download->db_handle()] = download;
|
| +}
|
|
|
| +// Once the new DownloadItem's creation info has been committed to the history
|
| +// service, we associate the DownloadItem with the db handle, update our
|
| +// 'history_downloads_' map and inform observers.
|
| +void DownloadManager::OnCreateDownloadEntryComplete(int32 download_id,
|
| + int64 db_handle) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + DownloadItem* download = GetActiveDownloadItem(download_id);
|
| + if (!download)
|
| + return;
|
| +
|
| + VLOG(20) << __FUNCTION__ << "()" << " db_handle = " << db_handle
|
| + << " download_id = " << download_id
|
| + << " download = " << download->DebugString(true);
|
| +
|
| + AddDownloadItemToHistory(download, db_handle);
|
| +
|
| // Show in the appropriate browser UI.
|
| // This includes buttons to save or cancel, for a dangerous download.
|
| ShowDownloadInBrowser(download);
|
| @@ -1222,7 +1232,6 @@
|
| }
|
|
|
| void DownloadManager::ShowDownloadInBrowser(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.
|
|
|