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

Side by Side Diff: content/browser/download/download_item_impl_unittest.cc

Issue 11640007: Make the UI an observer of downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Android clang build Created 7 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "content/browser/download/byte_stream.h" 9 #include "content/browser/download/byte_stream.h"
10 #include "content/browser/download/download_create_info.h" 10 #include "content/browser/download/download_create_info.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 scoped_ptr<DownloadUrlParameters> params, DownloadId id) OVERRIDE { 64 scoped_ptr<DownloadUrlParameters> params, DownloadId id) OVERRIDE {
65 MockResumeInterruptedDownload(params.get(), id); 65 MockResumeInterruptedDownload(params.get(), id);
66 } 66 }
67 MOCK_METHOD2(MockResumeInterruptedDownload, 67 MOCK_METHOD2(MockResumeInterruptedDownload,
68 void(DownloadUrlParameters* params, DownloadId id)); 68 void(DownloadUrlParameters* params, DownloadId id));
69 69
70 MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*()); 70 MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*());
71 MOCK_METHOD1(UpdatePersistence, void(DownloadItemImpl*)); 71 MOCK_METHOD1(UpdatePersistence, void(DownloadItemImpl*));
72 MOCK_METHOD1(DownloadOpened, void(DownloadItemImpl*)); 72 MOCK_METHOD1(DownloadOpened, void(DownloadItemImpl*));
73 MOCK_METHOD1(DownloadRemoved, void(DownloadItemImpl*)); 73 MOCK_METHOD1(DownloadRemoved, void(DownloadItemImpl*));
74 MOCK_METHOD1(ShowDownloadInBrowser, void(DownloadItemImpl*));
75 MOCK_CONST_METHOD1(AssertStateConsistent, void(DownloadItemImpl*)); 74 MOCK_CONST_METHOD1(AssertStateConsistent, void(DownloadItemImpl*));
76 75
77 void VerifyAndClearExpectations() { 76 void VerifyAndClearExpectations() {
78 ::testing::Mock::VerifyAndClearExpectations(this); 77 ::testing::Mock::VerifyAndClearExpectations(this);
79 SetDefaultExpectations(); 78 SetDefaultExpectations();
80 } 79 }
81 80
82 private: 81 private:
83 void SetDefaultExpectations() { 82 void SetDefaultExpectations() {
84 EXPECT_CALL(*this, AssertStateConsistent(_)) 83 EXPECT_CALL(*this, AssertStateConsistent(_))
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 EXPECT_TRUE(item->GetTargetFilePath().empty()); 281 EXPECT_TRUE(item->GetTargetFilePath().empty());
283 DownloadItemImplDelegate::DownloadTargetCallback callback; 282 DownloadItemImplDelegate::DownloadTargetCallback callback;
284 MockDownloadFile* download_file = 283 MockDownloadFile* download_file =
285 AddDownloadFileToDownloadItem(item, &callback); 284 AddDownloadFileToDownloadItem(item, &callback);
286 base::FilePath target_path(kDummyPath); 285 base::FilePath target_path(kDummyPath);
287 base::FilePath intermediate_path( 286 base::FilePath intermediate_path(
288 target_path.InsertBeforeExtensionASCII("x")); 287 target_path.InsertBeforeExtensionASCII("x"));
289 EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _)) 288 EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _))
290 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_NONE, 289 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_NONE,
291 intermediate_path)); 290 intermediate_path));
292 EXPECT_CALL(*mock_delegate(), ShowDownloadInBrowser(_));
293 callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE, 291 callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
294 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path); 292 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
295 RunAllPendingInMessageLoops(); 293 RunAllPendingInMessageLoops();
296 return download_file; 294 return download_file;
297 } 295 }
298 296
299 // Cleanup a download item (specifically get rid of the DownloadFile on it). 297 // Cleanup a download item (specifically get rid of the DownloadFile on it).
300 // The item must be in the expected state. 298 // The item must be in the expected state.
301 void CleanupItem(DownloadItemImpl* item, 299 void CleanupItem(DownloadItemImpl* item,
302 MockDownloadFile* download_file, 300 MockDownloadFile* download_file,
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 MockDownloadFile* download_file = 563 MockDownloadFile* download_file =
566 AddDownloadFileToDownloadItem(item, &callback); 564 AddDownloadFileToDownloadItem(item, &callback);
567 MockObserver observer(item); 565 MockObserver observer(item);
568 base::FilePath target_path(kDummyPath); 566 base::FilePath target_path(kDummyPath);
569 base::FilePath intermediate_path(target_path.InsertBeforeExtensionASCII("x")); 567 base::FilePath intermediate_path(target_path.InsertBeforeExtensionASCII("x"));
570 base::FilePath new_intermediate_path( 568 base::FilePath new_intermediate_path(
571 target_path.InsertBeforeExtensionASCII("y")); 569 target_path.InsertBeforeExtensionASCII("y"));
572 EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _)) 570 EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _))
573 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_NONE, 571 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_NONE,
574 new_intermediate_path)); 572 new_intermediate_path));
575 EXPECT_CALL(*mock_delegate(), ShowDownloadInBrowser(_));
576 573
577 // Currently, a notification would be generated if the danger type is anything 574 // Currently, a notification would be generated if the danger type is anything
578 // other than NOT_DANGEROUS. 575 // other than NOT_DANGEROUS.
579 callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE, 576 callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
580 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path); 577 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
581 EXPECT_FALSE(observer.CheckUpdated()); 578 EXPECT_FALSE(observer.CheckUpdated());
582 RunAllPendingInMessageLoops(); 579 RunAllPendingInMessageLoops();
583 EXPECT_TRUE(observer.CheckUpdated()); 580 EXPECT_TRUE(observer.CheckUpdated());
584 EXPECT_EQ(new_intermediate_path, item->GetFullPath()); 581 EXPECT_EQ(new_intermediate_path, item->GetFullPath());
585 582
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 AddDownloadFileToDownloadItem(item, &callback); 615 AddDownloadFileToDownloadItem(item, &callback);
619 base::FilePath target_path(base::FilePath(kDummyPath).AppendASCII("foo.bar")); 616 base::FilePath target_path(base::FilePath(kDummyPath).AppendASCII("foo.bar"));
620 base::FilePath intermediate_path(target_path.InsertBeforeExtensionASCII("x")); 617 base::FilePath intermediate_path(target_path.InsertBeforeExtensionASCII("x"));
621 EXPECT_EQ(FILE_PATH_LITERAL(""), 618 EXPECT_EQ(FILE_PATH_LITERAL(""),
622 item->GetFileNameToReportUser().value()); 619 item->GetFileNameToReportUser().value());
623 EXPECT_CALL(*download_file, RenameAndUniquify(_, _)) 620 EXPECT_CALL(*download_file, RenameAndUniquify(_, _))
624 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_NONE, 621 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_NONE,
625 intermediate_path)); 622 intermediate_path));
626 callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE, 623 callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
627 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path); 624 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
628 EXPECT_CALL(*mock_delegate(), ShowDownloadInBrowser(_));
629 RunAllPendingInMessageLoops(); 625 RunAllPendingInMessageLoops();
630 EXPECT_EQ(FILE_PATH_LITERAL("foo.bar"), 626 EXPECT_EQ(FILE_PATH_LITERAL("foo.bar"),
631 item->GetFileNameToReportUser().value()); 627 item->GetFileNameToReportUser().value());
632 item->SetDisplayName(base::FilePath(FILE_PATH_LITERAL("new.name"))); 628 item->SetDisplayName(base::FilePath(FILE_PATH_LITERAL("new.name")));
633 EXPECT_EQ(FILE_PATH_LITERAL("new.name"), 629 EXPECT_EQ(FILE_PATH_LITERAL("new.name"),
634 item->GetFileNameToReportUser().value()); 630 item->GetFileNameToReportUser().value());
635 CleanupItem(item, download_file, DownloadItem::IN_PROGRESS); 631 CleanupItem(item, download_file, DownloadItem::IN_PROGRESS);
636 } 632 }
637 633
638 // Test to make sure that Start method calls DF initialize properly. 634 // Test to make sure that Start method calls DF initialize properly.
(...skipping 16 matching lines...) Expand all
655 DownloadItemImplDelegate::DownloadTargetCallback callback; 651 DownloadItemImplDelegate::DownloadTargetCallback callback;
656 MockDownloadFile* download_file = 652 MockDownloadFile* download_file =
657 AddDownloadFileToDownloadItem(item, &callback); 653 AddDownloadFileToDownloadItem(item, &callback);
658 base::FilePath final_path(base::FilePath(kDummyPath).AppendASCII("foo.bar")); 654 base::FilePath final_path(base::FilePath(kDummyPath).AppendASCII("foo.bar"));
659 base::FilePath intermediate_path(final_path.InsertBeforeExtensionASCII("x")); 655 base::FilePath intermediate_path(final_path.InsertBeforeExtensionASCII("x"));
660 base::FilePath new_intermediate_path( 656 base::FilePath new_intermediate_path(
661 final_path.InsertBeforeExtensionASCII("y")); 657 final_path.InsertBeforeExtensionASCII("y"));
662 EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _)) 658 EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _))
663 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_NONE, 659 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_NONE,
664 new_intermediate_path)); 660 new_intermediate_path));
665 EXPECT_CALL(*mock_delegate(), ShowDownloadInBrowser(item))
666 .Times(1);
667 661
668 callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE, 662 callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
669 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path); 663 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
670 RunAllPendingInMessageLoops(); 664 RunAllPendingInMessageLoops();
671 // All the callbacks should have happened by now. 665 // All the callbacks should have happened by now.
672 ::testing::Mock::VerifyAndClearExpectations(download_file); 666 ::testing::Mock::VerifyAndClearExpectations(download_file);
673 mock_delegate()->VerifyAndClearExpectations(); 667 mock_delegate()->VerifyAndClearExpectations();
674 668
675 EXPECT_CALL(*mock_delegate(), ShouldCompleteDownload(item, _)) 669 EXPECT_CALL(*mock_delegate(), ShouldCompleteDownload(item, _))
676 .WillOnce(Return(true)); 670 .WillOnce(Return(true));
(...skipping 16 matching lines...) Expand all
693 AddDownloadFileToDownloadItem(item, &callback); 687 AddDownloadFileToDownloadItem(item, &callback);
694 base::FilePath final_path(base::FilePath(kDummyPath).AppendASCII("foo.bar")); 688 base::FilePath final_path(base::FilePath(kDummyPath).AppendASCII("foo.bar"));
695 base::FilePath intermediate_path(final_path.InsertBeforeExtensionASCII("x")); 689 base::FilePath intermediate_path(final_path.InsertBeforeExtensionASCII("x"));
696 base::FilePath new_intermediate_path( 690 base::FilePath new_intermediate_path(
697 final_path.InsertBeforeExtensionASCII("y")); 691 final_path.InsertBeforeExtensionASCII("y"));
698 EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _)) 692 EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _))
699 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, 693 .WillOnce(ScheduleRenameCallback(DOWNLOAD_INTERRUPT_REASON_FILE_FAILED,
700 new_intermediate_path)); 694 new_intermediate_path));
701 EXPECT_CALL(*download_file, Cancel()) 695 EXPECT_CALL(*download_file, Cancel())
702 .Times(1); 696 .Times(1);
703 EXPECT_CALL(*mock_delegate(), ShowDownloadInBrowser(item))
704 .Times(1);
705 697
706 callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE, 698 callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
707 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path); 699 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
708 RunAllPendingInMessageLoops(); 700 RunAllPendingInMessageLoops();
709 // All the callbacks should have happened by now. 701 // All the callbacks should have happened by now.
710 ::testing::Mock::VerifyAndClearExpectations(download_file); 702 ::testing::Mock::VerifyAndClearExpectations(download_file);
711 mock_delegate()->VerifyAndClearExpectations(); 703 mock_delegate()->VerifyAndClearExpectations();
712 } 704 }
713 705
714 TEST_F(DownloadItemTest, Interrupted) { 706 TEST_F(DownloadItemTest, Interrupted) {
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 EXPECT_CALL(*download_file, Detach()); 1046 EXPECT_CALL(*download_file, Detach());
1055 RunAllPendingInMessageLoops(); 1047 RunAllPendingInMessageLoops();
1056 EXPECT_EQ(DownloadItem::COMPLETE, item->GetState()); 1048 EXPECT_EQ(DownloadItem::COMPLETE, item->GetState());
1057 } 1049 }
1058 1050
1059 TEST(MockDownloadItem, Compiles) { 1051 TEST(MockDownloadItem, Compiles) {
1060 MockDownloadItem mock_item; 1052 MockDownloadItem mock_item;
1061 } 1053 }
1062 1054
1063 } // namespace content 1055 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_item_impl_delegate.cc ('k') | content/browser/download/download_manager_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698