diff options
Diffstat (limited to 'chrome/browser/download/download_file_manager.h')
-rw-r--r-- | chrome/browser/download/download_file_manager.h | 46 |
1 files changed, 11 insertions, 35 deletions
diff --git a/chrome/browser/download/download_file_manager.h b/chrome/browser/download/download_file_manager.h index 15e7d21..d51d35f 100644 --- a/chrome/browser/download/download_file_manager.h +++ b/chrome/browser/download/download_file_manager.h @@ -44,7 +44,6 @@ #include "base/basictypes.h" #include "base/hash_tables.h" -#include "base/lock.h" #include "base/ref_counted.h" #include "base/timer.h" #include "gfx/native_widget_types.h" @@ -75,16 +74,17 @@ class DownloadFileManager // Called on the IO thread int GetNextId(); + // Called on UI thread to make DownloadFileManager start the download. + void StartDownload(DownloadCreateInfo* info); + // Handlers for notifications sent from the IO thread and run on the // download thread. - void StartDownload(DownloadCreateInfo* info); void UpdateDownload(int id, DownloadBuffer* buffer); void CancelDownload(int id); void DownloadFinished(int id, DownloadBuffer* buffer); - // Called on the UI thread to remove a download item or manager. - void RemoveDownloadManager(DownloadManager* manager); - void RemoveDownload(int id, DownloadManager* manager); + // Called on FILE thread by DownloadManager at the beginning of its shutdown. + void OnDownloadManagerShutdown(DownloadManager* manager); #if !defined(OS_MACOSX) // The open and show methods run on the file thread, which does not work on @@ -125,22 +125,14 @@ class DownloadFileManager // Clean up helper that runs on the download thread. void OnShutdown(); - // Handlers for notifications sent from the download thread and run on - // the UI thread. - void OnStartDownload(DownloadCreateInfo* info); - void OnDownloadFinished(int id, int64 bytes_so_far); - - // Called only on UI thread to get the DownloadManager for a tab's profile. - static DownloadManager* DownloadManagerFromRenderIds(int render_process_id, - int review_view_id); - DownloadManager* GetDownloadManager(int download_id); + // Creates DownloadFile on FILE thread and continues starting the download + // process. + void CreateDownloadFile(DownloadCreateInfo* info, + DownloadManager* download_manager); // Called only on the download thread. DownloadFile* GetDownloadFile(int id); - // Called on the UI thread to remove a download from the UI progress table. - void RemoveDownloadFromUIProgress(int id); - // Called only from OnFinalDownloadName or OnIntermediateDownloadName // on the FILE thread. void CancelDownloadOnRename(int id); @@ -152,28 +144,12 @@ class DownloadFileManager typedef base::hash_map<int, DownloadFile*> DownloadFileMap; DownloadFileMap downloads_; - // Throttle updates to the UI thread. + // Schedule periodic updates of the download progress. This timer + // is controlled from the FILE thread, and posts updates to the UI thread. base::RepeatingTimer<DownloadFileManager> update_timer_; ResourceDispatcherHost* resource_dispatcher_host_; - // Tracking which DownloadManager to send data to, called only on UI thread. - // DownloadManagerMap maps download IDs to their DownloadManager. - typedef base::hash_map<int, DownloadManager*> DownloadManagerMap; - DownloadManagerMap managers_; - - // RequestMap maps a DownloadManager to all in-progress download IDs. - // Called only on the UI thread. - typedef base::hash_set<int> DownloadRequests; - typedef std::map<DownloadManager*, DownloadRequests> RequestMap; - RequestMap requests_; - - // Used for progress updates on the UI thread, mapping download->id() to bytes - // received so far. Written to by the file thread and read by the UI thread. - typedef base::hash_map<int, int64> ProgressMap; - ProgressMap ui_progress_; - Lock progress_lock_; - DISALLOW_COPY_AND_ASSIGN(DownloadFileManager); }; |