diff options
author | paulg@google.com <paulg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-14 01:09:50 +0000 |
---|---|---|
committer | paulg@google.com <paulg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-14 01:09:50 +0000 |
commit | 37936eefdf1bf98d1a4458d8f3b85233d28c37e4 (patch) | |
tree | 96e1ffcf546b7fb4ad458f9a2ab8b8268d5f122a /chrome/browser/download/save_file.h | |
parent | da5de3c98d0613411df3acb9b692fa200e51dcfb (diff) | |
download | chromium_src-37936eefdf1bf98d1a4458d8f3b85233d28c37e4.zip chromium_src-37936eefdf1bf98d1a4458d8f3b85233d28c37e4.tar.gz chromium_src-37936eefdf1bf98d1a4458d8f3b85233d28c37e4.tar.bz2 |
Move the Save Page code to the browser/download/ directory.
Review URL: http://codereview.chromium.org/3040
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2174 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download/save_file.h')
-rw-r--r-- | chrome/browser/download/save_file.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/chrome/browser/download/save_file.h b/chrome/browser/download/save_file.h new file mode 100644 index 0000000..3d5e06c --- /dev/null +++ b/chrome/browser/download/save_file.h @@ -0,0 +1,80 @@ +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_DOWNLOAD_SAVE_FILE_H__ +#define CHROME_BROWSER_DOWNLOAD_SAVE_FILE_H__ + +#include <string> + +#include "base/basictypes.h" +#include "base/scoped_ptr.h" +#include "chrome/browser/download/save_types.h" + +// SaveFile ---------------------------------------------------------------- + +// These objects live exclusively on the file thread and handle the writing +// operations for one save item. These objects live only for the duration that +// the saving job is 'in progress': once the saving job has been completed or +// canceled, the SaveFile is destroyed. One SaveFile object represents one item +// in a save session. +class SaveFile { + public: + explicit SaveFile(const SaveFileCreateInfo* info); + ~SaveFile(); + + // Write a new chunk of data to the file. Returns true on success. + bool AppendDataToFile(const char* data, int data_len); + + // Abort the saving job and automatically close the file. + void Cancel(); + + // Rename the saved file. Returns 'true' if the rename was successful. + bool Rename(const std::wstring& full_path); + + void Finish(); + + // Accessors. + int save_id() const { return info_->save_id; } + int render_process_id() const { return info_->render_process_id; } + int render_view_id() const { return info_->render_view_id; } + int request_id() const { return info_->request_id; } + SaveFileCreateInfo::SaveFileSource save_source() const { + return info_->save_source; + } + + int64 bytes_so_far() const { return bytes_so_far_; } + std::wstring full_path() const { return full_path_; } + bool path_renamed() const { return path_renamed_; } + bool in_progress() const { return in_progress_; } + + private: + // Open or Close the OS file handle. The file is opened in the constructor + // based on creation information passed to it, and automatically closed in + // the destructor. + void Close(); + bool Open(const wchar_t* open_mode); + + scoped_ptr<const SaveFileCreateInfo> info_; + + // OS file handle for writing + FILE* file_; + + // Amount of data received up to this point. We may not know in advance how + // much data to expect since some servers don't provide that information. + int64 bytes_so_far_; + + // Full path to the saved file including the file name. + std::wstring full_path_; + + // Whether the saved file is still using its initial temporary path. + bool path_renamed_; + + // Whether the saved file is still receiving data. + bool in_progress_; + + DISALLOW_EVIL_CONSTRUCTORS(SaveFile); +}; + +#endif // CHROME_BROWSER_DOWNLOAD_SAVE_FILE_H__ + |