15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_DOWNLOAD_MOCK_DOWNLOAD_MANAGER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_DOWNLOAD_MOCK_DOWNLOAD_MANAGER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/download_manager.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/download_save_info.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/download_url_parameters.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DownloadRequestHandle; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// To avoid leaking download_request_handle.h to embedders. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintTo(const DownloadRequestHandle& params, std::ostream* os); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockDownloadManager : public DownloadManager { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Structure to make it possible to match more than 10 arguments on 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // CreateDownloadItem. 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct CreateDownloadItemAdapter { 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch uint32 id; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath current_path; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath target_path; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<GURL> url_chain; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GURL referrer_url; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Time start_time; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Time end_time; 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string etag; 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string last_modified; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 received_bytes; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 total_bytes; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadItem::DownloadState state; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadDangerType danger_type; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadInterruptReason interrupt_reason; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool opened; 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CreateDownloadItemAdapter( 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch uint32 id, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& current_path, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& target_path, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<GURL>& url_chain, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& referrer_url, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Time& start_time, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Time& end_time, 53ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const std::string& etag, 54ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const std::string& last_modified, 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 received_bytes, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 total_bytes, 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadItem::DownloadState state, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadDangerType danger_type, 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadInterruptReason interrupt_reason, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool opened); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Required by clang compiler. 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CreateDownloadItemAdapter(const CreateDownloadItemAdapter& rhs); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~CreateDownloadItemAdapter(); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool operator==(const CreateDownloadItemAdapter& rhs); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockDownloadManager(); 6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ~MockDownloadManager(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // DownloadManager: 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(SetDelegate, void(DownloadManagerDelegate* delegate)); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(GetDelegate, DownloadManagerDelegate*()); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(Shutdown, void()); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(GetAllDownloads, void(DownloadVector* downloads)); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(Init, bool(BrowserContext* browser_context)); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gasket for handling scoped_ptr arguments. 797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void StartDownload( 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<DownloadCreateInfo> info, 817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<ByteStreamReader> stream, 827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const DownloadUrlParameters::OnStartedCallback& callback) OVERRIDE; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD2(MockStartDownload, 857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void(DownloadCreateInfo*, ByteStreamReader*)); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD2(RemoveDownloadsBetween, int(base::Time remove_begin, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time remove_end)); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(RemoveDownloads, int(base::Time remove_begin)); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(RemoveAllDownloads, int()); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(DownloadUrlMock, void(DownloadUrlParameters*)); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadUrl(scoped_ptr<DownloadUrlParameters> params) OVERRIDE { 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadUrlMock(params.get()); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(AddObserver, void(Observer* observer)); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(RemoveObserver, void(Observer* observer)); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Redirects to mock method to get around gmock 10 argument limit. 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual DownloadItem* CreateDownloadItem( 997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch uint32 id, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& current_path, 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& target_path, 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<GURL>& url_chain, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& referrer_url, 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Time& start_time, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Time& end_time, 106ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const std::string& etag, 107ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const std::string& last_modified, 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 received_bytes, 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 total_bytes, 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadItem::DownloadState state, 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadDangerType danger_type, 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadInterruptReason interrupt_reason, 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool opened) OVERRIDE; 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD1(MockCreateDownloadItem, 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DownloadItem*(CreateDownloadItemAdapter adapter)); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(InProgressCount, int()); 1198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) MOCK_CONST_METHOD0(NonMaliciousInProgressCount, int()); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*()); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(CheckForHistoryFilesRemoval, void()); 1227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch MOCK_METHOD1(GetDownload, DownloadItem*(uint32 id)); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_PUBLIC_BROWSER_DOWNLOAD_MOCK_DOWNLOAD_MANAGER_H_ 128