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

Unified Diff: chrome/browser/download/download_path_reservation_tracker_unittest.cc

Issue 248713004: [Downloads] Add real observers to MockDownloadItem. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with r268551 Created 6 years, 7 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: chrome/browser/download/download_path_reservation_tracker_unittest.cc
diff --git a/chrome/browser/download/download_path_reservation_tracker_unittest.cc b/chrome/browser/download/download_path_reservation_tracker_unittest.cc
index de1279b6acbc7549ddac39d5755ff490682c1b4b..8bb301d54ae72ca8ea6b16329e7434291e7e91bc 100644
--- a/chrome/browser/download/download_path_reservation_tracker_unittest.cc
+++ b/chrome/browser/download/download_path_reservation_tracker_unittest.cc
@@ -27,40 +27,6 @@ using testing::ReturnRefOfCopy;
namespace {
-// MockDownloadItem with real observers and state.
-class FakeDownloadItem : public MockDownloadItem {
- public:
- explicit FakeDownloadItem()
- : state_(IN_PROGRESS) {
- }
- virtual ~FakeDownloadItem() {
- FOR_EACH_OBSERVER(Observer, observers_, OnDownloadDestroyed(this));
- EXPECT_FALSE(observers_.might_have_observers());
- }
- virtual void AddObserver(Observer* observer) OVERRIDE {
- observers_.AddObserver(observer);
- }
- virtual void RemoveObserver(Observer* observer) OVERRIDE {
- observers_.RemoveObserver(observer);
- }
- virtual void UpdateObservers() OVERRIDE {
- FOR_EACH_OBSERVER(Observer, observers_, OnDownloadUpdated(this));
- }
-
- virtual DownloadState GetState() const OVERRIDE {
- return state_;
- }
-
- void SetState(DownloadState state) {
- state_ = state;
- UpdateObservers();
- }
-
- private:
- DownloadState state_;
- ObserverList<Observer> observers_;
-};
-
class DownloadPathReservationTrackerTest : public testing::Test {
public:
DownloadPathReservationTrackerTest();
@@ -69,7 +35,7 @@ class DownloadPathReservationTrackerTest : public testing::Test {
virtual void SetUp() OVERRIDE;
virtual void TearDown() OVERRIDE;
- FakeDownloadItem* CreateDownloadItem(int32 id);
+ MockDownloadItem* CreateDownloadItem(int32 id);
base::FilePath GetPathInDownloadsDirectory(
const base::FilePath::CharType* suffix);
bool IsPathInUse(const base::FilePath& path);
@@ -118,13 +84,15 @@ void DownloadPathReservationTrackerTest::TearDown() {
message_loop_.RunUntilIdle();
}
-FakeDownloadItem* DownloadPathReservationTrackerTest::CreateDownloadItem(
+MockDownloadItem* DownloadPathReservationTrackerTest::CreateDownloadItem(
int32 id) {
- FakeDownloadItem* item = new ::testing::StrictMock<FakeDownloadItem>;
+ MockDownloadItem* item = new ::testing::StrictMock<MockDownloadItem>;
EXPECT_CALL(*item, GetId())
.WillRepeatedly(Return(id));
EXPECT_CALL(*item, GetTargetFilePath())
.WillRepeatedly(ReturnRefOfCopy(base::FilePath()));
+ EXPECT_CALL(*item, GetState())
+ .WillRepeatedly(Return(DownloadItem::IN_PROGRESS));
return item;
}
@@ -179,11 +147,18 @@ DownloadPathReservationTrackerTest::GetLongNamePathInDownloadsDirectory(
+ suffix).c_str());
}
+void SetDownloadItemState(content::MockDownloadItem* download_item,
+ content::DownloadItem::DownloadState state) {
+ EXPECT_CALL(*download_item, GetState())
+ .WillRepeatedly(Return(state));
+ download_item->NotifyObserversDownloadUpdated();
+}
+
} // namespace
// A basic reservation is acquired and committed.
TEST_F(DownloadPathReservationTrackerTest, BasicReservation) {
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo.txt")));
ASSERT_FALSE(IsPathInUse(path));
@@ -205,7 +180,7 @@ TEST_F(DownloadPathReservationTrackerTest, BasicReservation) {
EXPECT_EQ(path.value(), reserved_path.value());
// Destroying the item should release the reservation.
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
item.reset();
message_loop_.RunUntilIdle();
EXPECT_FALSE(IsPathInUse(path));
@@ -213,7 +188,7 @@ TEST_F(DownloadPathReservationTrackerTest, BasicReservation) {
// A download that is interrupted should lose its reservation.
TEST_F(DownloadPathReservationTrackerTest, InterruptedDownload) {
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo.txt")));
ASSERT_FALSE(IsPathInUse(path));
@@ -235,14 +210,14 @@ TEST_F(DownloadPathReservationTrackerTest, InterruptedDownload) {
EXPECT_EQ(path.value(), reserved_path.value());
// Once the download is interrupted, the path should become available again.
- item->SetState(DownloadItem::INTERRUPTED);
+ SetDownloadItemState(item.get(), DownloadItem::INTERRUPTED);
message_loop_.RunUntilIdle();
EXPECT_FALSE(IsPathInUse(path));
}
// A completed download should also lose its reservation.
TEST_F(DownloadPathReservationTrackerTest, CompleteDownload) {
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo.txt")));
ASSERT_FALSE(IsPathInUse(path));
@@ -267,7 +242,7 @@ TEST_F(DownloadPathReservationTrackerTest, CompleteDownload) {
// real download, at this point only the path reservation will be released.
// The path wouldn't be available since it is occupied on disk by the
// completed download.
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
message_loop_.RunUntilIdle();
EXPECT_FALSE(IsPathInUse(path));
}
@@ -275,7 +250,7 @@ TEST_F(DownloadPathReservationTrackerTest, CompleteDownload) {
// If there are files on the file system, a unique reservation should uniquify
// around it.
TEST_F(DownloadPathReservationTrackerTest, ConflictingFiles) {
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo.txt")));
base::FilePath path1(
@@ -308,7 +283,7 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingFiles) {
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo (1).txt")).value(),
reserved_path.value());
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
item.reset();
message_loop_.RunUntilIdle();
EXPECT_TRUE(IsPathInUse(path));
@@ -317,7 +292,7 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingFiles) {
// Multiple reservations for the same path should uniquify around each other.
TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
- scoped_ptr<FakeDownloadItem> item1(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item1(CreateDownloadItem(1));
base::FilePath path(
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo.txt")));
base::FilePath uniquified_path(
@@ -345,7 +320,7 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
{
// Requesting a reservation for the same path with uniquification results in
// a uniquified path.
- scoped_ptr<FakeDownloadItem> item2(CreateDownloadItem(2));
+ scoped_ptr<MockDownloadItem> item2(CreateDownloadItem(2));
base::FilePath reserved_path2;
CallGetReservedPath(
item2.get(),
@@ -357,7 +332,7 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
EXPECT_TRUE(IsPathInUse(path));
EXPECT_TRUE(IsPathInUse(uniquified_path));
EXPECT_EQ(uniquified_path.value(), reserved_path2.value());
- item2->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item2.get(), DownloadItem::COMPLETE);
}
message_loop_.RunUntilIdle();
EXPECT_TRUE(IsPathInUse(path));
@@ -366,7 +341,7 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
{
// Since the previous download item was removed, requesting a reservation
// for the same path should result in the same uniquified path.
- scoped_ptr<FakeDownloadItem> item2(CreateDownloadItem(2));
+ scoped_ptr<MockDownloadItem> item2(CreateDownloadItem(2));
base::FilePath reserved_path2;
CallGetReservedPath(
item2.get(),
@@ -378,13 +353,13 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
EXPECT_TRUE(IsPathInUse(path));
EXPECT_TRUE(IsPathInUse(uniquified_path));
EXPECT_EQ(uniquified_path.value(), reserved_path2.value());
- item2->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item2.get(), DownloadItem::COMPLETE);
}
message_loop_.RunUntilIdle();
// Now acquire an overwriting reservation. We should end up with the same
// non-uniquified path for both reservations.
- scoped_ptr<FakeDownloadItem> item3(CreateDownloadItem(2));
+ scoped_ptr<MockDownloadItem> item3(CreateDownloadItem(2));
base::FilePath reserved_path3;
conflict_action = DownloadPathReservationTracker::OVERWRITE;
CallGetReservedPath(
@@ -400,8 +375,8 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
EXPECT_EQ(path.value(), reserved_path1.value());
EXPECT_EQ(path.value(), reserved_path3.value());
- item1->SetState(DownloadItem::COMPLETE);
- item3->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item1.get(), DownloadItem::COMPLETE);
+ SetDownloadItemState(item3.get(), DownloadItem::COMPLETE);
}
// If a unique path cannot be determined after trying kMaxUniqueFiles
@@ -410,8 +385,8 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
TEST_F(DownloadPathReservationTrackerTest, UnresolvedConflicts) {
base::FilePath path(
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo.txt")));
- scoped_ptr<FakeDownloadItem> items[
- DownloadPathReservationTracker::kMaxUniqueFiles + 1];
+ scoped_ptr<MockDownloadItem>
+ items[DownloadPathReservationTracker::kMaxUniqueFiles + 1];
DownloadPathReservationTracker::FilenameConflictAction conflict_action =
DownloadPathReservationTracker::UNIQUIFY;
bool create_directory = false;
@@ -442,7 +417,7 @@ TEST_F(DownloadPathReservationTrackerTest, UnresolvedConflicts) {
EXPECT_TRUE(verified);
}
// The next reservation for |path| will fail to be unique.
- scoped_ptr<FakeDownloadItem> item(
+ scoped_ptr<MockDownloadItem> item(
CreateDownloadItem(DownloadPathReservationTracker::kMaxUniqueFiles + 1));
base::FilePath reserved_path;
bool verified = true;
@@ -456,16 +431,15 @@ TEST_F(DownloadPathReservationTrackerTest, UnresolvedConflicts) {
EXPECT_FALSE(verified);
EXPECT_EQ(path.value(), reserved_path.value());
- item->SetState(DownloadItem::COMPLETE);
- for (int i = 0; i <= DownloadPathReservationTracker::kMaxUniqueFiles; i++) {
- items[i]->SetState(DownloadItem::COMPLETE);
- }
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
+ for (int i = 0; i <= DownloadPathReservationTracker::kMaxUniqueFiles; i++)
+ SetDownloadItemState(items[i].get(), DownloadItem::COMPLETE);
}
// If the target directory is unwriteable, then callback should be notified that
// verification failed.
TEST_F(DownloadPathReservationTrackerTest, UnwriteableDirectory) {
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo.txt")));
base::FilePath dir(path.DirName());
@@ -491,7 +465,7 @@ TEST_F(DownloadPathReservationTrackerTest, UnwriteableDirectory) {
EXPECT_FALSE(verified);
EXPECT_EQ(path.BaseName().value(), reserved_path.BaseName().value());
}
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
}
// If the default download directory doesn't exist, then it should be
@@ -506,7 +480,7 @@ TEST_F(DownloadPathReservationTrackerTest, CreateDefaultDownloadPath) {
bool create_directory = false;
{
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath reserved_path;
bool verified = true;
CallGetReservedPath(
@@ -518,11 +492,11 @@ TEST_F(DownloadPathReservationTrackerTest, CreateDefaultDownloadPath) {
&verified);
// Verification fails because the directory doesn't exist.
EXPECT_FALSE(verified);
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
}
ASSERT_FALSE(IsPathInUse(path));
{
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath reserved_path;
bool verified = true;
set_default_download_path(dir);
@@ -536,14 +510,14 @@ TEST_F(DownloadPathReservationTrackerTest, CreateDefaultDownloadPath) {
// Verification succeeds because the directory is created.
EXPECT_TRUE(verified);
EXPECT_TRUE(base::DirectoryExists(dir));
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
}
}
// If the target path of the download item changes, the reservation should be
// updated to match.
TEST_F(DownloadPathReservationTrackerTest, UpdatesToTargetPath) {
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(
GetPathInDownloadsDirectory(FILE_PATH_LITERAL("foo.txt")));
ASSERT_FALSE(IsPathInUse(path));
@@ -567,7 +541,7 @@ TEST_F(DownloadPathReservationTrackerTest, UpdatesToTargetPath) {
// The target path is initially empty. If an OnDownloadUpdated() is issued in
// this state, we shouldn't lose the reservation.
ASSERT_EQ(base::FilePath::StringType(), item->GetTargetFilePath().value());
- item->UpdateObservers();
+ item->NotifyObserversDownloadUpdated();
message_loop_.RunUntilIdle();
EXPECT_TRUE(IsPathInUse(path));
@@ -577,13 +551,13 @@ TEST_F(DownloadPathReservationTrackerTest, UpdatesToTargetPath) {
ASSERT_FALSE(IsPathInUse(new_target_path));
EXPECT_CALL(*item, GetTargetFilePath())
.WillRepeatedly(ReturnRef(new_target_path));
- item->UpdateObservers();
+ item->NotifyObserversDownloadUpdated();
message_loop_.RunUntilIdle();
EXPECT_FALSE(IsPathInUse(path));
EXPECT_TRUE(IsPathInUse(new_target_path));
// Destroying the item should release the reservation.
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
item.reset();
message_loop_.RunUntilIdle();
EXPECT_FALSE(IsPathInUse(new_target_path));
@@ -602,7 +576,7 @@ TEST_F(DownloadPathReservationTrackerTest, BasicTruncation) {
// ".crdownload". So take it into account. Should be removed in the future.
const size_t max_length = real_max_length - 11;
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(GetLongNamePathInDownloadsDirectory(
max_length, FILE_PATH_LITERAL(".txt")));
ASSERT_FALSE(IsPathInUse(path));
@@ -625,7 +599,7 @@ TEST_F(DownloadPathReservationTrackerTest, BasicTruncation) {
EXPECT_EQ(max_length, reserved_path.BaseName().value().size());
// But the extension is kept unchanged.
EXPECT_EQ(path.Extension(), reserved_path.Extension());
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
}
TEST_F(DownloadPathReservationTrackerTest, TruncationConflict) {
@@ -634,7 +608,7 @@ TEST_F(DownloadPathReservationTrackerTest, TruncationConflict) {
ASSERT_NE(-1, real_max_length);
const size_t max_length = real_max_length - 11;
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(GetLongNamePathInDownloadsDirectory(
max_length, FILE_PATH_LITERAL(".txt")));
base::FilePath path0(GetLongNamePathInDownloadsDirectory(
@@ -665,7 +639,7 @@ TEST_F(DownloadPathReservationTrackerTest, TruncationConflict) {
EXPECT_TRUE(IsPathInUse(reserved_path));
EXPECT_TRUE(verified);
EXPECT_EQ(path2, reserved_path);
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
}
TEST_F(DownloadPathReservationTrackerTest, TruncationFail) {
@@ -674,7 +648,7 @@ TEST_F(DownloadPathReservationTrackerTest, TruncationFail) {
ASSERT_NE(-1, real_max_length);
const size_t max_length = real_max_length - 11;
- scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1));
+ scoped_ptr<MockDownloadItem> item(CreateDownloadItem(1));
base::FilePath path(GetPathInDownloadsDirectory(
(FILE_PATH_LITERAL("a.") +
base::FilePath::StringType(max_length, 'b')).c_str()));
@@ -694,7 +668,7 @@ TEST_F(DownloadPathReservationTrackerTest, TruncationFail) {
&verified);
// We cannot truncate a path with very long extension.
EXPECT_FALSE(verified);
- item->SetState(DownloadItem::COMPLETE);
+ SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
}
#endif
« no previous file with comments | « chrome/browser/download/download_history_unittest.cc ('k') | chrome/browser/download/download_status_updater_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698