| Index: content/browser/download/download_file_impl.h
|
| diff --git a/content/browser/download/download_file_impl.h b/content/browser/download/download_file_impl.h
|
| index 3103dd44e1c7e0d628144230cbe58cf1b2f7d7b8..93b1e551703bff9296f019194e7aa37f236e6e12 100644
|
| --- a/content/browser/download/download_file_impl.h
|
| +++ b/content/browser/download/download_file_impl.h
|
| @@ -39,12 +39,8 @@ class CONTENT_EXPORT DownloadFileImpl : public DownloadFile {
|
| // Note that the DownloadFileImpl automatically reads from the passed in
|
| // stream, and sends updates and status of those reads to the
|
| // DownloadDestinationObserver.
|
| - DownloadFileImpl(const DownloadSaveInfo& save_info,
|
| + DownloadFileImpl(scoped_ptr<DownloadSaveInfo> save_info,
|
| const base::FilePath& default_downloads_directory,
|
| - const GURL& url,
|
| - const GURL& referrer_url,
|
| - bool calculate_hash,
|
| - base::File file,
|
| scoped_ptr<ByteStreamReader> byte_stream,
|
| const net::BoundNetLog& bound_net_log,
|
| base::WeakPtr<DownloadDestinationObserver> observer);
|
| @@ -56,15 +52,14 @@ class CONTENT_EXPORT DownloadFileImpl : public DownloadFile {
|
| void RenameAndUniquify(const base::FilePath& full_path,
|
| const RenameCompletionCallback& callback) override;
|
| void RenameAndAnnotate(const base::FilePath& full_path,
|
| + const std::string& client_guid,
|
| + const GURL& source_url,
|
| + const GURL& referrer_url,
|
| const RenameCompletionCallback& callback) override;
|
| void Detach() override;
|
| void Cancel() override;
|
| - base::FilePath FullPath() const override;
|
| + const base::FilePath& FullPath() const override;
|
| bool InProgress() const override;
|
| - int64_t CurrentSpeed() const override;
|
| - bool GetHash(std::string* hash) override;
|
| - std::string GetHashState() override;
|
| - void SetClientGuid(const std::string& guid) override;
|
|
|
| protected:
|
| // For test class overrides.
|
| @@ -86,20 +81,29 @@ class CONTENT_EXPORT DownloadFileImpl : public DownloadFile {
|
| ANNOTATE_WITH_SOURCE_INFORMATION = 1 << 1
|
| };
|
|
|
| - // Rename file_ to |new_path|.
|
| - // |option| specifies additional operations to be performed during the rename.
|
| - // See RenameOption above.
|
| - // |retries_left| indicates how many times to retry the operation if the
|
| - // rename fails with a transient error.
|
| - // |time_of_first_failure| Set to an empty base::TimeTicks during the first
|
| - // call. Once the first failure is seen, subsequent calls of
|
| - // RenameWithRetryInternal will have a non-empty value keeping track of
|
| - // the time of first observed failure. Used for UMA.
|
| - void RenameWithRetryInternal(const base::FilePath& new_path,
|
| - RenameOption option,
|
| - int retries_left,
|
| - base::TimeTicks time_of_first_failure,
|
| - const RenameCompletionCallback& callback);
|
| + struct RenameParameters {
|
| + RenameParameters(RenameOption option,
|
| + const base::FilePath& new_path,
|
| + const RenameCompletionCallback& completion_callback);
|
| + ~RenameParameters();
|
| +
|
| + RenameOption option;
|
| + base::FilePath new_path;
|
| + std::string client_guid; // See BaseFile::AnnotateWithSourceInformation()
|
| + GURL source_url; // See BaseFile::AnnotateWithSourceInformation()
|
| + GURL referrer_url; // See BaseFile::AnnotateWithSourceInformation()
|
| + int retries_left; // RenameWithRetryInternal() will
|
| + // automatically retry until this
|
| + // count reaches 0. Each attempt
|
| + // decrements this counter.
|
| + base::TimeTicks time_of_first_failure; // Set to empty at first, but is set
|
| + // when a failure is first
|
| + // encountered. Used for UMA.
|
| + RenameCompletionCallback completion_callback;
|
| + };
|
| +
|
| + // Rename file_ based on |parameters|.
|
| + void RenameWithRetryInternal(scoped_ptr<RenameParameters> parameters);
|
|
|
| // Send an update on our progress.
|
| void SendUpdate();
|
| @@ -111,6 +115,11 @@ class CONTENT_EXPORT DownloadFileImpl : public DownloadFile {
|
| // The base file instance.
|
| BaseFile file_;
|
|
|
| + // DownloadSaveInfo provided during construction. Since the DownloadFileImpl
|
| + // can be created on any thread, this holds the save_info_ until it can be
|
| + // used to initialize file_ on the FILE thread.
|
| + scoped_ptr<DownloadSaveInfo> save_info_;
|
| +
|
| // The default directory for creating the download file.
|
| base::FilePath default_download_directory_;
|
|
|
|
|