diff options
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp | 10 | ||||
| -rw-r--r-- | Source/WebCore/platform/network/qt/ResourceHandleQt.cpp | 21 | ||||
| -rw-r--r-- | Source/WebKit/PlatformQt.cmake | 1 |
3 files changed, 26 insertions, 6 deletions
diff --git a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp index 306f99e0e..69c72309f 100644 --- a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp +++ b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp @@ -30,6 +30,7 @@ #include "ResourceHandleInternal.h" #include "ResourceRequest.h" #include "ResourceResponse.h" +#include "SharedBuffer.h" #include <QDateTime> #include <QFile> #include <QFileInfo> @@ -672,21 +673,22 @@ void QNetworkReplyHandler::forwardData() return; qint64 bytesAvailable = m_replyWrapper->reply()->bytesAvailable(); - char* buffer = new char[8128]; // smaller than 8192 to fit within 8k including overhead. + Vector<char> buffer(8128); // smaller than 8192 to fit within 8k including overhead. while (bytesAvailable > 0 && !m_queue.deferSignals()) { - qint64 readSize = m_replyWrapper->reply()->read(buffer, 8128); + qint64 readSize = m_replyWrapper->reply()->read(buffer.data(), buffer.size()); if (readSize <= 0) break; + buffer.shrink(readSize); bytesAvailable -= readSize; + // FIXME: https://bugs.webkit.org/show_bug.cgi?id=19793 // -1 means we do not provide any data about transfer size to inspector so it would use // Content-Length headers or content size to show transfer size. - client->didReceiveData(m_resourceHandle, buffer, readSize, -1); + client->didReceiveBuffer(m_resourceHandle, SharedBuffer::adoptVector(buffer), -1); // Check if the request has been aborted or this reply-handler was otherwise released. if (wasAborted() || !m_replyWrapper) break; } - delete[] buffer; if (bytesAvailable > 0 && m_replyWrapper) m_queue.requeue(&QNetworkReplyHandler::forwardData); } diff --git a/Source/WebCore/platform/network/qt/ResourceHandleQt.cpp b/Source/WebCore/platform/network/qt/ResourceHandleQt.cpp index 674265a69..64c5e47e8 100644 --- a/Source/WebCore/platform/network/qt/ResourceHandleQt.cpp +++ b/Source/WebCore/platform/network/qt/ResourceHandleQt.cpp @@ -49,7 +49,7 @@ namespace WebCore { -class WebCoreSynchronousLoader : public ResourceHandleClient { +class WebCoreSynchronousLoader final : public ResourceHandleClient { public: WebCoreSynchronousLoader(ResourceError& error, ResourceResponse& response, Vector<char>& data) : m_error(error) @@ -59,7 +59,8 @@ public: void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse&) override; void didReceiveResponse(ResourceHandle*, const ResourceResponse& response) override { m_response = response; } - void didReceiveData(ResourceHandle*, const char* data, unsigned length, int) override { m_data.append(data, length); } + void didReceiveData(ResourceHandle*, const char*, unsigned, int) override; + void didReceiveBuffer(ResourceHandle*, PassRefPtr<SharedBuffer>, int /*encodedDataLength*/) override; void didFinishLoading(ResourceHandle*, double /*finishTime*/) override {} void didFail(ResourceHandle*, const ResourceError& error) override { m_error = error; } private: @@ -79,6 +80,22 @@ void WebCoreSynchronousLoader::willSendRequest(ResourceHandle* handle, ResourceR } } +void WebCoreSynchronousLoader::didReceiveData(ResourceHandle*, const char*, unsigned, int) +{ + ASSERT_NOT_REACHED(); +} + +void WebCoreSynchronousLoader::didReceiveBuffer(ResourceHandle*, PassRefPtr<SharedBuffer> buffer, int) +{ + // This pattern is suggested by SharedBuffer.h. + const char* segment; + unsigned position = 0; + while (unsigned length = buffer->getSomeData(segment, position)) { + m_data.append(segment, length); + position += length; + } +} + ResourceHandleInternal::~ResourceHandleInternal() { } diff --git a/Source/WebKit/PlatformQt.cmake b/Source/WebKit/PlatformQt.cmake index 81f7e95f6..8c051974b 100644 --- a/Source/WebKit/PlatformQt.cmake +++ b/Source/WebKit/PlatformQt.cmake @@ -214,6 +214,7 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES ${Qt5Gui_PRIVATE_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Positioning_INCLUDE_DIRS} + ${SQLITE_INCLUDE_DIR} ) # Build the include path with duplicates removed list(REMOVE_DUPLICATES WebKit_SYSTEM_INCLUDE_DIRECTORIES) |
