Re-subimission of https://codereview.chromium.org/1041213003/
[chromium-blink-merge.git] / content / browser / download / download_item_factory.h
blobd4198cb62e1be68ff2d9c83a8737f170703e560c
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.
9 #ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_
10 #define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_
12 #include <string>
13 #include <vector>
15 #include "base/memory/scoped_ptr.h"
16 #include "content/public/browser/download_item.h"
18 class GURL;
20 namespace base {
21 class FilePath;
24 namespace net {
25 class BoundNetLog;
28 namespace content {
30 class DownloadItem;
31 class DownloadItemImpl;
32 class DownloadItemImplDelegate;
33 class DownloadRequestHandleInterface;
34 struct DownloadCreateInfo;
36 class DownloadItemFactory {
37 public:
38 virtual ~DownloadItemFactory() {}
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;
61 virtual DownloadItemImpl* CreateActiveItem(
62 DownloadItemImplDelegate* delegate,
63 uint32 download_id,
64 const DownloadCreateInfo& info,
65 const net::BoundNetLog& bound_net_log) = 0;
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;
77 } // namespace content
79 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_FACTORY_H_