| Index: content/browser/download/save_file_manager.h
|
| diff --git a/content/browser/download/save_file_manager.h b/content/browser/download/save_file_manager.h
|
| index d42bafa36aacc54c129a595b1e6388598631a933..9b0abe502956a37687aadc2bbc5f2835dfa58d2f 100644
|
| --- a/content/browser/download/save_file_manager.h
|
| +++ b/content/browser/download/save_file_manager.h
|
| @@ -49,11 +49,10 @@
|
| // data)
|
| //
|
| //
|
| -// The SaveFileManager tracks saving requests, mapping from a save ID (unique
|
| -// integer created in the IO thread) to the SavePackage for the contents where
|
| -// the saving job was initiated. In the event of a contents closure during
|
| -// saving, the SavePackage will notify the SaveFileManage to cancel all SaveFile
|
| -// jobs.
|
| +// The SaveFileManager tracks saving requests, mapping from a save item id to
|
| +// the SavePackage for the contents where the saving job was initiated. In the
|
| +// event of a contents closure during saving, the SavePackage will notify the
|
| +// SaveFileManage to cancel all SaveFile jobs.
|
|
|
| #ifndef CONTENT_BROWSER_DOWNLOAD_SAVE_FILE_MANAGER_H_
|
| #define CONTENT_BROWSER_DOWNLOAD_SAVE_FILE_MANAGER_H_
|
| @@ -89,14 +88,10 @@ class SaveFileManager : public base::RefCountedThreadSafe<SaveFileManager> {
|
| // Lifetime management.
|
| CONTENT_EXPORT void Shutdown();
|
|
|
| - // Called on the IO thread. This generates unique IDs for
|
| - // SaveFileResourceHandler objects (there's one per file in a SavePackage).
|
| - // Note that this is different from the SavePackage's id.
|
| - int GetNextId();
|
| -
|
| // Save the specified URL. Called on the UI thread and forwarded to the
|
| // ResourceDispatcherHostImpl on the IO thread.
|
| - void SaveURL(const GURL& url,
|
| + void SaveURL(int save_item_id,
|
| + const GURL& url,
|
| const Referrer& referrer,
|
| int render_process_host_id,
|
| int render_view_routing_id,
|
| @@ -108,20 +103,16 @@ class SaveFileManager : public base::RefCountedThreadSafe<SaveFileManager> {
|
|
|
| // Notifications sent from the IO thread and run on the file thread:
|
| void StartSave(SaveFileCreateInfo* info);
|
| - void UpdateSaveProgress(int save_id, net::IOBuffer* data, int size);
|
| - void SaveFinished(int save_id,
|
| - const GURL& save_url,
|
| - int save_package_id,
|
| - bool is_success);
|
| + void UpdateSaveProgress(int save_item_id, net::IOBuffer* data, int size);
|
| + void SaveFinished(int save_item_id, int save_package_id, bool is_success);
|
|
|
| // Notifications sent from the UI thread and run on the file thread.
|
| - // Cancel a SaveFile instance which has specified save id.
|
| - void CancelSave(int save_id);
|
| + // Cancel a SaveFile instance which has specified save item id.
|
| + void CancelSave(int save_item_id);
|
|
|
| // Called on the UI thread to remove a save package from SaveFileManager's
|
| // tracking map.
|
| - void RemoveSaveFile(int save_id, const GURL& save_url,
|
| - SavePackage* package);
|
| + void RemoveSaveFile(int save_item_id, SavePackage* package);
|
|
|
| // Helper function for deleting specified file.
|
| void DeleteDirectoryOrFile(const base::FilePath& full_path, bool is_dir);
|
| @@ -129,13 +120,11 @@ class SaveFileManager : public base::RefCountedThreadSafe<SaveFileManager> {
|
| // Runs on file thread to save a file by copying from file system when
|
| // original url is using file scheme.
|
| void SaveLocalFile(const GURL& original_file_url,
|
| - int save_id,
|
| + int save_item_id,
|
| int save_package_id);
|
|
|
| // Renames all the successfully saved files.
|
| - // |final_names| points to a vector which contains pairs of save ids and
|
| - // final names of successfully saved files.
|
| - void RenameAllFiles(const FinalNameList& final_names,
|
| + void RenameAllFiles(const FinalNamesMap& final_names,
|
| const base::FilePath& resource_dir,
|
| int render_process_id,
|
| int render_frame_routing_id,
|
| @@ -143,7 +132,7 @@ class SaveFileManager : public base::RefCountedThreadSafe<SaveFileManager> {
|
|
|
| // When the user cancels the saving, we need to remove all remaining saved
|
| // files of this page saving job from save_file_map_.
|
| - void RemoveSavedFileFromFileMap(const SaveIDList & save_ids);
|
| + void RemoveSavedFileFromFileMap(const std::vector<int>& save_item_ids);
|
|
|
| private:
|
| friend class base::RefCountedThreadSafe<SaveFileManager>;
|
| @@ -158,24 +147,15 @@ class SaveFileManager : public base::RefCountedThreadSafe<SaveFileManager> {
|
| static SavePackage* GetSavePackageFromRenderIds(int render_process_id,
|
| int render_frame_routing_id);
|
|
|
| - // Register a starting request. Associate the save URL with a
|
| - // SavePackage for further matching.
|
| - void RegisterStartingRequest(const GURL& save_url,
|
| - SavePackage* save_package);
|
| - // Unregister a start request according save URL, disassociate
|
| - // the save URL and SavePackage.
|
| - SavePackage* UnregisterStartingRequest(const GURL& save_url,
|
| - int save_package_id);
|
| -
|
| - // Look up the SavePackage according to save id.
|
| - SavePackage* LookupPackage(int save_id);
|
| + // Look up the SavePackage according to save item id.
|
| + SavePackage* LookupPackage(int save_item_id);
|
|
|
| // Called only on the file thread.
|
| - // Look up one in-progress saving item according to save id.
|
| - SaveFile* LookupSaveFile(int save_id);
|
| + // Look up one in-progress saving item according to save item id.
|
| + SaveFile* LookupSaveFile(int save_item_id);
|
|
|
| // Help function for sending notification of canceling specific request.
|
| - void SendCancelRequest(int save_id);
|
| + void SendCancelRequest(int save_item_id);
|
|
|
| // Notifications sent from the file thread and run on the UI thread.
|
|
|
| @@ -184,15 +164,12 @@ class SaveFileManager : public base::RefCountedThreadSafe<SaveFileManager> {
|
| void OnStartSave(const SaveFileCreateInfo* info);
|
| // Update the SavePackage with the current state of a started saving job.
|
| // If the SavePackage for this saving job is gone, cancel the request.
|
| - void OnUpdateSaveProgress(int save_id,
|
| + void OnUpdateSaveProgress(int save_item_id,
|
| int64 bytes_so_far,
|
| bool write_success);
|
| // Update the SavePackage with the finish state, and remove the request
|
| // tracking entries.
|
| - void OnSaveFinished(int save_id, int64 bytes_so_far, bool is_success);
|
| - // For those requests that do not have valid save id, use
|
| - // map:(url, SavePackage) to find the request and remove it.
|
| - void OnErrorFinished(const GURL& save_url, int save_package_id);
|
| + void OnSaveFinished(int save_item_id, int64 bytes_so_far, bool is_success);
|
| // Notifies SavePackage that the whole page saving job is finished.
|
| void OnFinishSavePageJob(int render_process_id,
|
| int render_frame_routing_id,
|
| @@ -208,44 +185,25 @@ class SaveFileManager : public base::RefCountedThreadSafe<SaveFileManager> {
|
| // Initiates a request for URL to be saved.
|
| void OnSaveURL(const GURL& url,
|
| const Referrer& referrer,
|
| + int save_item_id,
|
| + int save_package_id,
|
| int render_process_host_id,
|
| int render_view_routing_id,
|
| int render_frame_routing_id,
|
| - int save_package_id,
|
| ResourceContext* context);
|
| - // Handler for a notification sent to the IO thread for generating save id.
|
| - void OnRequireSaveJobFromOtherSource(SaveFileCreateInfo* info);
|
| // Call ResourceDispatcherHostImpl's CancelRequest method to execute cancel
|
| // action in the IO thread.
|
| void ExecuteCancelSaveRequest(int render_process_id, int request_id);
|
|
|
| - // Unique ID for the next SaveFile object.
|
| - int next_id_;
|
| -
|
| - // A map of all saving jobs by using save id.
|
| + // A map from save_item_id into SaveFiles.
|
| typedef base::hash_map<int, SaveFile*> SaveFileMap;
|
| SaveFileMap save_file_map_;
|
|
|
| // Tracks which SavePackage to send data to, called only on UI thread.
|
| - // SavePackageMap maps save IDs to their SavePackage.
|
| + // SavePackageMap maps save item ids to their SavePackage.
|
| typedef base::hash_map<int, SavePackage*> SavePackageMap;
|
| SavePackageMap packages_;
|
|
|
| - // There is a gap between after calling SaveURL() and before calling
|
| - // StartSave(). In this gap, each request does not have save id for tracking.
|
| - // But sometimes users might want to stop saving job or ResourceDispatcherHost
|
| - // calls SaveFinished with save id -1 for network error. We name the requests
|
| - // as starting requests. For tracking those starting requests, we need to
|
| - // have some data structure.
|
| - // First we use a hashmap to map the request URL to SavePackage, then we use a
|
| - // hashmap to map the contents id (we actually use render_process_id) to the
|
| - // hashmap since it is possible to save the same URL in different contents at
|
| - // same time.
|
| - typedef base::hash_map<std::string, SavePackage*> StartingRequestsMap;
|
| - typedef base::hash_map<int, StartingRequestsMap>
|
| - ContentsToStartingRequestsMap;
|
| - ContentsToStartingRequestsMap contents_starting_requests_;
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(SaveFileManager);
|
| };
|
|
|
|
|