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 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_PUBLIC_BROWSER_DOWNLOAD_MOCK_DOWNLOAD_MANAGER_H_ 6 #define CONTENT_PUBLIC_BROWSER_DOWNLOAD_MOCK_DOWNLOAD_MANAGER_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "content/public/browser/download_manager.h" 12 #include "content/public/browser/download_save_info.h" 13 #include "content/public/browser/download_url_parameters.h" 14 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "url/gurl.h" 17 18 class DownloadRequestHandle; 19 20 namespace content { 21 22 // To avoid leaking download_request_handle.h to embedders. 23 void PrintTo(const DownloadRequestHandle& params, std::ostream* os); 24 25 class MockDownloadManager : public DownloadManager { 26 public: 27 // Structure to make it possible to match more than 10 arguments on 28 // CreateDownloadItem. 29 struct CreateDownloadItemAdapter { 30 uint32 id; 31 base::FilePath current_path; 32 base::FilePath target_path; 33 std::vector<GURL> url_chain; 34 GURL referrer_url; 35 std::string mime_type; 36 std::string original_mime_type; 37 base::Time start_time; 38 base::Time end_time; 39 std::string etag; 40 std::string last_modified; 41 int64 received_bytes; 42 int64 total_bytes; 43 DownloadItem::DownloadState state; 44 DownloadDangerType danger_type; 45 DownloadInterruptReason interrupt_reason; 46 bool opened; 47 48 CreateDownloadItemAdapter( 49 uint32 id, 50 const base::FilePath& current_path, 51 const base::FilePath& target_path, 52 const std::vector<GURL>& url_chain, 53 const GURL& referrer_url, 54 const std::string& mime_type, 55 const std::string& original_mime_type, 56 const base::Time& start_time, 57 const base::Time& end_time, 58 const std::string& etag, 59 const std::string& last_modified, 60 int64 received_bytes, 61 int64 total_bytes, 62 DownloadItem::DownloadState state, 63 DownloadDangerType danger_type, 64 DownloadInterruptReason interrupt_reason, 65 bool opened); 66 // Required by clang compiler. 67 CreateDownloadItemAdapter(const CreateDownloadItemAdapter& rhs); 68 ~CreateDownloadItemAdapter(); 69 70 bool operator==(const CreateDownloadItemAdapter& rhs); 71 }; 72 73 MockDownloadManager(); 74 virtual ~MockDownloadManager(); 75 76 // DownloadManager: 77 MOCK_METHOD1(SetDelegate, void(DownloadManagerDelegate* delegate)); 78 MOCK_CONST_METHOD0(GetDelegate, DownloadManagerDelegate*()); 79 MOCK_METHOD0(Shutdown, void()); 80 MOCK_METHOD1(GetAllDownloads, void(DownloadVector* downloads)); 81 MOCK_METHOD1(Init, bool(BrowserContext* browser_context)); 82 83 // Gasket for handling scoped_ptr arguments. 84 virtual void StartDownload( 85 scoped_ptr<DownloadCreateInfo> info, 86 scoped_ptr<ByteStreamReader> stream, 87 const DownloadUrlParameters::OnStartedCallback& callback) OVERRIDE; 88 89 MOCK_METHOD2(MockStartDownload, 90 void(DownloadCreateInfo*, ByteStreamReader*)); 91 MOCK_METHOD2(RemoveDownloadsBetween, int(base::Time remove_begin, 92 base::Time remove_end)); 93 MOCK_METHOD1(RemoveDownloads, int(base::Time remove_begin)); 94 MOCK_METHOD0(RemoveAllDownloads, int()); 95 MOCK_METHOD1(DownloadUrlMock, void(DownloadUrlParameters*)); DownloadUrl(scoped_ptr<DownloadUrlParameters> params)96 virtual void DownloadUrl(scoped_ptr<DownloadUrlParameters> params) OVERRIDE { 97 DownloadUrlMock(params.get()); 98 } 99 MOCK_METHOD1(AddObserver, void(Observer* observer)); 100 MOCK_METHOD1(RemoveObserver, void(Observer* observer)); 101 102 // Redirects to mock method to get around gmock 10 argument limit. 103 virtual DownloadItem* CreateDownloadItem( 104 uint32 id, 105 const base::FilePath& current_path, 106 const base::FilePath& target_path, 107 const std::vector<GURL>& url_chain, 108 const GURL& referrer_url, 109 const std::string& mime_type, 110 const std::string& original_mime_type, 111 const base::Time& start_time, 112 const base::Time& end_time, 113 const std::string& etag, 114 const std::string& last_modified, 115 int64 received_bytes, 116 int64 total_bytes, 117 DownloadItem::DownloadState state, 118 DownloadDangerType danger_type, 119 DownloadInterruptReason interrupt_reason, 120 bool opened) OVERRIDE; 121 122 MOCK_METHOD1(MockCreateDownloadItem, 123 DownloadItem*(CreateDownloadItemAdapter adapter)); 124 125 MOCK_CONST_METHOD0(InProgressCount, int()); 126 MOCK_CONST_METHOD0(NonMaliciousInProgressCount, int()); 127 MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*()); 128 MOCK_METHOD0(CheckForHistoryFilesRemoval, void()); 129 MOCK_METHOD1(GetDownload, DownloadItem*(uint32 id)); 130 }; 131 132 } // namespace content 133 134 #endif // CONTENT_PUBLIC_BROWSER_DOWNLOAD_MOCK_DOWNLOAD_MANAGER_H_ 135