diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-07-23 15:06:11 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-03 22:21:46 +0000 |
commit | a5bdc6236ad52586579a9a3da6a059835ed60761 (patch) | |
tree | 0990effe331cea168cec1c33593af2f640c880a6 /src/core/net/url_request_custom_job.cpp | |
parent | 14a8ac1534bc4314cf6c89aceaaa382f42314dac (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.cpp | 20 |
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() |