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 18class DownloadRequestHandle; 19 20namespace content { 21 22// To avoid leaking download_request_handle.h to embedders. 23void PrintTo(const DownloadRequestHandle& params, std::ostream* os); 24 25class 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*)); 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