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 a85fb3efebcc5a9b6295b7ca1953985fb39b3d10..e0199e5aee7a1b36403247b1e62ea066d6ab7ffc 100644 |
--- a/chrome/browser/download/download_manager_unittest.cc |
+++ b/chrome/browser/download/download_manager_unittest.cc |
@@ -24,7 +24,7 @@ |
#include "chrome/test/base/testing_profile.h" |
#include "content/browser/download/download_buffer.h" |
#include "content/browser/download/download_create_info.h" |
-#include "content/browser/download/download_file.h" |
+#include "content/browser/download/download_file_impl.h" |
#include "content/browser/download/download_file_manager.h" |
#include "content/browser/download/download_id_factory.h" |
#include "content/browser/download/download_item.h" |
@@ -36,7 +36,6 @@ |
#include "content/test/test_browser_thread.h" |
#include "grit/generated_resources.h" |
#include "net/base/io_buffer.h" |
-#include "net/base/mock_file_stream.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gmock_mutant.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -57,7 +56,7 @@ class DownloadManagerTest : public testing::Test { |
download_manager_delegate_(new ChromeDownloadManagerDelegate( |
profile_.get())), |
id_factory_(new DownloadIdFactory(kValidIdDomain)), |
- download_manager_(new MockDownloadManager( |
Randy Smith (Not in Mondays)
2011/11/10 21:58:43
Why this change here? I thought that was the othe
ahendrickson
2011/11/13 00:50:21
Ah, yes, this is a result of splitting a CL in two
|
+ download_manager_(new DownloadManager( |
download_manager_delegate_, |
id_factory_, |
&download_status_updater_)), |
@@ -163,43 +162,52 @@ const char* DownloadManagerTest::kTestData = "a;sdlfalsdfjalsdkfjad"; |
const size_t DownloadManagerTest::kTestDataLen = |
strlen(DownloadManagerTest::kTestData); |
-// A DownloadFile that we can inject errors into. Uses MockFileStream. |
-// Note: This can't be in an anonymous namespace because it must be declared |
-// as a friend of |DownloadFile| in order to access its private members. |
-class DownloadFileWithMockStream : public DownloadFile { |
+// A DownloadFile that we can inject errors into. |
+class DownloadFileWithErrors : public DownloadFileImpl { |
Randy Smith (Not in Mondays)
2011/11/10 21:58:43
Just noting that in the context of non-test code I
|
public: |
- DownloadFileWithMockStream(DownloadCreateInfo* info, |
- DownloadManager* manager, |
- net::testing::MockFileStream* stream); |
+ DownloadFileWithErrors(DownloadCreateInfo* info, DownloadManager* manager); |
+ virtual ~DownloadFileWithErrors() {} |
- virtual ~DownloadFileWithMockStream() {} |
+ // BaseFile delegated functions. |
+ virtual net::Error Initialize(bool calculate_hash); |
+ virtual net::Error AppendDataToFile(const char* data, size_t data_len); |
+ virtual net::Error Rename(const FilePath& full_path); |
- void SetForcedError(int error); |
+ void set_forced_error(net::Error error) { forced_error_ = error; } |
+ void clear_forced_error() { forced_error_ = net::OK; } |
+ net::Error forced_error() const { return forced_error_; } |
- protected: |
- // This version creates a |MockFileStream| instead of a |FileStream|. |
- virtual void CreateFileStream() OVERRIDE; |
+ private: |
+ net::Error ReturnError(net::Error function_error) { |
+ if (forced_error_ != net::OK) { |
+ net::Error ret = forced_error_; |
+ clear_forced_error(); |
+ return ret; |
+ } |
+ |
+ return function_error; |
+ } |
+ |
+ net::Error forced_error_; |
}; |
-DownloadFileWithMockStream::DownloadFileWithMockStream( |
- DownloadCreateInfo* info, |
- DownloadManager* manager, |
- net::testing::MockFileStream* stream) |
- : DownloadFile(info, new DownloadRequestHandle(), manager) { |
- DCHECK(file_stream_ == NULL); |
- file_stream_.reset(stream); |
+DownloadFileWithErrors::DownloadFileWithErrors(DownloadCreateInfo* info, |
+ DownloadManager* manager) |
+ : DownloadFileImpl(info, new DownloadRequestHandle(), manager), |
+ forced_error_(net::OK) { |
+} |
+ |
+net::Error DownloadFileWithErrors::Initialize(bool calculate_hash) { |
+ return ReturnError(DownloadFileImpl::Initialize(calculate_hash)); |
} |
-void DownloadFileWithMockStream::SetForcedError(int error) |
-{ |
- // |file_stream_| can only be set in the constructor and in |
- // CreateFileStream(), both of which insure that it is a |MockFileStream|. |
- net::testing::MockFileStream* mock_stream = |
- static_cast<net::testing::MockFileStream *>(file_stream_.get()); |
- mock_stream->set_forced_error(error); |
+net::Error DownloadFileWithErrors::AppendDataToFile(const char* data, |
+ size_t data_len) { |
+ return ReturnError(DownloadFileImpl::AppendDataToFile(data, data_len)); |
} |
-void DownloadFileWithMockStream::CreateFileStream() { |
- file_stream_.reset(new net::testing::MockFileStream); |
+ |
+net::Error DownloadFileWithErrors::Rename(const FilePath& full_path) { |
+ return ReturnError(DownloadFileImpl::Rename(full_path)); |
} |
namespace { |
@@ -280,12 +288,12 @@ const struct { |
{ FILE_PATH_LITERAL("Unconfirmed xxx.crdownload"), true, true, false, 1, }, |
}; |
-class MockDownloadFile : public DownloadFile { |
+class GMockDownloadFile : public DownloadFileImpl { |
public: |
- MockDownloadFile(DownloadCreateInfo* info, DownloadManager* manager) |
- : DownloadFile(info, new DownloadRequestHandle(), manager), |
+ GMockDownloadFile(DownloadCreateInfo* info, DownloadManager* manager) |
+ : DownloadFileImpl(info, new DownloadRequestHandle(), manager), |
renamed_count_(0) { } |
- virtual ~MockDownloadFile() { Destructed(); } |
+ virtual ~GMockDownloadFile() { Destructed(); } |
MOCK_METHOD1(Rename, net::Error(const FilePath&)); |
MOCK_METHOD0(Destructed, void()); |
@@ -399,8 +407,8 @@ TEST_F(DownloadManagerTest, StartDownload) { |
download_manager_->CreateDownloadItem(info.get(), DownloadRequestHandle()); |
DownloadFile* download_file( |
- new DownloadFile(info.get(), new DownloadRequestHandle(), |
- download_manager_)); |
+ new DownloadFileImpl(info.get(), new DownloadRequestHandle(), |
+ download_manager_)); |
AddDownloadToFileManager(info->download_id.local(), download_file); |
download_file->Initialize(false); |
download_manager_->StartDownload(info->download_id.local()); |
@@ -430,8 +438,8 @@ TEST_F(DownloadManagerTest, DownloadRenameTest) { |
info->url_chain.push_back(GURL()); |
const FilePath new_path(kDownloadRenameCases[i].suggested_path); |
- MockDownloadFile* download_file( |
- new MockDownloadFile(info.get(), download_manager_)); |
+ GMockDownloadFile* download_file( |
+ new GMockDownloadFile(info.get(), download_manager_)); |
AddDownloadToFileManager(info->download_id.local(), download_file); |
// |download_file| is owned by DownloadFileManager. |
@@ -445,10 +453,10 @@ TEST_F(DownloadManagerTest, DownloadRenameTest) { |
FilePath crdownload(download_util::GetCrDownloadPath(new_path)); |
EXPECT_CALL(*download_file, Rename(_)) |
.WillOnce(testing::WithArgs<0>(Invoke(CreateFunctor( |
- download_file, &MockDownloadFile::TestMultipleRename, |
+ download_file, &GMockDownloadFile::TestMultipleRename, |
1, crdownload)))) |
.WillOnce(testing::WithArgs<0>(Invoke(CreateFunctor( |
- download_file, &MockDownloadFile::TestMultipleRename, |
+ download_file, &GMockDownloadFile::TestMultipleRename, |
2, new_path)))); |
} |
download_manager_->CreateDownloadItem(info.get(), DownloadRequestHandle()); |
@@ -495,8 +503,8 @@ TEST_F(DownloadManagerTest, DownloadInterruptTest) { |
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(), download_manager_)); |
+ GMockDownloadFile* download_file( |
+ new GMockDownloadFile(info.get(), download_manager_)); |
AddDownloadToFileManager(info->download_id.local(), download_file); |
// |download_file| is owned by DownloadFileManager. |
@@ -569,8 +577,8 @@ TEST_F(DownloadManagerTest, DownloadFileErrorTest) { |
ASSERT_TRUE(file_util::CreateTemporaryFile(&path)); |
// This file stream will be used, until the first rename occurs. |
- net::testing::MockFileStream* mock_stream = new net::testing::MockFileStream; |
- ASSERT_EQ(0, mock_stream->Open( |
+ net::FileStream* stream = new net::FileStream; |
+ ASSERT_EQ(0, stream->Open( |
path, |
base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE)); |
@@ -584,10 +592,11 @@ TEST_F(DownloadManagerTest, DownloadFileErrorTest) { |
info->url_chain.push_back(GURL()); |
info->total_bytes = static_cast<int64>(kTestDataLen * 3); |
info->save_info.file_path = path; |
+ info->save_info.file_stream.reset(stream); |
// Create a download file that we can insert errors into. |
- DownloadFileWithMockStream* download_file(new DownloadFileWithMockStream( |
- info.get(), download_manager_, mock_stream)); |
+ DownloadFileWithErrors* download_file(new DownloadFileWithErrors( |
+ info.get(), download_manager_)); |
AddDownloadToFileManager(local_id, download_file); |
// |download_file| is owned by DownloadFileManager. |
@@ -614,7 +623,7 @@ TEST_F(DownloadManagerTest, DownloadFileErrorTest) { |
UpdateData(local_id, kTestData, kTestDataLen); |
// Add more data, but an error occurs. |
- download_file->SetForcedError(net::ERR_FAILED); |
+ download_file->set_forced_error(net::ERR_FAILED); |
UpdateData(local_id, kTestData, kTestDataLen); |
// Check the state. The download should have been interrupted. |
@@ -630,7 +639,7 @@ TEST_F(DownloadManagerTest, DownloadFileErrorTest) { |
EXPECT_EQ(DownloadItem::INTERRUPTED, download->state()); |
// Check the download shelf's information. |
- size_t error_size = kTestDataLen * 2; |
+ size_t error_size = kTestDataLen * 3; |
size_t total_size = kTestDataLen * 3; |
ui::DataUnits amount_units = ui::GetByteDisplayUnits(kTestDataLen); |
string16 simple_size = |
@@ -663,8 +672,8 @@ TEST_F(DownloadManagerTest, DownloadCancelTest) { |
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(), download_manager_)); |
+ GMockDownloadFile* download_file( |
+ new GMockDownloadFile(info.get(), download_manager_)); |
AddDownloadToFileManager(info->download_id.local(), download_file); |
// |download_file| is owned by DownloadFileManager. |
@@ -760,8 +769,8 @@ TEST_F(DownloadManagerTest, DownloadOverwriteTest) { |
// name has been chosen, so we need to initialize the download file |
// properly. |
DownloadFile* download_file( |
- new DownloadFile(info.get(), new DownloadRequestHandle(), |
- download_manager_)); |
+ new DownloadFileImpl(info.get(), new DownloadRequestHandle(), |
+ download_manager_)); |
download_file->Rename(cr_path); |
// This creates the .crdownload version of the file. |
download_file->Initialize(false); |
@@ -837,8 +846,8 @@ TEST_F(DownloadManagerTest, DownloadRemoveTest) { |
// name has been chosen, so we need to initialize the download file |
// properly. |
DownloadFile* download_file( |
- new DownloadFile(info.get(), new DownloadRequestHandle(), |
- download_manager_)); |
+ new DownloadFileImpl(info.get(), new DownloadRequestHandle(), |
+ download_manager_)); |
download_file->Rename(cr_path); |
// This creates the .crdownload version of the file. |
download_file->Initialize(false); |