diff options
Diffstat (limited to 'content/browser/download/save_item.h')
-rw-r--r-- | content/browser/download/save_item.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/content/browser/download/save_item.h b/content/browser/download/save_item.h new file mode 100644 index 0000000..53553d8 --- /dev/null +++ b/content/browser/download/save_item.h @@ -0,0 +1,112 @@ +// Copyright (c) 2010 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 CONTENT_BROWSER_DOWNLOAD_SAVE_ITEM_H_ +#define CONTENT_BROWSER_DOWNLOAD_SAVE_ITEM_H_ +#pragma once + +#include "base/basictypes.h" +#include "base/file_path.h" +#include "content/browser/download/save_types.h" +#include "googleurl/src/gurl.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 GURL& url, + const GURL& 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 FilePath& full_path); + + void SetSaveId(int32 save_id); + + void SetTotalBytes(int64 total_bytes); + + // Accessors. + SaveState state() const { return state_; } + const FilePath& full_path() const { return full_path_; } + const FilePath& file_name() const { return file_name_; } + const GURL& url() const { return url_; } + const GURL& 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. + FilePath full_path_; + + // Short display version of the file. + FilePath file_name_; + + // The URL for this save item. + GURL url_; + GURL 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_COPY_AND_ASSIGN(SaveItem); +}; + +#endif // CONTENT_BROWSER_DOWNLOAD_SAVE_ITEM_H_ |