diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp | 96 |
1 files changed, 41 insertions, 55 deletions
diff --git a/Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp b/Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp index eb76f1aed..514a3e554 100644 --- a/Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp +++ b/Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp @@ -21,17 +21,23 @@ #include "config.h" #include "QtDownloadManager.h" -#include "DownloadProxy.h" #include "QtWebError.h" -#include "WKStringQt.h" -#include "WKURLQt.h" -#include "WebContext.h" #include "qwebdownloaditem_p.h" #include "qwebdownloaditem_p_p.h" +#include <WKDownload.h> +#include <WKStringQt.h> +#include <WKURLQt.h> +#include <WKURLResponse.h> namespace WebKit { -QtDownloadManager::QtDownloadManager(WebContext* context) +static inline QtDownloadManager* toQtDownloadManager(const void* clientInfo) +{ + ASSERT(clientInfo); + return reinterpret_cast<QtDownloadManager*>(const_cast<void*>(clientInfo)); +} + +QtDownloadManager::QtDownloadManager(WKContextRef context) { WKContextDownloadClient downloadClient; memset(&downloadClient, 0, sizeof(WKContextDownloadClient)); @@ -42,52 +48,60 @@ QtDownloadManager::QtDownloadManager(WebContext* context) downloadClient.didCreateDestination = didCreateDestination; downloadClient.didFinish = didFinishDownload; downloadClient.didFail = didFailDownload; - WKContextSetDownloadClient(toAPI(context), &downloadClient); + WKContextSetDownloadClient(context, &downloadClient); } QtDownloadManager::~QtDownloadManager() { } -void QtDownloadManager::addDownload(DownloadProxy* download, QWebDownloadItem* downloadItem) +void QtDownloadManager::addDownload(WKDownloadRef download, QWebDownloadItem* downloadItem) { - m_downloads[download->downloadID()] = downloadItem; + m_downloads[WKDownloadGetID(download)] = downloadItem; } -void QtDownloadManager::downloadReceivedResponse(DownloadProxy* download, const WebCore::ResourceResponse& response) +void QtDownloadManager::didReceiveResponse(WKContextRef, WKDownloadRef download, WKURLResponseRef response, const void* clientInfo) { + QtDownloadManager* q = toQtDownloadManager(clientInfo); + // Will be called when the headers are read by WebProcess. - QWebDownloadItem* downloadItem = m_downloads.value(download->downloadID()); + QWebDownloadItem* downloadItem = q->m_downloads.value(WKDownloadGetID(download)); ASSERT(downloadItem); - downloadItem->d->sourceUrl = response.url(); - downloadItem->d->mimeType = response.mimeType(); - downloadItem->d->expectedContentLength = response.expectedContentLength(); - downloadItem->d->suggestedFilename = response.suggestedFilename(); + downloadItem->d->sourceUrl = adoptToQUrl(WKURLResponseCopyURL(response)); + downloadItem->d->mimeType = adoptToQString(WKURLResponseCopyMIMEType(response)); + downloadItem->d->expectedContentLength = WKURLResponseGetExpectedContentLength(response); + downloadItem->d->suggestedFilename = WKStringCopyQString(adoptWK(WKURLResponseCopySuggestedFilename(response)).get()); downloadItem->d->didReceiveResponse(downloadItem); } -void QtDownloadManager::downloadCreatedDestination(DownloadProxy* download, const QString& path) +void QtDownloadManager::didCreateDestination(WKContextRef, WKDownloadRef download, WKStringRef path, const void* clientInfo) { - QWebDownloadItem* downloadItem = m_downloads.value(download->downloadID()); + QtDownloadManager* q = toQtDownloadManager(clientInfo); + + QWebDownloadItem* downloadItem = q->m_downloads.value(WKDownloadGetID(download)); ASSERT(downloadItem); - downloadItem->d->destinationPath = path; + downloadItem->d->destinationPath = WKStringCopyQString(path); emit downloadItem->destinationFileCreated(downloadItem->d->destinationPath); } -void QtDownloadManager::downloadFinished(DownloadProxy* download) +void QtDownloadManager::didFinishDownload(WKContextRef, WKDownloadRef download, const void *clientInfo) { + QtDownloadManager* q = toQtDownloadManager(clientInfo); + // Will be called when download finishes with success. - QWebDownloadItem* downloadItem = m_downloads.take(download->downloadID()); + QWebDownloadItem* downloadItem = q->m_downloads.take(WKDownloadGetID(download)); ASSERT(downloadItem); emit downloadItem->succeeded(); } -void QtDownloadManager::downloadFailed(DownloadProxy* download, const QtWebError& error) +void QtDownloadManager::didFailDownload(WKContextRef, WKDownloadRef download, WKErrorRef error, const void* clientInfo) { + QtDownloadManager* q = toQtDownloadManager(clientInfo); + // Will be called when download fails or is aborted. - QWebDownloadItem* downloadItem = m_downloads.take(download->downloadID()); + QWebDownloadItem* downloadItem = q->m_downloads.take(WKDownloadGetID(download)); ASSERT(downloadItem); // If the parent is null at this point, the download failed before it @@ -99,47 +113,19 @@ void QtDownloadManager::downloadFailed(DownloadProxy* download, const QtWebError return; } - emit downloadItem->failed(error.errorCodeAsDownloadError(), error.url(), error.description()); + QtWebError qtError(error); + emit downloadItem->failed(qtError.errorCodeAsDownloadError(), qtError.url(), qtError.description()); } -void QtDownloadManager::downloadDataReceived(DownloadProxy* download, uint64_t length) +void QtDownloadManager::didReceiveDataForDownload(WKContextRef, WKDownloadRef download, uint64_t length, const void* clientInfo) { + QtDownloadManager* q = toQtDownloadManager(clientInfo); + // Will be called everytime bytes were written to destination file by WebProcess. - QWebDownloadItem* downloadItem = m_downloads.value(download->downloadID()); + QWebDownloadItem* downloadItem = q->m_downloads.value(WKDownloadGetID(download)); ASSERT(downloadItem); downloadItem->d->totalBytesReceived += length; emit downloadItem->totalBytesReceivedChanged(length); } -static inline QtDownloadManager* toQtDownloadManager(const void* clientInfo) -{ - ASSERT(clientInfo); - return reinterpret_cast<QtDownloadManager*>(const_cast<void*>(clientInfo)); -} - -void QtDownloadManager::didReceiveResponse(WKContextRef, WKDownloadRef download, WKURLResponseRef response, const void *clientInfo) -{ - toQtDownloadManager(clientInfo)->downloadReceivedResponse(toImpl(download), toImpl(response)->resourceResponse()); -} - -void QtDownloadManager::didCreateDestination(WKContextRef, WKDownloadRef download, WKStringRef path, const void *clientInfo) -{ - toQtDownloadManager(clientInfo)->downloadCreatedDestination(toImpl(download), WKStringCopyQString(path)); -} - -void QtDownloadManager::didFinishDownload(WKContextRef, WKDownloadRef download, const void *clientInfo) -{ - toQtDownloadManager(clientInfo)->downloadFinished(toImpl(download)); -} - -void QtDownloadManager::didFailDownload(WKContextRef, WKDownloadRef download, WKErrorRef error, const void *clientInfo) -{ - toQtDownloadManager(clientInfo)->downloadFailed(toImpl(download), QtWebError(error)); -} - -void QtDownloadManager::didReceiveDataForDownload(WKContextRef, WKDownloadRef download, uint64_t length, const void *clientInfo) -{ - toQtDownloadManager(clientInfo)->downloadDataReceived(toImpl(download), length); -} - } // namespace WebKit |