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 std::string& mime_type, 48 const std::string& original_mime_type, 49 const base::Time& start_time, 50 const base::Time& end_time, 51 const std::string& etag, 52 const std::string& last_modified, 53 int64 received_bytes, 54 int64 total_bytes, 55 DownloadItem::DownloadState state, 56 DownloadDangerType danger_type, 57 DownloadInterruptReason interrupt_reason, 58 bool opened, 59 const net::BoundNetLog& bound_net_log) = 0; 60 61 virtual DownloadItemImpl* CreateActiveItem( 62 DownloadItemImplDelegate* delegate, 63 uint32 download_id, 64 const DownloadCreateInfo& info, 65 const net::BoundNetLog& bound_net_log) = 0; 66 67 virtual DownloadItemImpl* CreateSavePageItem( 68 DownloadItemImplDelegate* delegate, 69 uint32 download_id, 70 const base::FilePath& path, 71 const GURL& url, 72 const std::string& mime_type, 73 scoped_ptr<DownloadRequestHandleInterface> request_handle, 74 const net::BoundNetLog& bound_net_log) = 0; 75 }; 76 77 } // namespace content 78 79 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_ 80