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