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

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

Issue 2758453003: Recording download mime types for normal profile (Closed)
Patch Set: comments Created 3 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
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 "content/browser/download/download_item_impl.h" 5 #include "content/browser/download/download_item_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <iterator> 9 #include <iterator>
10 #include <map> 10 #include <map>
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 const base::FilePath::CharType kDummyIntermediatePath[] = 54 const base::FilePath::CharType kDummyIntermediatePath[] =
55 FILE_PATH_LITERAL("/testpathx"); 55 FILE_PATH_LITERAL("/testpathx");
56 56
57 namespace content { 57 namespace content {
58 58
59 namespace { 59 namespace {
60 60
61 class MockDelegate : public DownloadItemImplDelegate { 61 class MockDelegate : public DownloadItemImplDelegate {
62 public: 62 public:
63 MockDelegate() : DownloadItemImplDelegate() { 63 MockDelegate() : DownloadItemImplDelegate() {
64 browser_context_.reset(new TestBrowserContext);
64 SetDefaultExpectations(); 65 SetDefaultExpectations();
65 } 66 }
66 67
67 MOCK_METHOD2(DetermineDownloadTarget, void( 68 MOCK_METHOD2(DetermineDownloadTarget, void(
68 DownloadItemImpl*, const DownloadTargetCallback&)); 69 DownloadItemImpl*, const DownloadTargetCallback&));
69 MOCK_METHOD2(ShouldCompleteDownload, 70 MOCK_METHOD2(ShouldCompleteDownload,
70 bool(DownloadItemImpl*, const base::Closure&)); 71 bool(DownloadItemImpl*, const base::Closure&));
71 MOCK_METHOD2(ShouldOpenDownload, 72 MOCK_METHOD2(ShouldOpenDownload,
72 bool(DownloadItemImpl*, const ShouldOpenDownloadCallback&)); 73 bool(DownloadItemImpl*, const ShouldOpenDownloadCallback&));
73 MOCK_METHOD1(ShouldOpenFileBasedOnExtension, bool(const base::FilePath&)); 74 MOCK_METHOD1(ShouldOpenFileBasedOnExtension, bool(const base::FilePath&));
74 MOCK_METHOD1(CheckForFileRemoval, void(DownloadItemImpl*)); 75 MOCK_METHOD1(CheckForFileRemoval, void(DownloadItemImpl*));
75 76
76 void ResumeInterruptedDownload(std::unique_ptr<DownloadUrlParameters> params, 77 void ResumeInterruptedDownload(std::unique_ptr<DownloadUrlParameters> params,
77 uint32_t id) override { 78 uint32_t id) override {
78 MockResumeInterruptedDownload(params.get(), id); 79 MockResumeInterruptedDownload(params.get(), id);
79 } 80 }
80 MOCK_METHOD2(MockResumeInterruptedDownload, 81 MOCK_METHOD2(MockResumeInterruptedDownload,
81 void(DownloadUrlParameters* params, uint32_t id)); 82 void(DownloadUrlParameters* params, uint32_t id));
82 83
83 MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*()); 84 BrowserContext* GetBrowserContext() const override {
85 return browser_context_.get();
86 }
87
84 MOCK_METHOD1(DownloadOpened, void(DownloadItemImpl*)); 88 MOCK_METHOD1(DownloadOpened, void(DownloadItemImpl*));
85 MOCK_METHOD1(DownloadRemoved, void(DownloadItemImpl*)); 89 MOCK_METHOD1(DownloadRemoved, void(DownloadItemImpl*));
86 MOCK_CONST_METHOD1(AssertStateConsistent, void(DownloadItemImpl*)); 90 MOCK_CONST_METHOD1(AssertStateConsistent, void(DownloadItemImpl*));
87 91
88 void VerifyAndClearExpectations() { 92 void VerifyAndClearExpectations() {
89 ::testing::Mock::VerifyAndClearExpectations(this); 93 ::testing::Mock::VerifyAndClearExpectations(this);
90 SetDefaultExpectations(); 94 SetDefaultExpectations();
91 } 95 }
92 96
93 private: 97 private:
94 void SetDefaultExpectations() { 98 void SetDefaultExpectations() {
95 EXPECT_CALL(*this, AssertStateConsistent(_)) 99 EXPECT_CALL(*this, AssertStateConsistent(_))
96 .WillRepeatedly(Return()); 100 .WillRepeatedly(Return());
97 EXPECT_CALL(*this, ShouldOpenFileBasedOnExtension(_)) 101 EXPECT_CALL(*this, ShouldOpenFileBasedOnExtension(_))
98 .WillRepeatedly(Return(false)); 102 .WillRepeatedly(Return(false));
99 EXPECT_CALL(*this, ShouldOpenDownload(_, _)) 103 EXPECT_CALL(*this, ShouldOpenDownload(_, _))
100 .WillRepeatedly(Return(true)); 104 .WillRepeatedly(Return(true));
101 } 105 }
106
107 std::unique_ptr<TestBrowserContext> browser_context_;
102 }; 108 };
103 109
104 class MockRequestHandle : public DownloadRequestHandleInterface { 110 class MockRequestHandle : public DownloadRequestHandleInterface {
105 public: 111 public:
106 MOCK_CONST_METHOD0(GetWebContents, WebContents*()); 112 MOCK_CONST_METHOD0(GetWebContents, WebContents*());
107 MOCK_CONST_METHOD0(GetDownloadManager, DownloadManager*()); 113 MOCK_CONST_METHOD0(GetDownloadManager, DownloadManager*());
108 MOCK_CONST_METHOD0(PauseRequest, void()); 114 MOCK_CONST_METHOD0(PauseRequest, void());
109 MOCK_CONST_METHOD0(ResumeRequest, void()); 115 MOCK_CONST_METHOD0(ResumeRequest, void());
110 MOCK_CONST_METHOD0(CancelRequest, void()); 116 MOCK_CONST_METHOD0(CancelRequest, void());
111 MOCK_CONST_METHOD0(DebugString, std::string()); 117 MOCK_CONST_METHOD0(DebugString, std::string());
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 TEST_F(DownloadItemTest, ContinueAfterInterrupted) { 616 TEST_F(DownloadItemTest, ContinueAfterInterrupted) {
611 DownloadItemImpl* item = CreateDownloadItem(); 617 DownloadItemImpl* item = CreateDownloadItem();
612 TestDownloadItemObserver observer(item); 618 TestDownloadItemObserver observer(item);
613 MockDownloadFile* download_file = 619 MockDownloadFile* download_file =
614 DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS); 620 DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
615 621
616 // Interrupt the download, using a continuable interrupt. 622 // Interrupt the download, using a continuable interrupt.
617 EXPECT_CALL(*download_file, FullPath()) 623 EXPECT_CALL(*download_file, FullPath())
618 .WillOnce(ReturnRefOfCopy(base::FilePath())); 624 .WillOnce(ReturnRefOfCopy(base::FilePath()));
619 EXPECT_CALL(*download_file, Detach()); 625 EXPECT_CALL(*download_file, Detach());
620 EXPECT_CALL(*mock_delegate(), GetBrowserContext())
621 .WillRepeatedly(Return(browser_context()));
622 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _)).Times(1); 626 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _)).Times(1);
623 item->DestinationObserverAsWeakPtr()->DestinationError( 627 item->DestinationObserverAsWeakPtr()->DestinationError(
624 DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 0, 628 DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 0,
625 std::unique_ptr<crypto::SecureHash>()); 629 std::unique_ptr<crypto::SecureHash>());
626 ASSERT_TRUE(observer.CheckAndResetDownloadUpdated()); 630 ASSERT_TRUE(observer.CheckAndResetDownloadUpdated());
627 // Since the download is resumed automatically, the interrupt count doesn't 631 // Since the download is resumed automatically, the interrupt count doesn't
628 // increase. 632 // increase.
629 ASSERT_EQ(0, observer.interrupt_count()); 633 ASSERT_EQ(0, observer.interrupt_count());
630 634
631 // Test expectations verify that ResumeInterruptedDownload() is called (by way 635 // Test expectations verify that ResumeInterruptedDownload() is called (by way
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 item->DestinationObserverAsWeakPtr()); 701 item->DestinationObserverAsWeakPtr());
698 TestDownloadItemObserver observer(item); 702 TestDownloadItemObserver observer(item);
699 MockDownloadFile* mock_download_file(nullptr); 703 MockDownloadFile* mock_download_file(nullptr);
700 std::unique_ptr<DownloadFile> download_file; 704 std::unique_ptr<DownloadFile> download_file;
701 MockRequestHandle* mock_request_handle(nullptr); 705 MockRequestHandle* mock_request_handle(nullptr);
702 std::unique_ptr<DownloadRequestHandleInterface> request_handle; 706 std::unique_ptr<DownloadRequestHandleInterface> request_handle;
703 DownloadItemImplDelegate::DownloadTargetCallback callback; 707 DownloadItemImplDelegate::DownloadTargetCallback callback;
704 708
705 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _)) 709 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _))
706 .WillRepeatedly(SaveArg<1>(&callback)); 710 .WillRepeatedly(SaveArg<1>(&callback));
707 EXPECT_CALL(*mock_delegate(), GetBrowserContext())
708 .WillRepeatedly(Return(browser_context()));
709 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _)) 711 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _))
710 .Times(DownloadItemImpl::kMaxAutoResumeAttempts); 712 .Times(DownloadItemImpl::kMaxAutoResumeAttempts);
711 for (int i = 0; i < (DownloadItemImpl::kMaxAutoResumeAttempts + 1); ++i) { 713 for (int i = 0; i < (DownloadItemImpl::kMaxAutoResumeAttempts + 1); ++i) {
712 SCOPED_TRACE(::testing::Message() << "Iteration " << i); 714 SCOPED_TRACE(::testing::Message() << "Iteration " << i);
713 715
714 mock_download_file = new NiceMock<MockDownloadFile>; 716 mock_download_file = new NiceMock<MockDownloadFile>;
715 download_file.reset(mock_download_file); 717 download_file.reset(mock_download_file);
716 mock_request_handle = new NiceMock<MockRequestHandle>; 718 mock_request_handle = new NiceMock<MockRequestHandle>;
717 request_handle.reset(mock_request_handle); 719 request_handle.reset(mock_request_handle);
718 720
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 DownloadItemImpl* item = CreateDownloadItem(); 773 DownloadItemImpl* item = CreateDownloadItem();
772 MockDownloadFile* download_file = 774 MockDownloadFile* download_file =
773 DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS); 775 DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
774 EXPECT_EQ(kContentDisposition, item->GetContentDisposition()); 776 EXPECT_EQ(kContentDisposition, item->GetContentDisposition());
775 EXPECT_EQ(kFirstETag, item->GetETag()); 777 EXPECT_EQ(kFirstETag, item->GetETag());
776 EXPECT_EQ(kFirstLastModified, item->GetLastModifiedTime()); 778 EXPECT_EQ(kFirstLastModified, item->GetLastModifiedTime());
777 EXPECT_EQ(kFirstURL, item->GetURL().spec()); 779 EXPECT_EQ(kFirstURL, item->GetURL().spec());
778 EXPECT_EQ(kMimeType, item->GetMimeType()); 780 EXPECT_EQ(kMimeType, item->GetMimeType());
779 781
780 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _)); 782 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _));
781 EXPECT_CALL(*mock_delegate(), GetBrowserContext())
782 .WillRepeatedly(Return(browser_context()));
783 EXPECT_CALL(*download_file, Detach()); 783 EXPECT_CALL(*download_file, Detach());
784 item->DestinationObserverAsWeakPtr()->DestinationError( 784 item->DestinationObserverAsWeakPtr()->DestinationError(
785 DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 0, 785 DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 0,
786 std::unique_ptr<crypto::SecureHash>()); 786 std::unique_ptr<crypto::SecureHash>());
787 RunAllPendingInMessageLoops(); 787 RunAllPendingInMessageLoops();
788 EXPECT_EQ(DownloadItem::IN_PROGRESS, item->GetState()); 788 EXPECT_EQ(DownloadItem::IN_PROGRESS, item->GetState());
789 789
790 // Now change the create info. The changes should not cause the DownloadItem 790 // Now change the create info. The changes should not cause the DownloadItem
791 // to be updated. 791 // to be updated.
792 const char kSecondContentDisposition[] = "attachment; filename=bar"; 792 const char kSecondContentDisposition[] = "attachment; filename=bar";
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 create_info()->content_disposition = kContentDisposition; 826 create_info()->content_disposition = kContentDisposition;
827 create_info()->etag = kFirstETag; 827 create_info()->etag = kFirstETag;
828 create_info()->last_modified = kFirstLastModified; 828 create_info()->last_modified = kFirstLastModified;
829 create_info()->url_chain.push_back(GURL(kFirstURL)); 829 create_info()->url_chain.push_back(GURL(kFirstURL));
830 create_info()->mime_type = kMimeType; 830 create_info()->mime_type = kMimeType;
831 831
832 DownloadItemImpl* item = CreateDownloadItem(); 832 DownloadItemImpl* item = CreateDownloadItem();
833 MockDownloadFile* download_file = 833 MockDownloadFile* download_file =
834 DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS); 834 DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
835 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _)); 835 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _));
836 EXPECT_CALL(*mock_delegate(), GetBrowserContext())
837 .WillRepeatedly(Return(browser_context()));
838 EXPECT_CALL(*download_file, Detach()); 836 EXPECT_CALL(*download_file, Detach());
839 item->DestinationObserverAsWeakPtr()->DestinationError( 837 item->DestinationObserverAsWeakPtr()->DestinationError(
840 DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 0, 838 DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 0,
841 std::unique_ptr<crypto::SecureHash>()); 839 std::unique_ptr<crypto::SecureHash>());
842 RunAllPendingInMessageLoops(); 840 RunAllPendingInMessageLoops();
843 EXPECT_EQ(DownloadItem::IN_PROGRESS, item->GetState()); 841 EXPECT_EQ(DownloadItem::IN_PROGRESS, item->GetState());
844 842
845 // Now change the create info. The changes should not cause the DownloadItem 843 // Now change the create info. The changes should not cause the DownloadItem
846 // to be updated. 844 // to be updated.
847 const char kSecondContentDisposition[] = "attachment; filename=bar"; 845 const char kSecondContentDisposition[] = "attachment; filename=bar";
(...skipping 30 matching lines...) Expand all
878 876
879 DownloadItemImpl* item = CreateDownloadItem(); 877 DownloadItemImpl* item = CreateDownloadItem();
880 TestDownloadItemObserver observer(item); 878 TestDownloadItemObserver observer(item);
881 MockDownloadFile* download_file = 879 MockDownloadFile* download_file =
882 DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS); 880 DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
883 881
884 // Interrupt the download, using a continuable interrupt. 882 // Interrupt the download, using a continuable interrupt.
885 EXPECT_CALL(*download_file, FullPath()) 883 EXPECT_CALL(*download_file, FullPath())
886 .WillOnce(ReturnRefOfCopy(base::FilePath())); 884 .WillOnce(ReturnRefOfCopy(base::FilePath()));
887 EXPECT_CALL(*download_file, Detach()); 885 EXPECT_CALL(*download_file, Detach());
888 EXPECT_CALL(*mock_delegate(), GetBrowserContext())
889 .WillRepeatedly(Return(browser_context()));
890 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload( 886 EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(
891 Property(&DownloadUrlParameters::url, 887 Property(&DownloadUrlParameters::url,
892 GURL("http://example.com/c")), 888 GURL("http://example.com/c")),
893 _)) 889 _))
894 .Times(1); 890 .Times(1);
895 item->DestinationObserverAsWeakPtr()->DestinationError( 891 item->DestinationObserverAsWeakPtr()->DestinationError(
896 DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 0, 892 DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 0,
897 std::unique_ptr<crypto::SecureHash>()); 893 std::unique_ptr<crypto::SecureHash>());
898 894
899 // Test expectations verify that ResumeInterruptedDownload() is called (by way 895 // Test expectations verify that ResumeInterruptedDownload() is called (by way
(...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after
2116 2112
2117 item_->Cancel(true); 2113 item_->Cancel(true);
2118 RunAllPendingInMessageLoops(); 2114 RunAllPendingInMessageLoops();
2119 } 2115 }
2120 2116
2121 TEST(MockDownloadItem, Compiles) { 2117 TEST(MockDownloadItem, Compiles) {
2122 MockDownloadItem mock_item; 2118 MockDownloadItem mock_item;
2123 } 2119 }
2124 2120
2125 } // namespace content 2121 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_item_impl.cc ('k') | content/browser/download/download_request_core.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698