| Index: chrome/browser/download/download_manager.h
|
| ===================================================================
|
| --- chrome/browser/download/download_manager.h (revision 35459)
|
| +++ chrome/browser/download/download_manager.h (working copy)
|
| @@ -95,6 +95,9 @@
|
| public:
|
| virtual void OnDownloadUpdated(DownloadItem* download) = 0;
|
|
|
| + // Called when a downloaded file has been completed.
|
| + virtual void OnDownloadFileCompleted(DownloadItem* download) = 0;
|
| +
|
| // Called when a downloaded file has been opened.
|
| virtual void OnDownloadOpened(DownloadItem* download) = 0;
|
|
|
| @@ -119,7 +122,8 @@
|
| int request_id,
|
| bool is_dangerous,
|
| bool save_as,
|
| - bool is_extension_install);
|
| + bool is_extension_install,
|
| + bool is_temporary);
|
|
|
| ~DownloadItem();
|
|
|
| @@ -133,6 +137,9 @@
|
| // Notifies our observers periodically.
|
| void UpdateObservers();
|
|
|
| + // Notifies our observers the downloaded file has been completed.
|
| + void NotifyObserversDownloadFileCompleted();
|
| +
|
| // Notifies our observers the downloaded file has been opened.
|
| void NotifyObserversDownloadOpened();
|
|
|
| @@ -217,6 +224,12 @@
|
| void set_original_name(const FilePath& name) { original_name_ = name; }
|
| bool save_as() const { return save_as_; }
|
| bool is_extension_install() const { return is_extension_install_; }
|
| + bool name_finalized() const { return name_finalized_; }
|
| + void set_name_finalized(bool name_finalized) {
|
| + name_finalized_ = name_finalized;
|
| + }
|
| + bool is_temporary() const { return is_temporary_; }
|
| + void set_is_temporary(bool is_temporary) { is_temporary_ = is_temporary; }
|
|
|
| // Returns the file-name that should be reported to the user, which is
|
| // file_name_ for safe downloads and original_name_ for dangerous ones with
|
| @@ -305,6 +318,12 @@
|
| // True if the item was downloaded for an extension installation.
|
| bool is_extension_install_;
|
|
|
| + // True if the filename is finalized.
|
| + bool name_finalized_;
|
| +
|
| + // True if the item was downloaded temporarily.
|
| + bool is_temporary_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(DownloadItem);
|
| };
|
|
|
| @@ -347,6 +366,10 @@
|
| void GetDownloads(Observer* observer,
|
| const std::wstring& search_text);
|
|
|
| + // Return all temporary downloads that reside in the specified directory.
|
| + void GetTemporaryDownloads(Observer* observer,
|
| + const FilePath& dir_path);
|
| +
|
| // Returns true if initialized properly.
|
| bool Init(Profile* profile);
|
|
|
| @@ -387,6 +410,15 @@
|
| const std::string& referrer_encoding,
|
| TabContents* tab_contents);
|
|
|
| + // Download the object at the URL and save it to the specified path. The
|
| + // download is treated as the temporary download and thus will not appear
|
| + // in the download history. Used in cases such as drag and drop.
|
| + void DownloadUrlToFile(const GURL& url,
|
| + const GURL& referrer,
|
| + const std::string& referrer_encoding,
|
| + const FilePath& save_file_path,
|
| + TabContents* tab_contents);
|
| +
|
| // Allow objects to observe the download creation process.
|
| void AddObserver(Observer* observer);
|
|
|
| @@ -440,7 +472,7 @@
|
| bool IsExecutableFile(const FilePath& path) const;
|
|
|
| // Tests if a file type is considered executable.
|
| - bool IsExecutableExtension(const FilePath::StringType& extension) const;
|
| + static bool IsExecutableExtension(const FilePath::StringType& extension);
|
|
|
| // Resets the automatic open preference.
|
| void ResetAutoOpenFiles();
|
| @@ -462,14 +494,21 @@
|
| // Used to make sure we have a safe file extension and filename for a
|
| // download. |file_name| can either be just the file name or it can be a
|
| // full path to a file.
|
| - void GenerateSafeFilename(const std::string& mime_type,
|
| - FilePath* file_name);
|
| + static void GenerateSafeFileName(const std::string& mime_type,
|
| + FilePath* file_name);
|
|
|
| // Runs the network cancel. Must be called on the IO thread.
|
| static void OnCancelDownloadRequest(ResourceDispatcherHost* rdh,
|
| int render_process_id,
|
| int request_id);
|
|
|
| + // Create a file name based on the response from the server.
|
| + static void GenerateFileName(const GURL& url,
|
| + const std::string& content_disposition,
|
| + const std::string& referrer_charset,
|
| + const std::string& mime_type,
|
| + FilePath* generated_name);
|
| +
|
| private:
|
| friend class base::RefCountedThreadSafe<DownloadManager>;
|
|
|
| @@ -508,12 +547,13 @@
|
| const base::Time remove_before);
|
|
|
| // Create an extension based on the file name and mime type.
|
| - void GenerateExtension(const FilePath& file_name,
|
| - const std::string& mime_type,
|
| - FilePath::StringType* generated_extension);
|
| + static void GenerateExtension(const FilePath& file_name,
|
| + const std::string& mime_type,
|
| + FilePath::StringType* generated_extension);
|
|
|
| // Create a file name based on the response from the server.
|
| - void GenerateFilename(DownloadCreateInfo* info, FilePath* generated_name);
|
| + static void GenerateFileNameFromInfo(DownloadCreateInfo* info,
|
| + FilePath* generated_name);
|
|
|
| // Persist the automatic opening preference.
|
| void SaveAutoOpens();
|
| @@ -619,9 +659,6 @@
|
| typedef std::set<FilePath::StringType, AutoOpenCompareFunctor> AutoOpenSet;
|
| AutoOpenSet auto_open_;
|
|
|
| - // Set of file extensions that are executables and shouldn't be auto opened.
|
| - std::set<std::string> exe_types_;
|
| -
|
| // Keep track of downloads that are completed before the user selects the
|
| // destination, so that observers are appropriately notified of completion
|
| // after this determination is made.
|
|
|