Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(741)

Unified Diff: content/browser/download/download_file.h

Issue 8372034: Created an interface for DownloadFile, for use in unit tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed typo Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/download/download_file.h
diff --git a/content/browser/download/download_file.h b/content/browser/download/download_file.h
index 15047f338b872e7a5ffb769cddeb0fd8c0aeaa6e..dbba1ddd3c0975445c27f4c4a5a359b52ede48f6 100644
--- a/content/browser/download/download_file.h
+++ b/content/browser/download/download_file.h
@@ -9,49 +9,76 @@
#include <string>
#include "base/basictypes.h"
-#include "base/memory/ref_counted.h"
#include "content/browser/download/base_file.h"
#include "content/browser/download/download_id.h"
-#include "content/browser/download/download_request_handle.h"
-#include "content/browser/download/download_types.h"
#include "content/common/content_export.h"
+#include "net/base/net_errors.h"
-struct DownloadCreateInfo;
class DownloadManager;
-// These objects live exclusively on the download thread and handle the writing
+// These objects live exclusively on the file thread and handle the writing
// operations for one download. These objects live only for the duration that
// the download is 'in progress': once the download has been completed or
// cancelled, the DownloadFile is destroyed.
-class CONTENT_EXPORT DownloadFile : public BaseFile {
+class CONTENT_EXPORT DownloadFile {
public:
- // Takes ownership of the object pointed to by |request_handle|.
- DownloadFile(const DownloadCreateInfo* info,
- DownloadRequestHandleInterface* request_handle,
- DownloadManager* download_manager);
- virtual ~DownloadFile();
+ virtual ~DownloadFile() {}
+
+ // If calculate_hash is true, sha256 hash will be calculated.
+ // Returns net::OK on success, or a network error code on failure.
+ virtual net::Error Initialize(bool calculate_hash) = 0;
+
+ // Write a new chunk of data to the file.
+ // Returns net::OK on success (all bytes written to the file),
+ // or a network error code on failure.
+ virtual net::Error AppendDataToFile(const char* data, size_t data_len) = 0;
+
+ // Rename the download file.
+ // Returns net::OK on success, or a network error code on failure.
+ virtual net::Error Rename(const FilePath& full_path) = 0;
+
+ // Detach the file so it is not deleted on destruction.
+ virtual void Detach() = 0;
+
+ // Abort the download and automatically close the file.
+ virtual void Cancel() = 0;
+
+ // Indicate that the download has finished. No new data will be received.
+ virtual void Finish() = 0;
+
+ // Informs the OS that this file came from the internet.
+ virtual void AnnotateWithSourceInformation() = 0;
+
+ virtual FilePath FullPath() const = 0;
+ virtual bool InProgress() const = 0;
+ virtual int64 BytesSoFar() const = 0;
+
+ // Set |hash| with sha256 digest for the file.
+ // Returns true if digest is successfully calculated.
+ virtual bool GetSha256Hash(std::string* hash) = 0;
// Cancels the download request associated with this file.
- void CancelDownloadRequest();
+ virtual void CancelDownloadRequest() = 0;
- int id() const { return id_.local(); }
- DownloadManager* GetDownloadManager();
- const DownloadId& global_id() const { return id_; }
+ virtual int Id() const = 0;
+ virtual DownloadManager* GetDownloadManager() = 0;
+ virtual const DownloadId& GlobalId() const = 0;
- virtual std::string DebugString() const;
+ virtual std::string DebugString() const = 0;
- // Appends the passed the number between parenthesis the path before the
- // extension.
+ // Appends the passed-in |number| between parenthesis to the |path| before
+ // the file extension.
static void AppendNumberToPath(FilePath* path, int number);
- // Attempts to find a number that can be appended to that path to make it
+ // Appends the passed-in |suffix| to the |path|.
+ static FilePath AppendSuffixToPath(const FilePath& path,
+ const FilePath::StringType& suffix);
+
+ // Attempts to find a number that can be appended to the |path| to make it
// unique. If |path| does not exist, 0 is returned. If it fails to find such
// a number, -1 is returned.
static int GetUniquePathNumber(const FilePath& path);
- static FilePath AppendSuffixToPath(const FilePath& path,
- const FilePath::StringType& suffix);
-
// Same as GetUniquePathNumber, except that it also checks the existence
// of it with the given suffix.
// If |path| does not exist, 0 is returned. If it fails to find such
@@ -59,20 +86,6 @@ class CONTENT_EXPORT DownloadFile : public BaseFile {
static int GetUniquePathNumberWithSuffix(
const FilePath& path,
const FilePath::StringType& suffix);
-
- private:
- // The unique identifier for this download, assigned at creation by
- // the DownloadFileManager for its internal record keeping.
- DownloadId id_;
-
- // The handle to the request information. Used for operations outside the
- // download system, specifically canceling a download.
- scoped_ptr<DownloadRequestHandleInterface> request_handle_;
-
- // DownloadManager this download belongs to.
- scoped_refptr<DownloadManager> download_manager_;
-
- DISALLOW_COPY_AND_ASSIGN(DownloadFile);
};
#endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_FILE_H_

Powered by Google App Engine
This is Rietveld 408576698