diff options
Diffstat (limited to 'chrome/browser/download/save_item.h')
-rw-r--r-- | chrome/browser/download/save_item.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/chrome/browser/download/save_item.h b/chrome/browser/download/save_item.h new file mode 100644 index 0000000..3c3ed4a --- /dev/null +++ b/chrome/browser/download/save_item.h @@ -0,0 +1,112 @@ +// 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_ITEM_H__ +#define CHROME_BROWSER_DOWNLOAD_SAVE_ITEM_H__ + +#include <string> + +#include "base/basictypes.h" +#include "chrome/browser/download/save_types.h" + +class SavePackage; + +// One SaveItem per save file. This is the model class that stores all the +// state for one save file. +class SaveItem { + public: + enum SaveState { + WAIT_START, + IN_PROGRESS, + COMPLETE, + CANCELED + }; + + SaveItem(const std::wstring& url, + const std::wstring& referrer, + SavePackage* package, + SaveFileCreateInfo::SaveFileSource save_source); + + ~SaveItem(); + + void Start(); + + // Received a new chunk of data. + void Update(int64 bytes_so_far); + + // Cancel saving item. + void Cancel(); + + // Saving operation completed. + void Finish(int64 size, bool is_success); + + // Rough percent complete, -1 means we don't know (since we didn't receive a + // total size). + int PercentComplete() const; + + // Update path for SaveItem, the actual file is renamed on the file thread. + void Rename(const std::wstring& full_path); + + void SetSaveId(int32 save_id); + + void SetTotalBytes(int64 total_bytes); + + // Accessors. + SaveState state() const { return state_; } + const std::wstring full_path() const { return full_path_; } + const std::wstring file_name() const { return file_name_; } + const std::wstring& url() const { return url_; } + const std::wstring& referrer() const { return referrer_; } + int64 total_bytes() const { return total_bytes_; } + int64 received_bytes() const { return received_bytes_; } + int32 save_id() const { return save_id_; } + bool has_final_name() const { return has_final_name_; } + bool success() const { return is_success_; } + SaveFileCreateInfo::SaveFileSource save_source() const { + return save_source_; + } + SavePackage* package() const { return package_; } + + private: + // Internal helper for maintaining consistent received and total sizes. + void UpdateSize(int64 size); + + // Request ID assigned by the ResourceDispatcherHost. + int32 save_id_; + + // Full path to the save item file. + std::wstring full_path_; + + // Short display version of the file. + std::wstring file_name_; + + // The URL for this save item. + std::wstring url_; + std::wstring referrer_; + + // Total bytes expected. + int64 total_bytes_; + + // Current received bytes. + int64 received_bytes_; + + // The current state of this save item. + SaveState state_; + + // Specifies if this name is a final or not. + bool has_final_name_; + + // Flag indicates whether SaveItem has error while in saving process. + bool is_success_; + + SaveFileCreateInfo::SaveFileSource save_source_; + + // Our owning object. + SavePackage* package_; + + DISALLOW_EVIL_CONSTRUCTORS(SaveItem); +}; + +#endif // CHROME_BROWSER_DOWNLOAD_SAVE_ITEM_H__ + |