• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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