summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download/download_manager_unittest.cc
diff options
context:
space:
mode:
authorahendrickson@chromium.org <ahendrickson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-19 20:35:12 +0000
committerahendrickson@chromium.org <ahendrickson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-19 20:35:12 +0000
commitfd3a8283024624e88c68de791af7b70987a0faaf (patch)
treefc02b9bf88653661a6dc8141a29241c3b83af576 /chrome/browser/download/download_manager_unittest.cc
parent9b0b7edebd150add064e9286fe9c3f3da878d8b7 (diff)
downloadchromium_src-fd3a8283024624e88c68de791af7b70987a0faaf.zip
chromium_src-fd3a8283024624e88c68de791af7b70987a0faaf.tar.gz
chromium_src-fd3a8283024624e88c68de791af7b70987a0faaf.tar.bz2
Created DownloadFileManager unit test.
BUG=None TEST=None Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=118297 Review URL: http://codereview.chromium.org/8978001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118347 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download/download_manager_unittest.cc')
-rw-r--r--chrome/browser/download/download_manager_unittest.cc109
1 files changed, 61 insertions, 48 deletions
diff --git a/chrome/browser/download/download_manager_unittest.cc b/chrome/browser/download/download_manager_unittest.cc
index 3f2c669..2ab9057 100644
--- a/chrome/browser/download/download_manager_unittest.cc
+++ b/chrome/browser/download/download_manager_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -60,6 +60,8 @@ using content::BrowserThread;
using content::DownloadFile;
using content::DownloadItem;
using content::DownloadManager;
+using ::testing::ReturnRef;
+using ::testing::Return;
using content::WebContents;
namespace {
@@ -193,6 +195,12 @@ class DownloadManagerTest : public testing::Test {
download_file;
}
+ void AddMockDownloadToFileManager(int id, MockDownloadFile* download_file) {
+ AddDownloadToFileManager(id, download_file);
+ ON_CALL(*download_file, GetDownloadManager())
+ .WillByDefault(Return(download_manager_));
+ }
+
void OnResponseCompleted(int32 download_id, int64 size,
const std::string& hash) {
download_manager_->OnResponseCompleted(download_id, size, hash);
@@ -485,7 +493,8 @@ TEST_F(DownloadManagerTest, MAYBE_StartDownload) {
// 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 = DownloadId(kValidIdDomain, static_cast<int>(i));
+ const DownloadId id = DownloadId(kValidIdDomain, static_cast<int>(i));
+ info->download_id = id;
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;
@@ -504,6 +513,8 @@ TEST_F(DownloadManagerTest, MAYBE_StartDownload) {
// Note that DownloadManager::FileSelectionCanceled() is never called.
EXPECT_EQ(kStartDownloadCases[i].expected_save_as,
observer.ShowedFileDialogForId(i));
+
+ file_manager()->CancelDownload(id);
}
}
@@ -760,9 +771,7 @@ TEST_F(DownloadManagerTest, DownloadFilenameTest) {
info->download_id = DownloadId(kValidIdDomain, i);
info->url_chain.push_back(GURL());
- MockDownloadFile::StatisticsRecorder recorder;
- MockDownloadFile* download_file(new MockDownloadFile(
- info.get(), DownloadRequestHandle(), download_manager_, &recorder));
+ MockDownloadFile* download_file(new MockDownloadFile());
FilePath suggested_path(ExpandFilenameTestPath(
kDownloadFilenameTestCases[i].suggested_path,
downloads_dir, alternate_dir));
@@ -775,15 +784,18 @@ TEST_F(DownloadManagerTest, DownloadFilenameTest) {
FilePath final_path(ExpandFilenameTestPath(
kDownloadFilenameTestCases[i].final_path,
downloads_dir, alternate_dir));
- // If |final_path| is empty, its a signal that the download doesn't
- // complete. Therefore it will only go through a single rename.
- int expected_rename_count = (final_path.empty() ? 1 : 2);
- AddDownloadToFileManager(info->download_id.local(), download_file);
+ AddMockDownloadToFileManager(info->download_id.local(), download_file);
+
+ EXPECT_CALL(*download_file, Rename(intermediate_path))
+ .WillOnce(Return(net::OK));
- download_file->SetExpectedPath(0, intermediate_path);
- if (!final_path.empty())
- download_file->SetExpectedPath(1, final_path);
+ if (!final_path.empty()) {
+ // If |final_path| is empty, its a signal that the download doesn't
+ // complete. Therefore it will only go through a single rename.
+ EXPECT_CALL(*download_file, Rename(final_path))
+ .WillOnce(Return(net::OK));
+ }
download_manager_->CreateDownloadItem(info.get(), DownloadRequestHandle());
DownloadItem* download = GetActiveDownloadItem(i);
@@ -818,11 +830,6 @@ TEST_F(DownloadManagerTest, DownloadFilenameTest) {
message_loop_.RunAllPending();
// |download| might be deleted when we get here.
}
-
- EXPECT_EQ(
- expected_rename_count,
- recorder.Count(MockDownloadFile::StatisticsRecorder::STAT_RENAME))
- << "For test run " << i;
}
}
@@ -842,22 +849,27 @@ TEST_F(DownloadManagerTest, DownloadRenameTest) {
info->url_chain.push_back(GURL());
const FilePath new_path(kDownloadRenameCases[i].suggested_path);
- MockDownloadFile::StatisticsRecorder recorder;
- MockDownloadFile* download_file(
- new MockDownloadFile(info.get(),
- DownloadRequestHandle(),
- download_manager_,
- &recorder));
- AddDownloadToFileManager(info->download_id.local(), download_file);
+ MockDownloadFile* download_file(new MockDownloadFile());
+ const DownloadId id = info->download_id;
+ ON_CALL(*download_file, GlobalId())
+ .WillByDefault(ReturnRef(id));
+
+ AddMockDownloadToFileManager(info->download_id.local(), download_file);
// |download_file| is owned by DownloadFileManager.
if (kDownloadRenameCases[i].expected_rename_count == 1) {
- download_file->SetExpectedPath(0, new_path);
+ EXPECT_CALL(*download_file, Rename(new_path))
+ .Times(1)
+ .WillOnce(Return(net::OK));
} else {
ASSERT_EQ(2, kDownloadRenameCases[i].expected_rename_count);
FilePath crdownload(download_util::GetCrDownloadPath(new_path));
- download_file->SetExpectedPath(0, crdownload);
- download_file->SetExpectedPath(1, new_path);
+ EXPECT_CALL(*download_file, Rename(crdownload))
+ .Times(1)
+ .WillOnce(Return(net::OK));
+ EXPECT_CALL(*download_file, Rename(new_path))
+ .Times(1)
+ .WillOnce(Return(net::OK));
}
download_manager_->CreateDownloadItem(info.get(), DownloadRequestHandle());
DownloadItem* download = GetActiveDownloadItem(i);
@@ -877,10 +889,10 @@ TEST_F(DownloadManagerTest, DownloadRenameTest) {
message_loop_.RunAllPending();
OnResponseCompleted(i, 1024, std::string("fake_hash"));
}
+ // Validating the download item, so it will complete.
+ if (state.danger == DownloadStateInfo::DANGEROUS_FILE)
+ download->DangerousDownloadValidated();
message_loop_.RunAllPending();
- EXPECT_EQ(
- kDownloadRenameCases[i].expected_rename_count,
- recorder.Count(MockDownloadFile::StatisticsRecorder::STAT_RENAME));
}
}
@@ -901,16 +913,16 @@ TEST_F(DownloadManagerTest, DownloadInterruptTest) {
const FilePath new_path(FILE_PATH_LITERAL("foo.zip"));
const FilePath cr_path(download_util::GetCrDownloadPath(new_path));
- MockDownloadFile::StatisticsRecorder recorder;
- MockDownloadFile* download_file(
- new MockDownloadFile(info.get(),
- DownloadRequestHandle(),
- download_manager_,
- &recorder));
- AddDownloadToFileManager(info->download_id.local(), download_file);
+ MockDownloadFile* download_file(new MockDownloadFile());
+ ON_CALL(*download_file, AppendDataToFile(_, _))
+ .WillByDefault(Return(net::OK));
// |download_file| is owned by DownloadFileManager.
- download_file->SetExpectedPath(0, cr_path);
+ AddMockDownloadToFileManager(info->download_id.local(), download_file);
+
+ EXPECT_CALL(*download_file, Rename(cr_path))
+ .Times(1)
+ .WillOnce(Return(net::OK));
download_manager_->CreateDownloadItem(info.get(), DownloadRequestHandle());
@@ -926,8 +938,6 @@ TEST_F(DownloadManagerTest, DownloadInterruptTest) {
ContinueDownloadWithPath(download, new_path);
message_loop_.RunAllPending();
- EXPECT_EQ(1,
- recorder.Count(MockDownloadFile::StatisticsRecorder::STAT_RENAME));
EXPECT_TRUE(GetActiveDownloadItem(0) != NULL);
int64 error_size = 3;
@@ -1068,21 +1078,22 @@ TEST_F(DownloadManagerTest, DownloadCancelTest) {
// 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 = DownloadId(kValidIdDomain, 0);
+ DownloadId id = DownloadId(kValidIdDomain, 0);
+ info->download_id = id;
info->prompt_user_for_save_location = false;
info->url_chain.push_back(GURL());
const FilePath new_path(FILE_PATH_LITERAL("foo.zip"));
const FilePath cr_path(download_util::GetCrDownloadPath(new_path));
- MockDownloadFile* download_file(
- new MockDownloadFile(info.get(),
- DownloadRequestHandle(),
- download_manager_,
- NULL));
- AddDownloadToFileManager(info->download_id.local(), download_file);
+ MockDownloadFile* download_file(new MockDownloadFile());
+ ON_CALL(*download_file, AppendDataToFile(_, _))
+ .WillByDefault(Return(net::OK));
+ AddMockDownloadToFileManager(info->download_id.local(), download_file);
// |download_file| is owned by DownloadFileManager.
- download_file->SetExpectedPath(0, cr_path);
+ EXPECT_CALL(*download_file, Rename(cr_path))
+ .Times(1)
+ .WillOnce(Return(net::OK));
download_manager_->CreateDownloadItem(info.get(), DownloadRequestHandle());
@@ -1116,6 +1127,8 @@ TEST_F(DownloadManagerTest, DownloadCancelTest) {
EXPECT_EQ(download_item_model->GetStatusText(),
l10n_util::GetStringUTF16(IDS_DOWNLOAD_STATUS_CANCELED));
+ file_manager()->CancelDownload(id);
+
EXPECT_FALSE(file_util::PathExists(new_path));
EXPECT_FALSE(file_util::PathExists(cr_path));
}