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 // The DownloadItemFactory is used to produce different DownloadItems. 6 // It is separate from the DownloadManager to allow download manager 7 // unit tests to control the items produced. 8 9 #ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_ 10 #define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_ 11 12 #include <string> 13 #include <vector> 14 15 #include "base/memory/scoped_ptr.h" 16 #include "content/public/browser/download_item.h" 17 18 class GURL; 19 20 namespace base { 21 class FilePath; 22 } 23 24 namespace net { 25 class BoundNetLog; 26 } 27 28 namespace content { 29 30 class DownloadItem; 31 class DownloadItemImpl; 32 class DownloadItemImplDelegate; 33 class DownloadRequestHandleInterface; 34 struct DownloadCreateInfo; 35 36 class DownloadItemFactory { 37 public: 38 virtual ~DownloadItemFactory() {} 39 40 virtual DownloadItemImpl* CreatePersistedItem( 41 DownloadItemImplDelegate* delegate, 42 uint32 download_id, 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 const std::string& etag, 50 const std::string& last_modified, 51 int64 received_bytes, 52 int64 total_bytes, 53 DownloadItem::DownloadState state, 54 DownloadDangerType danger_type, 55 DownloadInterruptReason interrupt_reason, 56 bool opened, 57 const net::BoundNetLog& bound_net_log) = 0; 58 59 virtual DownloadItemImpl* CreateActiveItem( 60 DownloadItemImplDelegate* delegate, 61 uint32 download_id, 62 const DownloadCreateInfo& info, 63 const net::BoundNetLog& bound_net_log) = 0; 64 65 virtual DownloadItemImpl* CreateSavePageItem( 66 DownloadItemImplDelegate* delegate, 67 uint32 download_id, 68 const base::FilePath& path, 69 const GURL& url, 70 const std::string& mime_type, 71 scoped_ptr<DownloadRequestHandleInterface> request_handle, 72 const net::BoundNetLog& bound_net_log) = 0; 73 }; 74 75 } // namespace content 76 77 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_ 78