mock_download_manager.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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
64  // DownloadManager:
65  MOCK_METHOD1(SetDelegate, void(DownloadManagerDelegate* delegate));
66  MOCK_CONST_METHOD0(GetDelegate, DownloadManagerDelegate*());
67  MOCK_METHOD0(Shutdown, void());
68  MOCK_METHOD1(GetAllDownloads, void(DownloadVector* downloads));
69  MOCK_METHOD1(Init, bool(BrowserContext* browser_context));
70
71  // Gasket for handling scoped_ptr arguments.
72  virtual DownloadItem* StartDownload(
73      scoped_ptr<DownloadCreateInfo> info,
74      scoped_ptr<ByteStreamReader> stream) OVERRIDE;
75
76  MOCK_METHOD2(MockStartDownload,
77               DownloadItem*(DownloadCreateInfo*, ByteStreamReader*));
78  MOCK_METHOD1(CancelDownload, void(int32 download_id));
79  MOCK_METHOD2(RemoveDownloadsBetween, int(base::Time remove_begin,
80                                           base::Time remove_end));
81  MOCK_METHOD1(RemoveDownloads, int(base::Time remove_begin));
82  MOCK_METHOD0(RemoveAllDownloads, int());
83  MOCK_METHOD1(DownloadUrlMock, void(DownloadUrlParameters*));
84  virtual void DownloadUrl(scoped_ptr<DownloadUrlParameters> params) OVERRIDE {
85    DownloadUrlMock(params.get());
86  }
87  MOCK_METHOD1(AddObserver, void(Observer* observer));
88  MOCK_METHOD1(RemoveObserver, void(Observer* observer));
89
90  // Redirects to mock method to get around gmock 10 argument limit.
91  virtual DownloadItem* CreateDownloadItem(
92      const base::FilePath& current_path,
93      const base::FilePath& target_path,
94      const std::vector<GURL>& url_chain,
95      const GURL& referrer_url,
96      const base::Time& start_time,
97      const base::Time& end_time,
98      int64 received_bytes,
99      int64 total_bytes,
100      DownloadItem::DownloadState state,
101      DownloadDangerType danger_type,
102      DownloadInterruptReason interrupt_reason,
103      bool opened) OVERRIDE;
104
105  MOCK_METHOD1(MockCreateDownloadItem,
106               DownloadItem*(CreateDownloadItemAdapter adapter));
107
108  MOCK_METHOD2(OnItemAddedToPersistentStore, void(int32 download_id,
109                                                  int64 db_handle));
110  MOCK_CONST_METHOD0(InProgressCount, int());
111  MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*());
112  MOCK_METHOD0(CheckForHistoryFilesRemoval, void());
113  MOCK_METHOD1(GetDownloadItem, DownloadItem*(int id));
114  MOCK_METHOD1(GetDownload, DownloadItem*(int id));
115  MOCK_METHOD1(SavePageDownloadFinished, void(DownloadItem* download));
116  MOCK_METHOD1(GetActiveDownloadItem, DownloadItem*(int id));
117  MOCK_METHOD1(GetActiveDownload, DownloadItem*(int32 download_id));
118
119 protected:
120  virtual ~MockDownloadManager();
121};
122
123}  // namespace content
124
125#endif  // CONTENT_PUBLIC_BROWSER_DOWNLOAD_MOCK_DOWNLOAD_MANAGER_H_
126