diff options
author | Andras Becsi <andras.becsi@theqtcompany.com> | 2015-01-19 13:27:41 +0100 |
---|---|---|
committer | Andras Becsi <andras.becsi@theqtcompany.com> | 2015-01-20 11:31:02 +0100 |
commit | 38f58ee4693272ca8e206dac8b484d012b683ebf (patch) | |
tree | 929694adb94c960cf64a0fca18934aa17629c3cf /src/core | |
parent | 43905f3a41d2ce419fe6c1558fda6e90011802b6 (diff) |
Add DownloadItemInfo to BrowserContextAdapterClient
This extends the carried information from Chromium's content::DownloadItem
with url, totalBytes and receivedBytes in preparation of adding a Widget
API for downloads. DownloadItemInfo struct is now constructed to carry
information about individual downloads from the content layer to the
Qt API layer.
Change-Id: I3ee7aea02b74994e612e1b3709195776d5e7570b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/browser_context_adapter_client.h | 18 | ||||
-rw-r--r-- | src/core/download_manager_delegate_qt.cpp | 43 |
2 files changed, 47 insertions, 14 deletions
diff --git a/src/core/browser_context_adapter_client.h b/src/core/browser_context_adapter_client.h index 2b6b4f434..1d84ffb45 100644 --- a/src/core/browser_context_adapter_client.h +++ b/src/core/browser_context_adapter_client.h @@ -39,6 +39,7 @@ #include "qtwebenginecoreglobal.h" #include <QString> +#include <QUrl> class QWEBENGINE_EXPORT BrowserContextAdapterClient { @@ -54,10 +55,23 @@ public: // This state indicates that the download has been interrupted. DownloadInterrupted }; + + struct DownloadItemInfo { + const quint32 id; + const QUrl url; + const int state; + const int percentComplete; + const qint64 totalBytes; + const qint64 receivedBytes; + + QString path; + bool cancelled; + }; + virtual ~BrowserContextAdapterClient() { } - virtual void downloadRequested(quint32 downloadId, QString &downloadPath, bool &cancelled) = 0; - virtual void downloadUpdated(quint32 downloadId, int downloadState, int percentComplete) = 0; + virtual void downloadRequested(DownloadItemInfo &info) = 0; + virtual void downloadUpdated(const DownloadItemInfo &info) = 0; }; #endif // BROWSER_CONTEXT_ADAPTER_CLIENT_H diff --git a/src/core/download_manager_delegate_qt.cpp b/src/core/download_manager_delegate_qt.cpp index 3f6ec7bcc..c46bfb080 100644 --- a/src/core/download_manager_delegate_qt.cpp +++ b/src/core/download_manager_delegate_qt.cpp @@ -54,8 +54,8 @@ #include "qtwebenginecoreglobal.h" DownloadManagerDelegateQt::DownloadManagerDelegateQt(BrowserContextAdapter *contextAdapter) - : m_currentId(0) - , m_contextAdapter(contextAdapter) + : m_contextAdapter(contextAdapter) + , m_currentId(0) { Q_ASSERT(m_contextAdapter); } @@ -120,18 +120,28 @@ bool DownloadManagerDelegateQt::DetermineDownloadTarget(content::DownloadItem* i } item->AddObserver(this); - quint32 downloadId = item->GetId(); if (m_contextAdapter->client()) { bool cancelled = false; - m_contextAdapter->client()->downloadRequested(downloadId, suggestedFilePath, cancelled); - suggestedFile.setFile(suggestedFilePath); - - if (!cancelled && !suggestedFile.absoluteDir().mkpath(suggestedFile.absolutePath())) { + BrowserContextAdapterClient::DownloadItemInfo info = { + item->GetId(), + toQt(item->GetURL()), + item->GetState(), + item->PercentComplete(), + item->GetTotalBytes(), + item->GetReceivedBytes(), + suggestedFilePath, + cancelled + }; + m_contextAdapter->client()->downloadRequested(info); + + suggestedFile.setFile(info.path); + + if (!info.cancelled && !suggestedFile.absoluteDir().mkpath(suggestedFile.absolutePath())) { qWarning("Creating download path failed, download cancelled: %s", suggestedFile.absolutePath().toUtf8().data()); cancelled = true; } - if (cancelled) { + if (info.cancelled) { cancelDownload(callback); return true; } @@ -158,10 +168,19 @@ void DownloadManagerDelegateQt::GetSaveDir(content::BrowserContext* browser_cont void DownloadManagerDelegateQt::OnDownloadUpdated(content::DownloadItem *download) { - const quint32 downloadId = download->GetId(); - - if (m_contextAdapter->client()) - m_contextAdapter->client()->downloadUpdated(downloadId, download->GetState(), download->PercentComplete()); + if (m_contextAdapter->client()) { + BrowserContextAdapterClient::DownloadItemInfo info = { + download->GetId(), + toQt(download->GetURL()), + download->GetState(), + download->PercentComplete(), + download->GetTotalBytes(), + download->GetReceivedBytes(), + QString(), + false + }; + m_contextAdapter->client()->downloadUpdated(info); + } } void DownloadManagerDelegateQt::OnDownloadDestroyed(content::DownloadItem *download) |