Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(989)

Unified Diff: content/browser/download/download_file_manager_unittest.cc

Issue 10702151: Revert 146162 - Move Rename functionality from DownloadFileManager to DownloadFileImple. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/download/download_file_manager_unittest.cc
===================================================================
--- content/browser/download/download_file_manager_unittest.cc (revision 146176)
+++ content/browser/download/download_file_manager_unittest.cc (working copy)
@@ -31,7 +31,6 @@
using ::testing::AtLeast;
using ::testing::Mock;
using ::testing::Return;
-using ::testing::SaveArg;
using ::testing::StrictMock;
using ::testing::StrEq;
@@ -40,10 +39,8 @@
// MockDownloadManager with the addition of a mock callback used for testing.
class TestDownloadManager : public MockDownloadManager {
public:
- MOCK_METHOD3(OnDownloadRenamed,
- void(int download_id,
- content::DownloadInterruptReason reason,
- const FilePath& full_path));
+ MOCK_METHOD2(OnDownloadRenamed,
+ void(int download_id, const FilePath& full_path));
private:
~TestDownloadManager() {}
};
@@ -215,22 +212,48 @@
// |should_overwrite| indicates whether to replace or uniquify the file.
void RenameFile(const DownloadId& id,
const FilePath& new_path,
- bool should_overwrite) {
+ const FilePath& unique_path,
+ content::DownloadInterruptReason rename_error,
+ RenameFileState state,
+ RenameFileOverwrite should_overwrite) {
MockDownloadFile* file = download_file_factory_->GetExistingFile(id);
ASSERT_TRUE(file != NULL);
- content::DownloadFile::RenameCompletionCallback rename_callback;
- EXPECT_CALL(*file, Rename(new_path, should_overwrite, _))
- .WillOnce(SaveArg<2>(&rename_callback));
+ EXPECT_CALL(*file, Rename(unique_path))
+ .Times(1)
+ .WillOnce(Return(rename_error));
- content::DownloadFile::RenameCompletionCallback passed_callback(
+ if (rename_error != content::DOWNLOAD_INTERRUPT_REASON_NONE) {
+ EXPECT_CALL(*file, BytesSoFar())
+ .Times(AtLeast(1))
+ .WillRepeatedly(Return(byte_count_[id]));
+ EXPECT_CALL(*file, GetHashState())
+ .Times(AtLeast(1));
+ EXPECT_CALL(*file, GetDownloadManager())
+ .Times(AtLeast(1));
+ }
+
+ download_file_manager_->RenameDownloadFile(
+ id, new_path, (should_overwrite == OVERWRITE),
base::Bind(&TestDownloadManager::OnDownloadRenamed,
download_manager_, id.local()));
- download_file_manager_->RenameDownloadFile(
- id, new_path, should_overwrite, passed_callback);
-
- EXPECT_TRUE(rename_callback.Equals(passed_callback));
+ if (rename_error != content::DOWNLOAD_INTERRUPT_REASON_NONE) {
+ EXPECT_CALL(*download_manager_,
+ OnDownloadInterrupted(
+ id.local(),
+ byte_count_[id],
+ "",
+ rename_error));
+ EXPECT_CALL(*download_manager_,
+ OnDownloadRenamed(id.local(), FilePath()));
+ ProcessAllPendingMessages();
+ ++error_count_[id];
+ } else {
+ EXPECT_CALL(*download_manager_,
+ OnDownloadRenamed(id.local(), unique_path));
+ ProcessAllPendingMessages();
+ }
}
void Complete(DownloadId id) {
@@ -322,7 +345,7 @@
Complete(dummy_id);
}
-TEST_F(DownloadFileManagerTest, Rename) {
+TEST_F(DownloadFileManagerTest, RenameInProgress) {
scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo);
DownloadId dummy_id(download_manager_.get(), kDummyDownloadId);
info->download_id = dummy_id;
@@ -332,12 +355,13 @@
CreateDownloadFile(info.Pass());
FilePath foo(download_dir.path().Append(FILE_PATH_LITERAL("foo.txt")));
- RenameFile(dummy_id, foo, true);
+ RenameFile(dummy_id, foo, foo, content::DOWNLOAD_INTERRUPT_REASON_NONE,
+ IN_PROGRESS, OVERWRITE);
CleanUp(dummy_id);
}
-TEST_F(DownloadFileManagerTest, RenameNoOverwrite) {
+TEST_F(DownloadFileManagerTest, RenameInProgressWithUniquification) {
scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo);
DownloadId dummy_id(download_manager_.get(), kDummyDownloadId);
info->download_id = dummy_id;
@@ -347,11 +371,53 @@
CreateDownloadFile(info.Pass());
FilePath foo(download_dir.path().Append(FILE_PATH_LITERAL("foo.txt")));
- RenameFile(dummy_id, foo, false);
+ FilePath unique_foo(foo.InsertBeforeExtension(FILE_PATH_LITERAL(" (1)")));
+ ASSERT_EQ(0, file_util::WriteFile(foo, "", 0));
+ RenameFile(dummy_id, foo, unique_foo,
+ content::DOWNLOAD_INTERRUPT_REASON_NONE, IN_PROGRESS,
+ DONT_OVERWRITE);
CleanUp(dummy_id);
}
+TEST_F(DownloadFileManagerTest, RenameInProgressWithError) {
+ scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo);
+ DownloadId dummy_id(download_manager_.get(), kDummyDownloadId);
+ info->download_id = dummy_id;
+ ScopedTempDir download_dir;
+ ASSERT_TRUE(download_dir.CreateUniqueTempDir());
+
+ CreateDownloadFile(info.Pass());
+
+ FilePath foo(download_dir.path().Append(FILE_PATH_LITERAL("foo.txt")));
+ RenameFile(dummy_id, foo, foo,
+ content::DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG,
+ IN_PROGRESS, OVERWRITE);
+
+ CleanUp(dummy_id);
+}
+
+TEST_F(DownloadFileManagerTest, RenameWithUniquification) {
+ scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo);
+ DownloadId dummy_id(download_manager_.get(), kDummyDownloadId);
+ info->download_id = dummy_id;
+ ScopedTempDir download_dir;
+ ASSERT_TRUE(download_dir.CreateUniqueTempDir());
+
+ CreateDownloadFile(info.Pass());
+
+ FilePath foo(download_dir.path().Append(FILE_PATH_LITERAL("foo.txt")));
+ FilePath unique_foo(foo.InsertBeforeExtension(FILE_PATH_LITERAL(" (1)")));
+ // Create a file at |foo|. Since we are specifying DONT_OVERWRITE,
+ // RenameDownloadFile() should pick "foo (1).txt" instead of
+ // overwriting this file.
+ ASSERT_EQ(0, file_util::WriteFile(foo, "", 0));
+ RenameFile(dummy_id, foo, unique_foo,
+ content::DOWNLOAD_INTERRUPT_REASON_NONE, COMPLETE, DONT_OVERWRITE);
+
+ CleanUp(dummy_id);
+}
+
TEST_F(DownloadFileManagerTest, RenameTwice) {
scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo);
DownloadId dummy_id(download_manager_.get(), kDummyDownloadId);
@@ -363,10 +429,12 @@
FilePath crfoo(download_dir.path().Append(
FILE_PATH_LITERAL("foo.txt.crdownload")));
- RenameFile(dummy_id, crfoo, true);
+ RenameFile(dummy_id, crfoo, crfoo, content::DOWNLOAD_INTERRUPT_REASON_NONE,
+ IN_PROGRESS, OVERWRITE);
FilePath foo(download_dir.path().Append(FILE_PATH_LITERAL("foo.txt")));
- RenameFile(dummy_id, foo, true);
+ RenameFile(dummy_id, foo, foo, content::DOWNLOAD_INTERRUPT_REASON_NONE,
+ COMPLETE, OVERWRITE);
CleanUp(dummy_id);
}
@@ -387,20 +455,24 @@
FilePath crbar(download_dir.path().Append(
FILE_PATH_LITERAL("bar.txt.crdownload")));
- RenameFile(dummy_id2, crbar, true);
+ RenameFile(dummy_id2, crbar, crbar, content::DOWNLOAD_INTERRUPT_REASON_NONE,
+ IN_PROGRESS, OVERWRITE);
FilePath crfoo(download_dir.path().Append(
FILE_PATH_LITERAL("foo.txt.crdownload")));
- RenameFile(dummy_id, crfoo, true);
+ RenameFile(dummy_id, crfoo, crfoo, content::DOWNLOAD_INTERRUPT_REASON_NONE,
+ IN_PROGRESS, OVERWRITE);
FilePath bar(download_dir.path().Append(FILE_PATH_LITERAL("bar.txt")));
- RenameFile(dummy_id2, bar, true);
+ RenameFile(dummy_id2, bar, bar, content::DOWNLOAD_INTERRUPT_REASON_NONE,
+ COMPLETE, OVERWRITE);
CleanUp(dummy_id2);
FilePath foo(download_dir.path().Append(FILE_PATH_LITERAL("foo.txt")));
- RenameFile(dummy_id, foo, true);
+ RenameFile(dummy_id, foo, foo, content::DOWNLOAD_INTERRUPT_REASON_NONE,
+ COMPLETE, OVERWRITE);
CleanUp(dummy_id);
}
« no previous file with comments | « content/browser/download/download_file_manager.cc ('k') | content/browser/download/download_file_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698