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.
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.
9 #ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_
10 #define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_
15 #include "base/memory/scoped_ptr.h"
16 #include "content/public/browser/download_item.h"
31 class DownloadItemImpl
;
32 class DownloadItemImplDelegate
;
33 class DownloadRequestHandleInterface
;
34 struct DownloadCreateInfo
;
36 class DownloadItemFactory
{
38 virtual ~DownloadItemFactory() {}
40 virtual DownloadItemImpl
* CreatePersistedItem(
41 DownloadItemImplDelegate
* delegate
,
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
,
55 DownloadItem::DownloadState state
,
56 DownloadDangerType danger_type
,
57 DownloadInterruptReason interrupt_reason
,
59 const net::BoundNetLog
& bound_net_log
) = 0;
61 virtual DownloadItemImpl
* CreateActiveItem(
62 DownloadItemImplDelegate
* delegate
,
64 const DownloadCreateInfo
& info
,
65 const net::BoundNetLog
& bound_net_log
) = 0;
67 virtual DownloadItemImpl
* CreateSavePageItem(
68 DownloadItemImplDelegate
* delegate
,
70 const base::FilePath
& path
,
72 const std::string
& mime_type
,
73 scoped_ptr
<DownloadRequestHandleInterface
> request_handle
,
74 const net::BoundNetLog
& bound_net_log
) = 0;
77 } // namespace content
79 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_