From 6b171dc6c0c0f0a822b212df77b58b28bd92716c Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Fri, 10 May 2019 19:16:22 +1000 Subject: wasm: enable httpmultipart MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows for multipart requests. Change-Id: I1206d160cfd9150a9627c36ed60ea4cbb58e95aa Reviewed-by: MÃ¥rten Nordheim --- src/network/access/access.pri | 11 +++++++++++ src/network/access/qhttpmultipart.h | 2 ++ src/network/access/qhttpmultipart_p.h | 2 ++ src/network/access/qhttpnetworkconnection.cpp | 2 ++ src/network/access/qhttpnetworkheader_p.h | 2 ++ src/network/access/qhttpnetworkrequest_p.h | 2 ++ src/network/access/qnetworkaccessmanager.cpp | 13 +++++++++---- src/network/access/qnetworkaccessmanager.h | 2 +- src/network/access/qnetworkaccessmanager_p.h | 2 +- 9 files changed, 32 insertions(+), 6 deletions(-) (limited to 'src/network/access') diff --git a/src/network/access/access.pri b/src/network/access/access.pri index 575effb2f0..d7fe0c632d 100644 --- a/src/network/access/access.pri +++ b/src/network/access/access.pri @@ -115,3 +115,14 @@ qtConfig(http) { QMAKE_USE_PRIVATE += zstd } } + +wasm: { + SOURCES += \ + access/qhttpmultipart.cpp \ + access/qhttpnetworkheader.cpp + + HEADERS += \ + access/qhttpmultipart.h \ + access/qhttpmultipart_p.h \ + access/qhttpnetworkheader_p.h +} diff --git a/src/network/access/qhttpmultipart.h b/src/network/access/qhttpmultipart.h index 56db83779a..7f07008c0f 100644 --- a/src/network/access/qhttpmultipart.h +++ b/src/network/access/qhttpmultipart.h @@ -46,7 +46,9 @@ #include #include +#ifndef Q_OS_WASM QT_REQUIRE_CONFIG(http); +#endif QT_BEGIN_NAMESPACE diff --git a/src/network/access/qhttpmultipart_p.h b/src/network/access/qhttpmultipart_p.h index ead1eadf3b..e7fd2d6d3d 100644 --- a/src/network/access/qhttpmultipart_p.h +++ b/src/network/access/qhttpmultipart_p.h @@ -56,7 +56,9 @@ #include "qnetworkrequest_p.h" // for deriving QHttpPartPrivate from QNetworkHeadersPrivate #include "private/qobject_p.h" +#ifndef Q_OS_WASM QT_REQUIRE_CONFIG(http); +#endif QT_BEGIN_NAMESPACE diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 72abbb1521..ff95a49965 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -259,6 +259,7 @@ void QHttpNetworkConnectionPrivate::prepareRequest(HttpMessagePair &messagePair) QByteArray value; // check if Content-Length is provided QNonContiguousByteDevice* uploadByteDevice = request.uploadByteDevice(); +#ifndef Q_OS_WASM if (uploadByteDevice) { const qint64 contentLength = request.contentLength(); const qint64 uploadDeviceSize = uploadByteDevice->size(); @@ -274,6 +275,7 @@ void QHttpNetworkConnectionPrivate::prepareRequest(HttpMessagePair &messagePair) qFatal("QHttpNetworkConnectionPrivate: Neither content-length nor upload device size were given"); } } +#endif // set the Connection/Proxy-Connection: Keep-Alive headers #ifndef QT_NO_NETWORKPROXY if (networkProxy.type() == QNetworkProxy::HttpCachingProxy) { diff --git a/src/network/access/qhttpnetworkheader_p.h b/src/network/access/qhttpnetworkheader_p.h index f9108e5d77..c8186eeda0 100644 --- a/src/network/access/qhttpnetworkheader_p.h +++ b/src/network/access/qhttpnetworkheader_p.h @@ -56,7 +56,9 @@ #include #include +#ifndef Q_OS_WASM QT_REQUIRE_CONFIG(http); +#endif QT_BEGIN_NAMESPACE diff --git a/src/network/access/qhttpnetworkrequest_p.h b/src/network/access/qhttpnetworkrequest_p.h index 9944823440..ade71f4661 100644 --- a/src/network/access/qhttpnetworkrequest_p.h +++ b/src/network/access/qhttpnetworkrequest_p.h @@ -56,7 +56,9 @@ #include #include +#ifndef Q_OS_WASM QT_REQUIRE_CONFIG(http); +#endif QT_BEGIN_NAMESPACE diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 99c929d6a2..4642700887 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -89,6 +89,8 @@ #endif #ifdef Q_OS_WASM #include "qnetworkreplywasmimpl_p.h" +#include "qhttpmultipart.h" +#include "qhttpmultipart_p.h" #endif #include "qnetconmonitor_p.h" @@ -823,7 +825,7 @@ QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const return reply; } -#if QT_CONFIG(http) +#if QT_CONFIG(http) || defined(Q_OS_WASM) /*! \since 4.8 @@ -1090,7 +1092,7 @@ QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &r return reply; } -#if QT_CONFIG(http) +#if QT_CONFIG(http) || defined(Q_OS_WASM) /*! \since 5.8 @@ -1189,13 +1191,14 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera } #endif QNetworkRequest request = req; +#ifndef Q_OS_WASM // Content-length header is not allowed to be set by user in wasm if (!request.header(QNetworkRequest::ContentLengthHeader).isValid() && outgoingData && !outgoingData->isSequential()) { // request has no Content-Length // but the data that is outgoing is random-access request.setHeader(QNetworkRequest::ContentLengthHeader, outgoingData->size()); } - +#endif if (static_cast (request.attribute(QNetworkRequest::CookieLoadControlAttribute, QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Automatic) { @@ -1644,7 +1647,9 @@ void QNetworkAccessManagerPrivate::destroyThread() } } -#if QT_CONFIG(http) + +#if QT_CONFIG(http) || defined(Q_OS_WASM) + QNetworkRequest QNetworkAccessManagerPrivate::prepareMultipart(const QNetworkRequest &request, QHttpMultiPart *multiPart) { // copy the request, we probably need to add some headers diff --git a/src/network/access/qnetworkaccessmanager.h b/src/network/access/qnetworkaccessmanager.h index 568fd00e41..b03191505b 100644 --- a/src/network/access/qnetworkaccessmanager.h +++ b/src/network/access/qnetworkaccessmanager.h @@ -124,7 +124,7 @@ public: QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr); QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data); -#if QT_CONFIG(http) +#if QT_CONFIG(http) || defined(Q_OS_WASM) QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *multiPart); QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *multiPart); QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart); diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h index 5433876385..3d5d7231b4 100644 --- a/src/network/access/qnetworkaccessmanager_p.h +++ b/src/network/access/qnetworkaccessmanager_p.h @@ -126,7 +126,7 @@ public: QNetworkAccessBackend *findBackend(QNetworkAccessManager::Operation op, const QNetworkRequest &request); QStringList backendSupportedSchemes() const; -#if QT_CONFIG(http) +#if QT_CONFIG(http) || defined(Q_OS_WASM) QNetworkRequest prepareMultipart(const QNetworkRequest &request, QHttpMultiPart *multiPart); #endif -- cgit v1.2.3