summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp10
-rw-r--r--Source/WebCore/platform/network/qt/ResourceHandleQt.cpp21
-rw-r--r--Source/WebKit/PlatformQt.cmake1
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)