summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download/save_item.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/download/save_item.h')
-rw-r--r--chrome/browser/download/save_item.h112
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__
+