summaryrefslogtreecommitdiffstats
path: root/src/core/net/url_request_custom_job.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-07-23 15:06:11 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-08-03 22:21:46 +0000
commita5bdc6236ad52586579a9a3da6a059835ed60761 (patch)
tree0990effe331cea168cec1c33593af2f640c880a6 /src/core/net/url_request_custom_job.cpp
parent14a8ac1534bc4314cf6c89aceaaa382f42314dac (diff)
Add HTTP request headers to custom URL schemes
Makes it possible to read extra headers added to the request. Change-Id: I4af0ba8a5b28488b8f12a2cff29807575c24f026 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/core/net/url_request_custom_job.cpp')
-rw-r--r--src/core/net/url_request_custom_job.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/core/net/url_request_custom_job.cpp b/src/core/net/url_request_custom_job.cpp
index c69fb1808..f4dfc6ae9 100644
--- a/src/core/net/url_request_custom_job.cpp
+++ b/src/core/net/url_request_custom_job.cpp
@@ -39,10 +39,13 @@
#include "url_request_custom_job.h"
#include "url_request_custom_job_proxy.h"
+#include "../type_conversion.h"
+
#include "content/public/browser/browser_thread.h"
#include "net/base/io_buffer.h"
#include <QIODevice>
+#include <QMap>
using namespace net;
@@ -76,9 +79,22 @@ URLRequestCustomJob::~URLRequestCustomJob()
void URLRequestCustomJob::Start()
{
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
+ HttpRequestHeaders requestHeaders = request()->extra_request_headers();
+ QMap<QByteArray, QByteArray> headers;
+ net::HttpRequestHeaders::Iterator it(requestHeaders);
+ while (it.GetNext())
+ headers.insert(toQByteArray(it.name()), toQByteArray(it.value()));
+ if (!request()->referrer().empty())
+ headers.insert(QByteArray("Referer"), toQByteArray(request()->referrer()));
+
+ // TODO: handle UploadDataStream, for instance using a QIODevice wrapper.
+
content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
- base::Bind(&URLRequestCustomJobProxy::initialize,
- m_proxy, request()->url(), request()->method(), request()->initiator()));
+ base::Bind(&URLRequestCustomJobProxy::initialize, m_proxy,
+ request()->url(),
+ request()->method(),
+ request()->initiator(),
+ headers));
}
void URLRequestCustomJob::Kill()