diff options
Diffstat (limited to 'content/browser/download/download_manager.h')
-rw-r--r-- | content/browser/download/download_manager.h | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/content/browser/download/download_manager.h b/content/browser/download/download_manager.h index 965bdcd..06803ce 100644 --- a/content/browser/download/download_manager.h +++ b/content/browser/download/download_manager.h @@ -122,24 +122,22 @@ class CONTENT_EXPORT DownloadManager void OnResponseCompleted(int32 download_id, int64 size, const std::string& hash); + // Offthread target for cancelling a particular download. Will be a no-op + // if the download has already been cancelled. + void CancelDownload(int32 download_id); + // Called when there is an error in the download. // |download_id| is the ID of the download. // |size| is the number of bytes that are currently downloaded. // |error| is a download error code. Indicates what caused the interruption. void OnDownloadError(int32 download_id, int64 size, net::Error error); - // This routine is called from the DownloadItem when a - // request is cancelled or interrupted. It removes the download - // from all internal queues holding in-progress work, and takes care - // of the off-thread aspects of the cancel (stopping the request, - // cancelling the download on the file thread). - void DownloadStopped(DownloadItem* download); + // Called from DownloadItem to handle the DownloadManager portion of a + // Cancel; should not be called from other locations. + void DownloadCancelledInternal(DownloadItem* download); - // Called from DownloadItem when the download is being removed. - // Takes care of all history operations, modifying internal queues, - // and notifying DownloadManager observers, and actually deletes - // the DownloadItem. - void RemoveDownload(DownloadItem* download); + // Called from a view when a user clicks a UI button or link. + void RemoveDownload(int64 download_handle); // Determine if the download is ready for completion, i.e. has had // all data saved, and completed the filename determination and @@ -275,16 +273,16 @@ class CONTENT_EXPORT DownloadManager typedef std::set<DownloadItem*> DownloadSet; typedef base::hash_map<int64, DownloadItem*> DownloadMap; - friend struct BrowserThread::DeleteOnThread<BrowserThread::UI>; - friend class DeleteTask<DownloadManager>; - friend class base::RefCountedThreadSafe<DownloadManager, - BrowserThread::DeleteOnUIThread>; - // For testing. friend class DownloadManagerTest; friend class MockDownloadManager; friend class DownloadTest; + friend class base::RefCountedThreadSafe<DownloadManager, + BrowserThread::DeleteOnUIThread>; + friend struct BrowserThread::DeleteOnThread<BrowserThread::UI>; + friend class DeleteTask<DownloadManager>; + void set_delegate(DownloadManagerDelegate* delegate) { delegate_ = delegate; } virtual ~DownloadManager(); @@ -307,18 +305,17 @@ class CONTENT_EXPORT DownloadManager // Returns NULL if the download is not active. DownloadItem* GetActiveDownload(int32 download_id); + // Removes |download| from the active and in progress maps. + // Called when the download is cancelled or has an error. + // Does nothing if the download is not in the history DB. + void RemoveFromActiveList(DownloadItem* download); + // Updates the delegate about the overall download progress. void UpdateDownloadProgress(); // Inform observers that the model has changed. void NotifyModelChanged(); - // Return all in progress downloads. This includes downloads that - // have not yet been entered into the history (all other accessors - // only return downloads that have been entered into the history). - // This is intended to be used for testing only. - void GetInProgressDownloads(std::vector<DownloadItem*>* result); - // Debugging routine to confirm relationship between below // containers; no-op if NDEBUG. void AssertContainersConsistent() const; |