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 #ifndef CONTENT_BROWSER_DOWNLOAD_SAVE_FILE_H_
      6 #define CONTENT_BROWSER_DOWNLOAD_SAVE_FILE_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/files/file_path.h"
     10 #include "base/memory/scoped_ptr.h"
     11 #include "content/browser/download/base_file.h"
     12 #include "content/browser/download/save_types.h"
     13 
     14 namespace content {
     15 // SaveFile ----------------------------------------------------------------
     16 
     17 // These objects live exclusively on the file thread and handle the writing
     18 // operations for one save item. These objects live only for the duration that
     19 // the saving job is 'in progress': once the saving job has been completed or
     20 // canceled, the SaveFile is destroyed. One SaveFile object represents one item
     21 // in a save session.
     22 class SaveFile {
     23  public:
     24   explicit SaveFile(const SaveFileCreateInfo* info, bool calculate_hash);
     25   virtual ~SaveFile();
     26 
     27   // BaseFile delegated functions.
     28   DownloadInterruptReason Initialize();
     29   DownloadInterruptReason AppendDataToFile(const char* data, size_t data_len);
     30   DownloadInterruptReason Rename(const base::FilePath& full_path);
     31   void Detach();
     32   void Cancel();
     33   void Finish();
     34   void AnnotateWithSourceInformation();
     35   base::FilePath FullPath() const;
     36   bool InProgress() const;
     37   int64 BytesSoFar() const;
     38   bool GetHash(std::string* hash);
     39   std::string DebugString() const;
     40 
     41   // Accessors.
     42   int save_id() const { return info_->save_id; }
     43   int render_process_id() const { return info_->render_process_id; }
     44   int render_view_id() const { return info_->render_view_id; }
     45   int request_id() const { return info_->request_id; }
     46   SaveFileCreateInfo::SaveFileSource save_source() const {
     47     return info_->save_source;
     48   }
     49 
     50  private:
     51   BaseFile file_;
     52   scoped_ptr<const SaveFileCreateInfo> info_;
     53 
     54   DISALLOW_COPY_AND_ASSIGN(SaveFile);
     55 };
     56 
     57 }  // namespace content
     58 
     59 #endif  // CONTENT_BROWSER_DOWNLOAD_SAVE_FILE_H_
     60