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 #include "content/browser/download/save_file.h" 6 7 #include "base/logging.h" 8 #include "content/public/browser/browser_thread.h" 9 #include "net/base/file_stream.h" 10 11 namespace content { 12 13 // TODO(asanka): SaveFile should use the target directory of the save package as 14 // the default download directory when initializing |file_|. 15 // Unfortunately, as it is, constructors of SaveFile don't always 16 // have access to the SavePackage at this point. 17 SaveFile::SaveFile(const SaveFileCreateInfo* info, bool calculate_hash) 18 : file_(base::FilePath(), 19 info->url, 20 GURL(), 21 0, 22 calculate_hash, 23 std::string(), 24 scoped_ptr<net::FileStream>(), 25 net::BoundNetLog()), 26 info_(info) { 27 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 28 29 DCHECK(info); 30 DCHECK(info->path.empty()); 31 } 32 33 SaveFile::~SaveFile() { 34 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 35 } 36 37 DownloadInterruptReason SaveFile::Initialize() { 38 return file_.Initialize(base::FilePath()); 39 } 40 41 DownloadInterruptReason SaveFile::AppendDataToFile(const char* data, 42 size_t data_len) { 43 return file_.AppendDataToFile(data, data_len); 44 } 45 46 DownloadInterruptReason SaveFile::Rename(const base::FilePath& full_path) { 47 return file_.Rename(full_path); 48 } 49 50 void SaveFile::Detach() { 51 file_.Detach(); 52 } 53 54 void SaveFile::Cancel() { 55 file_.Cancel(); 56 } 57 58 void SaveFile::Finish() { 59 file_.Finish(); 60 } 61 62 void SaveFile::AnnotateWithSourceInformation() { 63 // TODO(gbillock): If this method is called, it should set the 64 // file_.SetClientGuid() method first. 65 file_.AnnotateWithSourceInformation(); 66 } 67 68 base::FilePath SaveFile::FullPath() const { 69 return file_.full_path(); 70 } 71 72 bool SaveFile::InProgress() const { 73 return file_.in_progress(); 74 } 75 76 int64 SaveFile::BytesSoFar() const { 77 return file_.bytes_so_far(); 78 } 79 80 bool SaveFile::GetHash(std::string* hash) { 81 return file_.GetHash(hash); 82 } 83 84 std::string SaveFile::DebugString() const { 85 return file_.DebugString(); 86 } 87 88 } // namespace content 89