diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-01-16 17:30:56 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-01-21 10:06:01 +0000 |
commit | 0deb1ffda77f0410b3d13419856c757cdd422d2b (patch) | |
tree | 9206e32b8b23f7b8df827ec051182dbfc96d80af /src/core/download_manager_delegate_qt.cpp | |
parent | 3f7ea91e23d82e676aeaf157736e25cf54e5ec6b (diff) |
Remove download items internally when API objects are deleted
We were never removing internal download item.
[ChangeLog][Behavioral Changes] Deleting a download item will
now also cancel it if it is still in progress.
Change-Id: I2fab497d7acf7ca6ca17f4a61e106b1c18bfb333
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
Diffstat (limited to 'src/core/download_manager_delegate_qt.cpp')
-rw-r--r-- | src/core/download_manager_delegate_qt.cpp | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/core/download_manager_delegate_qt.cpp b/src/core/download_manager_delegate_qt.cpp index abf4a2a95..948a62047 100644 --- a/src/core/download_manager_delegate_qt.cpp +++ b/src/core/download_manager_delegate_qt.cpp @@ -82,35 +82,45 @@ void DownloadManagerDelegateQt::GetNextId(const content::DownloadIdCallback& cal callback.Run(++m_currentId); } +download::DownloadItem *DownloadManagerDelegateQt::findDownloadById(quint32 downloadId) +{ + content::DownloadManager* dlm = content::BrowserContext::GetDownloadManager(m_profileAdapter->profile()); + return dlm->GetDownload(downloadId); +} + void DownloadManagerDelegateQt::cancelDownload(const content::DownloadTargetCallback& callback) { - callback.Run(base::FilePath(), download::DownloadItem::TARGET_DISPOSITION_PROMPT, download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, base::FilePath(), download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED); + callback.Run(base::FilePath(), + download::DownloadItem::TARGET_DISPOSITION_PROMPT, + download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, + base::FilePath(), + download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED); } void DownloadManagerDelegateQt::cancelDownload(quint32 downloadId) { - content::DownloadManager* dlm = content::BrowserContext::GetDownloadManager(m_profileAdapter->profile()); - download::DownloadItem *download = dlm->GetDownload(downloadId); - if (download) + if (download::DownloadItem *download = findDownloadById(downloadId)) download->Cancel(/* user_cancel */ true); } void DownloadManagerDelegateQt::pauseDownload(quint32 downloadId) { - content::DownloadManager* dlm = content::BrowserContext::GetDownloadManager(m_profileAdapter->profile()); - download::DownloadItem *download = dlm->GetDownload(downloadId); - if (download) + if (download::DownloadItem *download = findDownloadById(downloadId)) download->Pause(); } void DownloadManagerDelegateQt::resumeDownload(quint32 downloadId) { - content::DownloadManager* dlm = content::BrowserContext::GetDownloadManager(m_profileAdapter->profile()); - download::DownloadItem *download = dlm->GetDownload(downloadId); - if (download) + if (download::DownloadItem *download = findDownloadById(downloadId)) download->Resume(); } +void DownloadManagerDelegateQt::removeDownload(quint32 downloadId) +{ + if (download::DownloadItem *download = findDownloadById(downloadId)) + download->Remove(); +} + bool DownloadManagerDelegateQt::DetermineDownloadTarget(download::DownloadItem* item, const content::DownloadTargetCallback& callback) { |