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/webengine/api/qquickwebengineprofile.cpp | |
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/webengine/api/qquickwebengineprofile.cpp')
-rw-r--r-- | src/webengine/api/qquickwebengineprofile.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/webengine/api/qquickwebengineprofile.cpp b/src/webengine/api/qquickwebengineprofile.cpp index 9eecae073..534df6fae 100644 --- a/src/webengine/api/qquickwebengineprofile.cpp +++ b/src/webengine/api/qquickwebengineprofile.cpp @@ -90,47 +90,50 @@ void QQuickWebEngineProfilePrivate::cancelDownload(quint32 downloadId) void QQuickWebEngineProfilePrivate::downloadDestroyed(quint32 downloadId) { m_ongoingDownloads.remove(downloadId); + cancelDownload(downloadId); } -void QQuickWebEngineProfilePrivate::downloadRequested(quint32 downloadId, QString &downloadPath, bool &cancelled) +void QQuickWebEngineProfilePrivate::downloadRequested(DownloadItemInfo &info) { Q_Q(QQuickWebEngineProfile); - Q_ASSERT(!m_ongoingDownloads.contains(downloadId)); + Q_ASSERT(!m_ongoingDownloads.contains(info.id)); QQuickWebEngineDownloadItemPrivate *itemPrivate = new QQuickWebEngineDownloadItemPrivate(this); - itemPrivate->downloadId = downloadId; + itemPrivate->downloadId = info.id; itemPrivate->downloadState = QQuickWebEngineDownloadItem::DownloadInProgress; - itemPrivate->downloadPath = downloadPath; + itemPrivate->downloadPath = info.path; QQuickWebEngineDownloadItem *download = new QQuickWebEngineDownloadItem(itemPrivate, q); - m_ongoingDownloads.insert(downloadId, download); + m_ongoingDownloads.insert(info.id, download); QQmlEngine::setObjectOwnership(download, QQmlEngine::JavaScriptOwnership); Q_EMIT q->downloadStarted(download); download->d_func()->downloadStarted = true; - downloadPath = download->path(); - cancelled = download->state() == QQuickWebEngineDownloadItem::DownloadCancelled; + info.path = download->path(); + info.cancelled = download->state() == QQuickWebEngineDownloadItem::DownloadCancelled; } -void QQuickWebEngineProfilePrivate::downloadUpdated(quint32 downloadId, int downloadState, int percentComplete) +void QQuickWebEngineProfilePrivate::downloadUpdated(const DownloadItemInfo &info) { + if (!m_ongoingDownloads.contains(info.id)) + return; + Q_Q(QQuickWebEngineProfile); - Q_ASSERT(m_ongoingDownloads.contains(downloadId)); - QQuickWebEngineDownloadItem* download = m_ongoingDownloads.value(downloadId).data(); + QQuickWebEngineDownloadItem* download = m_ongoingDownloads.value(info.id).data(); if (!download) { - cancelDownload(downloadId); + downloadDestroyed(info.id); return; } - download->d_func()->update(toDownloadState(downloadState), percentComplete); + download->d_func()->update(toDownloadState(info.state), info.percentComplete); - if (downloadState != BrowserContextAdapterClient::DownloadInProgress) { + if (info.state != BrowserContextAdapterClient::DownloadInProgress) { Q_EMIT q->downloadFinished(download); - m_ongoingDownloads.remove(downloadId); + m_ongoingDownloads.remove(info.id); } } |