Home | History | Annotate | Download | only in test
      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*));
     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