Home | History | Annotate | Download | only in download
      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