Home | History | Annotate | Download | only in download
      1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_DOWNLOAD_DOWNLOAD_FILE_H_
      6 #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_FILE_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "base/basictypes.h"
     12 #include "base/memory/ref_counted.h"
     13 #include "chrome/browser/download/base_file.h"
     14 #include "chrome/browser/download/download_types.h"
     15 
     16 struct DownloadCreateInfo;
     17 class DownloadManager;
     18 class ResourceDispatcherHost;
     19 
     20 // These objects live exclusively on the download thread and handle the writing
     21 // operations for one download. These objects live only for the duration that
     22 // the download is 'in progress': once the download has been completed or
     23 // cancelled, the DownloadFile is destroyed.
     24 class DownloadFile : public BaseFile {
     25  public:
     26   DownloadFile(const DownloadCreateInfo* info,
     27                DownloadManager* download_manager);
     28   virtual ~DownloadFile();
     29 
     30   // Cancels the download request associated with this file.
     31   void CancelDownloadRequest(ResourceDispatcherHost* rdh);
     32 
     33   int id() const { return id_; }
     34   DownloadManager* GetDownloadManager();
     35 
     36   virtual std::string DebugString() const;
     37 
     38  private:
     39   // The unique identifier for this download, assigned at creation by
     40   // the DownloadFileManager for its internal record keeping.
     41   int id_;
     42 
     43   // IDs for looking up the tab we are associated with.
     44   int child_id_;
     45 
     46   // Handle for informing the ResourceDispatcherHost of a UI based cancel.
     47   int request_id_;
     48 
     49   // DownloadManager this download belongs to.
     50   scoped_refptr<DownloadManager> download_manager_;
     51 
     52   DISALLOW_COPY_AND_ASSIGN(DownloadFile);
     53 };
     54 
     55 #endif  // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_FILE_H_
     56