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

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

Issue 2453633006: [downloads] Move platform specific code out of DownloadTargetDeterminer. (Closed)
Patch Set: . Created 4 years, 2 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_item_impl_unittest.cc
diff --git a/content/browser/download/download_item_impl_unittest.cc b/content/browser/download/download_item_impl_unittest.cc
index 4f84f66dfe6a49dddbb3aa677460d08ceb629da6..af958e5faf3aef4d39cddee5b36e2e1f2288f3cb 100644
--- a/content/browser/download/download_item_impl_unittest.cc
+++ b/content/browser/download/download_item_impl_unittest.cc
@@ -337,7 +337,8 @@ class DownloadItemTest : public testing::Test {
.WillOnce(ScheduleRenameAndUniquifyCallback(
DOWNLOAD_INTERRUPT_REASON_NONE, intermediate_path));
callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- danger_type, intermediate_path);
+ danger_type, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
return download_file;
}
@@ -614,9 +615,14 @@ TEST_F(DownloadItemTest, LimitRestartsAfterInterrupted) {
EXPECT_CALL(*mock_download_file, RenameAndUniquify(intermediate_path, _))
.WillOnce(ScheduleRenameAndUniquifyCallback(
DOWNLOAD_INTERRUPT_REASON_NONE, intermediate_path));
+ callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
svaldez 2016/10/28 17:29:36 With this I think you should be changing the for s
asanka 2016/11/07 19:50:15 It needed more massaging. PTAL? :-)
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
+ RunAllPendingInMessageLoops();
}
callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
// Use a continuable interrupt.
@@ -814,7 +820,8 @@ TEST_F(DownloadItemTest, NotificationAfterOnDownloadTargetDetermined) {
// Currently, a notification would be generated if the danger type is anything
// other than NOT_DANGEROUS.
callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
EXPECT_FALSE(observer.CheckAndResetDownloadUpdated());
RunAllPendingInMessageLoops();
EXPECT_TRUE(observer.CheckAndResetDownloadUpdated());
@@ -862,7 +869,8 @@ TEST_F(DownloadItemTest, DisplayName) {
.WillOnce(ScheduleRenameAndUniquifyCallback(
DOWNLOAD_INTERRUPT_REASON_NONE, intermediate_path));
callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
EXPECT_EQ(FILE_PATH_LITERAL("foo.bar"),
item->GetFileNameToReportUser().value());
@@ -912,7 +920,8 @@ TEST_F(DownloadItemTest, InitDownloadFileFails) {
download_target_callback.Run(base::FilePath(kDummyTargetPath),
DownloadItem::TARGET_DISPOSITION_OVERWRITE,
DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
- base::FilePath(kDummyIntermediatePath));
+ base::FilePath(kDummyIntermediatePath),
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
EXPECT_EQ(DownloadItem::INTERRUPTED, item->GetState());
@@ -945,7 +954,8 @@ TEST_F(DownloadItemTest, StartFailedDownload) {
base::FilePath target_path(FILE_PATH_LITERAL("foo"));
download_target_callback.Run(target_path,
DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, target_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, target_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
EXPECT_EQ(target_path, item->GetTargetFilePath());
@@ -967,7 +977,8 @@ TEST_F(DownloadItemTest, CallbackAfterRename) {
DOWNLOAD_INTERRUPT_REASON_NONE, new_intermediate_path));
callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
// All the callbacks should have happened by now.
::testing::Mock::VerifyAndClearExpectations(download_file);
@@ -1006,7 +1017,8 @@ TEST_F(DownloadItemTest, CallbackAfterInterruptedRename) {
.Times(1);
callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
// All the callbacks should have happened by now.
::testing::Mock::VerifyAndClearExpectations(download_file);
@@ -1058,7 +1070,8 @@ TEST_F(DownloadItemTest, InterruptedBeforeIntermediateRename_Restart) {
.Times(1);
callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
// All the callbacks should have happened by now.
::testing::Mock::VerifyAndClearExpectations(download_file);
@@ -1093,7 +1106,8 @@ TEST_F(DownloadItemTest, InterruptedBeforeIntermediateRename_Continue) {
EXPECT_CALL(*download_file, Detach());
callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
// All the callbacks should have happened by now.
::testing::Mock::VerifyAndClearExpectations(download_file);
@@ -1126,7 +1140,8 @@ TEST_F(DownloadItemTest, InterruptedBeforeIntermediateRename_Failed) {
.Times(1);
callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path,
+ DOWNLOAD_INTERRUPT_REASON_NONE);
RunAllPendingInMessageLoops();
// All the callbacks should have happened by now.
::testing::Mock::VerifyAndClearExpectations(download_file);
@@ -1149,6 +1164,47 @@ TEST_F(DownloadItemTest, Canceled) {
EXPECT_EQ(DownloadItem::CANCELLED, item->GetState());
}
+TEST_F(DownloadItemTest, DownloadTargetDetermined_Cancel) {
+ DownloadItemImpl* item = CreateDownloadItem();
+ DownloadItemImplDelegate::DownloadTargetCallback callback;
+ MockDownloadFile* download_file = CallDownloadItemStart(item, &callback);
+
+ EXPECT_CALL(*download_file, Cancel());
+ callback.Run(base::FilePath(FILE_PATH_LITERAL("foo")),
+ DownloadItem::TARGET_DISPOSITION_OVERWRITE,
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
+ base::FilePath(FILE_PATH_LITERAL("bar")),
+ DOWNLOAD_INTERRUPT_REASON_USER_CANCELED);
+ EXPECT_EQ(DownloadItem::CANCELLED, item->GetState());
+}
+
+TEST_F(DownloadItemTest, DownloadTargetDetermined_CancelWithEmptyName) {
+ DownloadItemImpl* item = CreateDownloadItem();
+ DownloadItemImplDelegate::DownloadTargetCallback callback;
+ MockDownloadFile* download_file = CallDownloadItemStart(item, &callback);
+
+ EXPECT_CALL(*download_file, Cancel());
+ callback.Run(base::FilePath(), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, base::FilePath(),
+ DOWNLOAD_INTERRUPT_REASON_NONE);
+ EXPECT_EQ(DownloadItem::CANCELLED, item->GetState());
+}
+
+TEST_F(DownloadItemTest, DownloadTargetDetermined_Conflict) {
+ DownloadItemImpl* item = CreateDownloadItem();
+ DownloadItemImplDelegate::DownloadTargetCallback callback;
+ MockDownloadFile* download_file = CallDownloadItemStart(item, &callback);
+ base::FilePath target_path(FILE_PATH_LITERAL("/foo/bar"));
+
+ EXPECT_CALL(*download_file, Cancel());
+ callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, target_path,
+ DOWNLOAD_INTERRUPT_REASON_FILE_SAME_AS_SOURCE);
+ EXPECT_EQ(DownloadItem::INTERRUPTED, item->GetState());
+ EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_FILE_SAME_AS_SOURCE,
+ item->GetLastReason());
+}
+
TEST_F(DownloadItemTest, FileRemoved) {
DownloadItemImpl* item = CreateDownloadItem();
@@ -1876,7 +1932,8 @@ TEST_P(DownloadItemDestinationUpdateRaceTest, DownloadCancelledByUser) {
destination_observer);
target_callback.Run(base::FilePath(),
DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, base::FilePath());
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, base::FilePath(),
+ DOWNLOAD_INTERRUPT_REASON_NONE);
EXPECT_EQ(DownloadItem::CANCELLED, item_->GetState());
RunAllPendingInMessageLoops();
}
@@ -1929,7 +1986,8 @@ TEST_P(DownloadItemDestinationUpdateRaceTest, IntermediateRenameFails) {
target_callback.Run(base::FilePath(kDummyTargetPath),
DownloadItem::TARGET_DISPOSITION_OVERWRITE,
DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
- base::FilePath(kDummyIntermediatePath));
+ base::FilePath(kDummyIntermediatePath),
+ DOWNLOAD_INTERRUPT_REASON_NONE);
intermediate_rename_loop.Run();
ASSERT_FALSE(intermediate_rename_callback.is_null());
@@ -1998,7 +2056,8 @@ TEST_P(DownloadItemDestinationUpdateRaceTest, IntermediateRenameSucceeds) {
target_callback.Run(base::FilePath(kDummyTargetPath),
DownloadItem::TARGET_DISPOSITION_OVERWRITE,
DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
- base::FilePath(kDummyIntermediatePath));
+ base::FilePath(kDummyIntermediatePath),
+ DOWNLOAD_INTERRUPT_REASON_NONE);
intermediate_rename_loop.Run();
ASSERT_FALSE(intermediate_rename_callback.is_null());

Powered by Google App Engine
This is Rietveld 408576698