| Index: chrome/browser/download/download_target_determiner.h
|
| diff --git a/chrome/browser/download/download_target_determiner.h b/chrome/browser/download/download_target_determiner.h
|
| index 66bca7acd534dbee3e66d21a39e123eaf879f50b..d840d509bf19b736c555422523331120af7a6209 100644
|
| --- a/chrome/browser/download/download_target_determiner.h
|
| +++ b/chrome/browser/download/download_target_determiner.h
|
| @@ -6,6 +6,7 @@
|
| #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_TARGET_DETERMINER_H_
|
|
|
| #include <memory>
|
| +#include <string>
|
|
|
| #include "base/files/file_path.h"
|
| #include "base/macros.h"
|
| @@ -55,8 +56,8 @@ enum DownloadDangerType;
|
| class DownloadTargetDeterminer
|
| : public content::DownloadItem::Observer {
|
| public:
|
| - typedef base::Callback<void(std::unique_ptr<DownloadTargetInfo>)>
|
| - CompletionCallback;
|
| + using CompletionCallback =
|
| + base::Callback<void(std::unique_ptr<DownloadTargetInfo>)>;
|
|
|
| // Start the process of determing the target of |download|.
|
| //
|
| @@ -74,11 +75,13 @@ class DownloadTargetDeterminer
|
| // determination is complete or after |download| is destroyed.
|
| //
|
| // Start() should be called on the UI thread.
|
| - static void Start(content::DownloadItem* download,
|
| - const base::FilePath& initial_virtual_path,
|
| - DownloadPrefs* download_prefs,
|
| - DownloadTargetDeterminerDelegate* delegate,
|
| - const CompletionCallback& callback);
|
| + static void Start(
|
| + content::DownloadItem* download,
|
| + const base::FilePath& initial_virtual_path,
|
| + DownloadPathReservationTracker::FilenameConflictAction conflict_action,
|
| + DownloadPrefs* download_prefs,
|
| + DownloadTargetDeterminerDelegate* delegate,
|
| + const CompletionCallback& callback);
|
|
|
| // Returns a .crdownload intermediate path for the |suggested_path|.
|
| static base::FilePath GetCrDownloadPath(const base::FilePath& suggested_path);
|
| @@ -137,11 +140,13 @@ class DownloadTargetDeterminer
|
|
|
| // Construct a DownloadTargetDeterminer object. Constraints on the arguments
|
| // are as per Start() above.
|
| - DownloadTargetDeterminer(content::DownloadItem* download,
|
| - const base::FilePath& initial_virtual_path,
|
| - DownloadPrefs* download_prefs,
|
| - DownloadTargetDeterminerDelegate* delegate,
|
| - const CompletionCallback& callback);
|
| + DownloadTargetDeterminer(
|
| + content::DownloadItem* download,
|
| + const base::FilePath& initial_virtual_path,
|
| + DownloadPathReservationTracker::FilenameConflictAction conflict_action,
|
| + DownloadPrefs* download_prefs,
|
| + DownloadTargetDeterminerDelegate* delegate,
|
| + const CompletionCallback& callback);
|
|
|
| ~DownloadTargetDeterminer() override;
|
|
|
| @@ -179,16 +184,18 @@ class DownloadTargetDeterminer
|
| Result DoReserveVirtualPath();
|
|
|
| // Callback invoked after the delegate aquires a path reservation.
|
| - void ReserveVirtualPathDone(const base::FilePath& path, bool verified);
|
| + void ReserveVirtualPathDone(PathValidationResult result,
|
| + const base::FilePath& path);
|
|
|
| // Presents a file picker to the user if necessary.
|
| // Next state:
|
| // - STATE_DETERMINE_LOCAL_PATH.
|
| - Result DoPromptUserForDownloadPath();
|
| + Result DoRequestConfirmation();
|
|
|
| // Callback invoked after the file picker completes. Cancels the download if
|
| // the user cancels the file picker.
|
| - void PromptUserForDownloadPathDone(const base::FilePath& virtual_path);
|
| + void RequestConfirmationDone(DownloadConfirmationResult result,
|
| + const base::FilePath& virtual_path);
|
|
|
| // Up until this point, the path that was used is considered to be a virtual
|
| // path. This step determines the local file system path corresponding to this
|
| @@ -270,9 +277,11 @@ class DownloadTargetDeterminer
|
|
|
| // Utilities:
|
|
|
| - void ScheduleCallbackAndDeleteSelf();
|
| -
|
| - void CancelOnFailureAndDeleteSelf();
|
| + // Schedules the completion callback to be run on the UI thread and deletes
|
| + // this object. The determined target info will be passed into the callback
|
| + // if |interrupt_reason| is NONE. Otherwise, only the interrupt reason will be
|
| + // passed on.
|
| + void ScheduleCallbackAndDeleteSelf(content::DownloadInterruptReason result);
|
|
|
| Profile* GetProfile() const;
|
|
|
| @@ -282,7 +291,8 @@ class DownloadTargetDeterminer
|
| // determination will be based on the interrupt reason. It is assumed that
|
| // download interruptions always occur after the first round of download
|
| // target determination is complete.
|
| - bool ShouldPromptForDownload(const base::FilePath& filename) const;
|
| + DownloadConfirmationReason ShouldPromptForDownload(
|
| + const base::FilePath& filename) const;
|
|
|
| // Returns true if the user has been prompted for this download at least once
|
| // prior to this target determination operation. This method is only expected
|
| @@ -307,7 +317,7 @@ class DownloadTargetDeterminer
|
|
|
| // state
|
| State next_state_;
|
| - bool should_prompt_;
|
| + DownloadConfirmationReason confirmation_reason_;
|
| bool should_notify_extensions_;
|
| bool create_target_directory_;
|
| DownloadPathReservationTracker::FilenameConflictAction conflict_action_;
|
|
|