Index: Source/modules/serviceworkers/Request.cpp |
diff --git a/Source/modules/serviceworkers/Request.cpp b/Source/modules/serviceworkers/Request.cpp |
index e16d2e4e6e29bcf323ff760214597cad00b7c1bd..51066915225ba64d2f0c079df736d1be9723e639 100644 |
--- a/Source/modules/serviceworkers/Request.cpp |
+++ b/Source/modules/serviceworkers/Request.cpp |
@@ -12,6 +12,7 @@ |
#include "core/loader/ThreadableLoader.h" |
#include "core/xml/XMLHttpRequest.h" |
#include "modules/serviceworkers/FetchManager.h" |
+#include "modules/serviceworkers/HeadersForEachCallback.h" |
#include "modules/serviceworkers/RequestInit.h" |
#include "platform/NotImplemented.h" |
#include "platform/network/HTTPParsers.h" |
@@ -23,6 +24,26 @@ namespace blink { |
namespace { |
+class FillWebRequestHeaders : public HeadersForEachCallback { |
+public: |
+ FillWebRequestHeaders(WebServiceWorkerRequest* webRequest) : m_webRequest(webRequest) { } |
+ |
+ virtual bool handleItem(ScriptValue, const String&, const String&, Headers*) |
+ { |
+ ASSERT_NOT_REACHED(); |
+ return false; |
+ } |
+ |
+ virtual bool handleItem(const String& value, const String& key, Headers*) |
+ { |
+ m_webRequest->setHeader(key, value); |
+ return true; |
+ } |
+ |
+private: |
+ WebServiceWorkerRequest* m_webRequest; |
+}; |
+ |
PassRefPtrWillBeRawPtr<Request> createRequestWithRequestData(PassRefPtrWillBeRawPtr<FetchRequestData> request, const RequestInit& init, FetchRequestData::Mode mode, FetchRequestData::Credentials credentials, ExceptionState& exceptionState) |
{ |
// "6. Let |mode| be |init|'s mode member if it is present, and |
@@ -283,6 +304,16 @@ String Request::credentials() const |
return ""; |
} |
+void Request::populateWebServiceWorkerRequest(WebServiceWorkerRequest& webRequest) |
+{ |
+ webRequest.setMethod(method()); |
+ webRequest.setURL(m_request->url()); |
+ m_headers->forEach(adoptPtr(new FillWebRequestHeaders(&webRequest))); |
+ webRequest.setReferrer(m_request->referrer().referrer().referrer, static_cast<WebReferrerPolicy>(m_request->referrer().referrer().referrerPolicy)); |
+ // FIXME: How can we set isReload properly? What is the correct place to load it in to the Request object? We should investigate the right way |
+ // to plumb this information in to here. |
+} |
+ |
void Request::setBodyBlobHandle(PassRefPtr<BlobDataHandle>blobHandle) |
{ |
m_request->setBlobDataHandle(blobHandle); |