Index: chrome/browser/download/download_manager_unittest.cc |
diff --git a/chrome/browser/download/download_manager_unittest.cc b/chrome/browser/download/download_manager_unittest.cc |
index fe1376cbcbedb7dfb7b78b7fa609b097cab2a6d8..9b73e1a1629c730fc83264cb0e373b3f70e41bd1 100644 |
--- a/chrome/browser/download/download_manager_unittest.cc |
+++ b/chrome/browser/download/download_manager_unittest.cc |
@@ -302,34 +302,28 @@ TEST_F(DownloadManagerTest, StartDownload) { |
kStartDownloadCases[i].prompt_for_download); |
SelectFileObserver observer(download_manager_); |
- DownloadCreateInfo* info = new DownloadCreateInfo; |
+ // Normally, the download system takes ownership of info, and is |
+ // responsible for deleting it. In these unit tests, however, we |
+ // don't call the function that deletes it, so we do so ourselves. |
+ scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo); |
info->download_id = static_cast<int>(i); |
info->prompt_user_for_save_location = kStartDownloadCases[i].save_as; |
info->url_chain.push_back(GURL(kStartDownloadCases[i].url)); |
info->mime_type = kStartDownloadCases[i].mime_type; |
- download_manager_->CreateDownloadItem(info); |
+ download_manager_->CreateDownloadItem(info.get()); |
- DownloadFile* download_file(new DownloadFile(info, download_manager_)); |
+ DownloadFile* download_file( |
+ new DownloadFile(info.get(), download_manager_)); |
AddDownloadToFileManager(info->download_id, download_file); |
download_file->Initialize(false); |
download_manager_->StartDownload(info->download_id); |
message_loop_.RunAllPending(); |
- // NOTE: At this point, |ContinueDownloadWithPath| will have been run if |
- // we don't need to prompt the user, so |info| could have been destructed. |
- // This means that we can't check any of its values. |
- // However, SelectFileObserver will have recorded any attempt to open the |
+ // SelectFileObserver will have recorded any attempt to open the |
// select file dialog. |
+ // Note that DownloadManager::FileSelectionCanceled() is never called. |
EXPECT_EQ(kStartDownloadCases[i].expected_save_as, |
observer.ShowedFileDialogForId(i)); |
- |
- // If the Save As dialog pops up, it never reached |
- // DownloadManager::ContinueDownloadWithPath(), and never deleted info or |
- // completed. This cleans up info. |
- // Note that DownloadManager::FileSelectionCanceled() is never called. |
- if (observer.ShowedFileDialogForId(i)) { |
- delete info; |
- } |
} |
} |
@@ -340,8 +334,10 @@ TEST_F(DownloadManagerTest, DownloadRenameTest) { |
using ::testing::Return; |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kDownloadRenameCases); ++i) { |
- // |info| will be destroyed in download_manager_. |
- DownloadCreateInfo* info(new DownloadCreateInfo); |
+ // Normally, the download system takes ownership of info, and is |
+ // responsible for deleting it. In these unit tests, however, we |
+ // don't call the function that deletes it, so we do so ourselves. |
+ scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo); |
info->download_id = static_cast<int>(i); |
info->prompt_user_for_save_location = false; |
info->url_chain.push_back(GURL()); |
@@ -350,7 +346,7 @@ TEST_F(DownloadManagerTest, DownloadRenameTest) { |
const FilePath new_path(kDownloadRenameCases[i].suggested_path); |
MockDownloadFile* download_file( |
- new MockDownloadFile(info, download_manager_)); |
+ new MockDownloadFile(info.get(), download_manager_)); |
AddDownloadToFileManager(info->download_id, download_file); |
// |download_file| is owned by DownloadFileManager. |
@@ -370,7 +366,7 @@ TEST_F(DownloadManagerTest, DownloadRenameTest) { |
download_file, &MockDownloadFile::TestMultipleRename, |
2, new_path)))); |
} |
- download_manager_->CreateDownloadItem(info); |
+ download_manager_->CreateDownloadItem(info.get()); |
int32* id_ptr = new int32; |
*id_ptr = i; // Deleted in FileSelected(). |
@@ -397,8 +393,10 @@ TEST_F(DownloadManagerTest, DownloadInterruptTest) { |
using ::testing::Invoke; |
using ::testing::Return; |
- // |info| will be destroyed in download_manager_. |
- DownloadCreateInfo* info(new DownloadCreateInfo); |
+ // Normally, the download system takes ownership of info, and is |
+ // responsible for deleting it. In these unit tests, however, we |
+ // don't call the function that deletes it, so we do so ourselves. |
+ scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo); |
info->download_id = static_cast<int>(0); |
info->prompt_user_for_save_location = false; |
info->url_chain.push_back(GURL()); |
@@ -408,7 +406,7 @@ TEST_F(DownloadManagerTest, DownloadInterruptTest) { |
const FilePath cr_path(download_util::GetCrDownloadPath(new_path)); |
MockDownloadFile* download_file( |
- new MockDownloadFile(info, download_manager_)); |
+ new MockDownloadFile(info.get(), download_manager_)); |
AddDownloadToFileManager(info->download_id, download_file); |
// |download_file| is owned by DownloadFileManager. |
@@ -417,7 +415,7 @@ TEST_F(DownloadManagerTest, DownloadInterruptTest) { |
EXPECT_CALL(*download_file, Rename(cr_path)).WillOnce(Return(true)); |
- download_manager_->CreateDownloadItem(info); |
+ download_manager_->CreateDownloadItem(info.get()); |
DownloadItem* download = GetActiveDownloadItem(0); |
ASSERT_TRUE(download != NULL); |
@@ -462,8 +460,10 @@ TEST_F(DownloadManagerTest, DownloadCancelTest) { |
using ::testing::Invoke; |
using ::testing::Return; |
- // |info| will be destroyed in download_manager_. |
- DownloadCreateInfo* info(new DownloadCreateInfo); |
+ // Normally, the download system takes ownership of info, and is |
+ // responsible for deleting it. In these unit tests, however, we |
+ // don't call the function that deletes it, so we do so ourselves. |
+ scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo); |
info->download_id = static_cast<int>(0); |
info->prompt_user_for_save_location = false; |
info->url_chain.push_back(GURL()); |
@@ -473,7 +473,7 @@ TEST_F(DownloadManagerTest, DownloadCancelTest) { |
const FilePath cr_path(download_util::GetCrDownloadPath(new_path)); |
MockDownloadFile* download_file( |
- new MockDownloadFile(info, download_manager_)); |
+ new MockDownloadFile(info.get(), download_manager_)); |
AddDownloadToFileManager(info->download_id, download_file); |
// |download_file| is owned by DownloadFileManager. |
@@ -482,7 +482,7 @@ TEST_F(DownloadManagerTest, DownloadCancelTest) { |
EXPECT_CALL(*download_file, Rename(cr_path)).WillOnce(Return(true)); |
- download_manager_->CreateDownloadItem(info); |
+ download_manager_->CreateDownloadItem(info.get()); |
DownloadItem* download = GetActiveDownloadItem(0); |
ASSERT_TRUE(download != NULL); |
@@ -540,15 +540,17 @@ TEST_F(DownloadManagerTest, DownloadOverwriteTest) { |
EXPECT_NE(0, uniquifier); |
download_util::AppendNumberToPath(&unique_new_path, uniquifier); |
- // |info| will be destroyed in download_manager_. |
- DownloadCreateInfo* info(new DownloadCreateInfo); |
+ // Normally, the download system takes ownership of info, and is |
+ // responsible for deleting it. In these unit tests, however, we |
+ // don't call the function that deletes it, so we do so ourselves. |
+ scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo); |
info->download_id = static_cast<int>(0); |
info->prompt_user_for_save_location = true; |
info->url_chain.push_back(GURL()); |
info->is_dangerous_file = false; |
info->is_dangerous_url = false; |
- download_manager_->CreateDownloadItem(info); |
+ download_manager_->CreateDownloadItem(info.get()); |
DownloadItem* download = GetActiveDownloadItem(0); |
ASSERT_TRUE(download != NULL); |
@@ -561,7 +563,7 @@ TEST_F(DownloadManagerTest, DownloadOverwriteTest) { |
// name has been chosen, so we need to initialize the download file |
// properly. |
DownloadFile* download_file( |
- new DownloadFile(info, download_manager_)); |
+ new DownloadFile(info.get(), download_manager_)); |
download_file->Rename(cr_path); |
// This creates the .crdownload version of the file. |
download_file->Initialize(false); |