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