mock_download_manager.h revision 8bcbed890bc3ce4d7a057a8f32cab53fa534672e
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 "testing/gmock/include/gmock/gmock.h"
14#include "testing/gtest/include/gtest/gtest.h"
15#include "url/gurl.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    uint32 id;
30    base::FilePath current_path;
31    base::FilePath target_path;
32    std::vector<GURL> url_chain;
33    GURL referrer_url;
34    base::Time start_time;
35    base::Time end_time;
36    std::string etag;
37    std::string last_modified;
38    int64 received_bytes;
39    int64 total_bytes;
40    DownloadItem::DownloadState state;
41    DownloadDangerType danger_type;
42    DownloadInterruptReason interrupt_reason;
43    bool opened;
44
45    CreateDownloadItemAdapter(
46      uint32 id,
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,
55      int64 received_bytes,
56      int64 total_bytes,
57      DownloadItem::DownloadState state,
58      DownloadDangerType danger_type,
59      DownloadInterruptReason interrupt_reason,
60      bool opened);
61    // Required by clang compiler.
62    CreateDownloadItemAdapter(const CreateDownloadItemAdapter& rhs);
63    ~CreateDownloadItemAdapter();
64
65    bool operator==(const CreateDownloadItemAdapter& rhs);
66  };
67
68  MockDownloadManager();
69  virtual ~MockDownloadManager();
70
71  // DownloadManager:
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));
77
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;
83
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());
93  }
94  MOCK_METHOD1(AddObserver, void(Observer* observer));
95  MOCK_METHOD1(RemoveObserver, void(Observer* observer));
96
97  // Redirects to mock method to get around gmock 10 argument limit.
98  virtual DownloadItem* CreateDownloadItem(
99      uint32 id,
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,
109      int64 total_bytes,
110      DownloadItem::DownloadState state,
111      DownloadDangerType danger_type,
112      DownloadInterruptReason interrupt_reason,
113      bool opened) OVERRIDE;
114
115  MOCK_METHOD1(MockCreateDownloadItem,
116               DownloadItem*(CreateDownloadItemAdapter adapter));
117
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));
123};
124
125}  // namespace content
126
127#endif  // CONTENT_PUBLIC_BROWSER_DOWNLOAD_MOCK_DOWNLOAD_MANAGER_H_
128