OLD | NEW |
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 "content/browser/download/download_manager_impl.h" | 5 #include "content/browser/download/download_manager_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 0, | 98 0, |
99 0, | 99 0, |
100 std::string(), | 100 std::string(), |
101 DownloadItem::COMPLETE, | 101 DownloadItem::COMPLETE, |
102 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 102 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
103 DOWNLOAD_INTERRUPT_REASON_NONE, | 103 DOWNLOAD_INTERRUPT_REASON_NONE, |
104 false, | 104 false, |
105 net::NetLogWithSource()) {} | 105 net::NetLogWithSource()) {} |
106 virtual ~MockDownloadItemImpl() {} | 106 virtual ~MockDownloadItemImpl() {} |
107 | 107 |
108 MOCK_METHOD4(OnDownloadTargetDetermined, | 108 MOCK_METHOD5(OnDownloadTargetDetermined, |
109 void(const base::FilePath&, TargetDisposition, | 109 void(const base::FilePath&, |
110 DownloadDangerType, const base::FilePath&)); | 110 TargetDisposition, |
| 111 DownloadDangerType, |
| 112 const base::FilePath&, |
| 113 DownloadInterruptReason)); |
111 MOCK_METHOD1(AddObserver, void(DownloadItem::Observer*)); | 114 MOCK_METHOD1(AddObserver, void(DownloadItem::Observer*)); |
112 MOCK_METHOD1(RemoveObserver, void(DownloadItem::Observer*)); | 115 MOCK_METHOD1(RemoveObserver, void(DownloadItem::Observer*)); |
113 MOCK_METHOD0(UpdateObservers, void()); | 116 MOCK_METHOD0(UpdateObservers, void()); |
114 MOCK_METHOD0(CanShowInFolder, bool()); | 117 MOCK_METHOD0(CanShowInFolder, bool()); |
115 MOCK_METHOD0(CanOpenDownload, bool()); | 118 MOCK_METHOD0(CanOpenDownload, bool()); |
116 MOCK_METHOD0(ShouldOpenFileBasedOnExtension, bool()); | 119 MOCK_METHOD0(ShouldOpenFileBasedOnExtension, bool()); |
117 MOCK_METHOD0(OpenDownload, void()); | 120 MOCK_METHOD0(OpenDownload, void()); |
118 MOCK_METHOD0(ShowDownloadInShell, void()); | 121 MOCK_METHOD0(ShowDownloadInShell, void()); |
119 MOCK_METHOD0(ValidateDangerousDownload, void()); | 122 MOCK_METHOD0(ValidateDangerousDownload, void()); |
120 MOCK_METHOD1(StealDangerousDownload, void(const AcquireFileCallback&)); | 123 MOCK_METHOD1(StealDangerousDownload, void(const AcquireFileCallback&)); |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
483 | 486 |
484 } // namespace | 487 } // namespace |
485 | 488 |
486 class DownloadManagerTest : public testing::Test { | 489 class DownloadManagerTest : public testing::Test { |
487 public: | 490 public: |
488 static const char* kTestData; | 491 static const char* kTestData; |
489 static const size_t kTestDataLen; | 492 static const size_t kTestDataLen; |
490 | 493 |
491 DownloadManagerTest() | 494 DownloadManagerTest() |
492 : callback_called_(false), | 495 : callback_called_(false), |
| 496 target_disposition_(DownloadItem::TARGET_DISPOSITION_OVERWRITE), |
| 497 danger_type_(DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
| 498 interrupt_reason_(DOWNLOAD_INTERRUPT_REASON_NONE), |
493 ui_thread_(BrowserThread::UI, &message_loop_), | 499 ui_thread_(BrowserThread::UI, &message_loop_), |
494 file_thread_(BrowserThread::FILE, &message_loop_), | 500 file_thread_(BrowserThread::FILE, &message_loop_), |
495 next_download_id_(0) { | 501 next_download_id_(0) {} |
496 } | |
497 | 502 |
498 // We tear down everything in TearDown(). | 503 // We tear down everything in TearDown(). |
499 ~DownloadManagerTest() override {} | 504 ~DownloadManagerTest() override {} |
500 | 505 |
501 // Create a MockDownloadItemFactory and MockDownloadManagerDelegate, | 506 // Create a MockDownloadItemFactory and MockDownloadManagerDelegate, |
502 // then create a DownloadManager that points | 507 // then create a DownloadManager that points |
503 // at all of those. | 508 // at all of those. |
504 void SetUp() override { | 509 void SetUp() override { |
505 DCHECK(!download_manager_); | 510 DCHECK(!download_manager_); |
506 | 511 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 } | 594 } |
590 | 595 |
591 MockDownloadManagerObserver& GetMockObserver() { | 596 MockDownloadManagerObserver& GetMockObserver() { |
592 return *observer_; | 597 return *observer_; |
593 } | 598 } |
594 | 599 |
595 void DownloadTargetDeterminedCallback( | 600 void DownloadTargetDeterminedCallback( |
596 const base::FilePath& target_path, | 601 const base::FilePath& target_path, |
597 DownloadItem::TargetDisposition disposition, | 602 DownloadItem::TargetDisposition disposition, |
598 DownloadDangerType danger_type, | 603 DownloadDangerType danger_type, |
599 const base::FilePath& intermediate_path) { | 604 const base::FilePath& intermediate_path, |
| 605 DownloadInterruptReason interrupt_reason) { |
600 callback_called_ = true; | 606 callback_called_ = true; |
601 target_path_ = target_path; | 607 target_path_ = target_path; |
602 target_disposition_ = disposition; | 608 target_disposition_ = disposition; |
603 danger_type_ = danger_type; | 609 danger_type_ = danger_type; |
604 intermediate_path_ = intermediate_path; | 610 intermediate_path_ = intermediate_path; |
| 611 interrupt_reason_ = interrupt_reason; |
605 } | 612 } |
606 | 613 |
607 void DetermineDownloadTarget(DownloadItemImpl* item) { | 614 void DetermineDownloadTarget(DownloadItemImpl* item) { |
608 download_manager_->DetermineDownloadTarget( | 615 download_manager_->DetermineDownloadTarget( |
609 item, base::Bind( | 616 item, base::Bind( |
610 &DownloadManagerTest::DownloadTargetDeterminedCallback, | 617 &DownloadManagerTest::DownloadTargetDeterminedCallback, |
611 base::Unretained(this))); | 618 base::Unretained(this))); |
612 } | 619 } |
613 | 620 |
614 protected: | 621 protected: |
615 // Key test variable; we'll keep it available to sub-classes. | 622 // Key test variable; we'll keep it available to sub-classes. |
616 std::unique_ptr<DownloadManagerImpl> download_manager_; | 623 std::unique_ptr<DownloadManagerImpl> download_manager_; |
617 base::WeakPtr<MockDownloadFileFactory> mock_download_file_factory_; | 624 base::WeakPtr<MockDownloadFileFactory> mock_download_file_factory_; |
618 | 625 |
619 // Target detetermined callback. | 626 // Target detetermined callback. |
620 bool callback_called_; | 627 bool callback_called_; |
621 base::FilePath target_path_; | 628 base::FilePath target_path_; |
622 DownloadItem::TargetDisposition target_disposition_; | 629 DownloadItem::TargetDisposition target_disposition_; |
623 DownloadDangerType danger_type_; | 630 DownloadDangerType danger_type_; |
624 base::FilePath intermediate_path_; | 631 base::FilePath intermediate_path_; |
| 632 DownloadInterruptReason interrupt_reason_; |
625 | 633 |
626 std::vector<GURL> download_urls_; | 634 std::vector<GURL> download_urls_; |
627 | 635 |
628 private: | 636 private: |
629 base::MessageLoopForUI message_loop_; | 637 base::MessageLoopForUI message_loop_; |
630 TestBrowserThread ui_thread_; | 638 TestBrowserThread ui_thread_; |
631 TestBrowserThread file_thread_; | 639 TestBrowserThread file_thread_; |
632 base::WeakPtr<MockDownloadItemFactory> mock_download_item_factory_; | 640 base::WeakPtr<MockDownloadItemFactory> mock_download_item_factory_; |
633 std::unique_ptr<MockDownloadManagerDelegate> mock_download_manager_delegate_; | 641 std::unique_ptr<MockDownloadManagerDelegate> mock_download_manager_delegate_; |
634 std::unique_ptr<MockBrowserContext> mock_browser_context_; | 642 std::unique_ptr<MockBrowserContext> mock_browser_context_; |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 MockDownloadItemImpl& item(AddItemToManager()); | 696 MockDownloadItemImpl& item(AddItemToManager()); |
689 | 697 |
690 base::FilePath path(FILE_PATH_LITERAL("random_filepath.txt")); | 698 base::FilePath path(FILE_PATH_LITERAL("random_filepath.txt")); |
691 EXPECT_CALL(GetMockDownloadManagerDelegate(), | 699 EXPECT_CALL(GetMockDownloadManagerDelegate(), |
692 DetermineDownloadTarget(&item, _)) | 700 DetermineDownloadTarget(&item, _)) |
693 .WillOnce(Return(false)); | 701 .WillOnce(Return(false)); |
694 EXPECT_CALL(item, GetForcedFilePath()) | 702 EXPECT_CALL(item, GetForcedFilePath()) |
695 .WillOnce(ReturnRef(path)); | 703 .WillOnce(ReturnRef(path)); |
696 | 704 |
697 // Confirm that the callback was called with the right values in this case. | 705 // Confirm that the callback was called with the right values in this case. |
698 callback_called_ = false; | |
699 DetermineDownloadTarget(&item); | 706 DetermineDownloadTarget(&item); |
700 EXPECT_TRUE(callback_called_); | 707 EXPECT_TRUE(callback_called_); |
701 EXPECT_EQ(path, target_path_); | 708 EXPECT_EQ(path, target_path_); |
702 EXPECT_EQ(DownloadItem::TARGET_DISPOSITION_OVERWRITE, target_disposition_); | 709 EXPECT_EQ(DownloadItem::TARGET_DISPOSITION_OVERWRITE, target_disposition_); |
703 EXPECT_EQ(DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, danger_type_); | 710 EXPECT_EQ(DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, danger_type_); |
704 EXPECT_EQ(path, intermediate_path_); | 711 EXPECT_EQ(path, intermediate_path_); |
| 712 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NONE, interrupt_reason_); |
705 } | 713 } |
706 | 714 |
707 // Confirm the DownloadManagerImpl::RemoveAllDownloads() functionality | 715 // Confirm the DownloadManagerImpl::RemoveAllDownloads() functionality |
708 TEST_F(DownloadManagerTest, RemoveAllDownloads) { | 716 TEST_F(DownloadManagerTest, RemoveAllDownloads) { |
709 base::Time now(base::Time::Now()); | 717 base::Time now(base::Time::Now()); |
710 for (uint32_t i = 0; i < 4; ++i) { | 718 for (uint32_t i = 0; i < 4; ++i) { |
711 MockDownloadItemImpl& item(AddItemToManager()); | 719 MockDownloadItemImpl& item(AddItemToManager()); |
712 EXPECT_EQ(i, item.GetId()); | 720 EXPECT_EQ(i, item.GetId()); |
713 EXPECT_CALL(item, GetStartTime()) | 721 EXPECT_CALL(item, GetStartTime()) |
714 .WillRepeatedly(Return(now)); | 722 .WillRepeatedly(Return(now)); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 EXPECT_CALL(GetMockDownloadItem(1), Remove()).Times(0); | 795 EXPECT_CALL(GetMockDownloadItem(1), Remove()).Times(0); |
788 | 796 |
789 base::Callback<bool(const GURL&)> url_filter = | 797 base::Callback<bool(const GURL&)> url_filter = |
790 GetSingleURLFilter(download_urls_[0]); | 798 GetSingleURLFilter(download_urls_[0]); |
791 int remove_count = download_manager_->RemoveDownloadsByURLAndTime( | 799 int remove_count = download_manager_->RemoveDownloadsByURLAndTime( |
792 url_filter, base::Time(), base::Time::Max()); | 800 url_filter, base::Time(), base::Time::Max()); |
793 EXPECT_EQ(remove_count, 1); | 801 EXPECT_EQ(remove_count, 1); |
794 } | 802 } |
795 | 803 |
796 } // namespace content | 804 } // namespace content |
OLD | NEW |