| 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 |