| 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 2ba3d8d058e27211d3eaefc32c9e177f511e67d1..bb84d79de78f636078f51ef38b209ceb72b967d0 100644
|
| --- a/content/browser/download/download_file_impl.h
|
| +++ b/content/browser/download/download_file_impl.h
|
| @@ -68,7 +68,34 @@ class CONTENT_EXPORT DownloadFileImpl : virtual public DownloadFile {
|
| virtual DownloadInterruptReason AppendDataToFile(
|
| const char* data, size_t data_len);
|
|
|
| + virtual base::TimeDelta GetRetryDelayForFailedRename(int attempt_number);
|
| +
|
| + virtual bool ShouldRetryFailedRename(DownloadInterruptReason reason);
|
| +
|
| private:
|
| + friend class DownloadFileTest;
|
| +
|
| + // Options for RenameWithRetryInternal.
|
| + enum RenameOption {
|
| + UNIQUIFY = 1 << 0, // If there's already a file on disk that conflicts with
|
| + // |new_path|, try to create a unique file by appending
|
| + // a uniquifier.
|
| + ANNOTATE_WITH_SOURCE_INFORMATION = 1 << 1
|
| + };
|
| +
|
| + // Rename file_ to |new_path|.
|
| + // |option| specifies additional operations to be performed during the rename.
|
| + // See RenameOptions above.
|
| + // |retries_left| indicates how many times to retry the operation if the
|
| + // rename fails with a transient error.
|
| + // |time_of_first_failure| should be empty when this method is called for the
|
| + // first time.
|
| + void RenameWithRetryInternal(const base::FilePath& new_path,
|
| + RenameOption option,
|
| + int retries_left,
|
| + base::TimeTicks time_of_first_failure,
|
| + const RenameCompletionCallback& callback);
|
| +
|
| // Send an update on our progress.
|
| void SendUpdate();
|
|
|
|
|