summaryrefslogtreecommitdiffstats
path: root/content/browser/download/download_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/download/download_manager.h')
-rw-r--r--content/browser/download/download_manager.h41
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;