summaryrefslogtreecommitdiffstats
path: root/src/core/net/url_request_custom_job.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/net/url_request_custom_job.cpp')
-rw-r--r--src/core/net/url_request_custom_job.cpp34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/core/net/url_request_custom_job.cpp b/src/core/net/url_request_custom_job.cpp
index d371c7bff..cba9b4dc5 100644
--- a/src/core/net/url_request_custom_job.cpp
+++ b/src/core/net/url_request_custom_job.cpp
@@ -39,6 +39,9 @@
#include "url_request_custom_job.h"
#include "url_request_custom_job_proxy.h"
+
+#include "base/task/post_task.h"
+#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/io_buffer.h"
@@ -68,17 +71,30 @@ URLRequestCustomJob::~URLRequestCustomJob()
if (m_device && m_device->isOpen())
m_device->close();
m_device = nullptr;
- content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
- base::Bind(&URLRequestCustomJobProxy::release,
- m_proxy));
+ base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::UI},
+ base::BindOnce(&URLRequestCustomJobProxy::release, m_proxy));
}
void URLRequestCustomJob::Start()
{
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
- content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
- base::Bind(&URLRequestCustomJobProxy::initialize,
- m_proxy, request()->url(), request()->method(), request()->initiator()));
+ HttpRequestHeaders requestHeaders = request()->extra_request_headers();
+ std::map<std::string, std::string> headers;
+ net::HttpRequestHeaders::Iterator it(requestHeaders);
+ while (it.GetNext())
+ headers.emplace(it.name(), it.value());
+ if (!request()->referrer().empty())
+ headers.emplace("Referer", request()->referrer());
+
+ // TODO: handle UploadDataStream, for instance using a QIODevice wrapper.
+
+ base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::UI},
+ base::BindOnce(&URLRequestCustomJobProxy::initialize,
+ m_proxy,
+ request()->url(),
+ request()->method(),
+ request()->initiator(),
+ std::move(headers)));
}
void URLRequestCustomJob::Kill()
@@ -94,9 +110,9 @@ void URLRequestCustomJob::Kill()
m_pendingReadPos = 0;
}
m_device = nullptr;
- content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
- base::Bind(&URLRequestCustomJobProxy::release,
- m_proxy));
+ base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::UI},
+ base::BindOnce(&URLRequestCustomJobProxy::release,
+ m_proxy));
URLRequestJob::Kill();
}