summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download/save_item.h
diff options
context:
space:
mode:
authorpaulg@google.com <paulg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-09-14 01:09:50 +0000
committerpaulg@google.com <paulg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-09-14 01:09:50 +0000
commit37936eefdf1bf98d1a4458d8f3b85233d28c37e4 (patch)
tree96e1ffcf546b7fb4ad458f9a2ab8b8268d5f122a /chrome/browser/download/save_item.h
parentda5de3c98d0613411df3acb9b692fa200e51dcfb (diff)
downloadchromium_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_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__
+