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 18class GURL; 19 20namespace base { 21class FilePath; 22} 23 24namespace net { 25class BoundNetLog; 26} 27 28namespace content { 29 30class DownloadItem; 31class DownloadItemImpl; 32class DownloadItemImplDelegate; 33class DownloadRequestHandleInterface; 34struct DownloadCreateInfo; 35 36class DownloadItemFactory { 37public: 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