From d441d6f39bb846989d95bcf5caf387b42414718d Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 13 Sep 2013 12:51:20 +0200 Subject: Import Qt5x2 branch of QtWebkit for Qt 5.2 Importing a new snapshot of webkit. Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c Reviewed-by: Allan Sandfeld Jensen --- Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp | 96 ++++++++++------------- 1 file changed, 41 insertions(+), 55 deletions(-) (limited to 'Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp') 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 +#include +#include +#include namespace WebKit { -QtDownloadManager::QtDownloadManager(WebContext* context) +static inline QtDownloadManager* toQtDownloadManager(const void* clientInfo) +{ + ASSERT(clientInfo); + return reinterpret_cast(const_cast(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(const_cast(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 -- cgit v1.2.1