Index: Source/modules/fetch/FetchRequestData.cpp |
diff --git a/Source/modules/fetch/FetchRequestData.cpp b/Source/modules/fetch/FetchRequestData.cpp |
index 94178f8d14c833dfb120e873553321ce7c371ef6..e69301cec3d508dd771eafff735e9e3dd29696e0 100644 |
--- a/Source/modules/fetch/FetchRequestData.cpp |
+++ b/Source/modules/fetch/FetchRequestData.cpp |
@@ -8,6 +8,8 @@ |
#include "core/dom/ExecutionContext.h" |
#include "core/fetch/ResourceLoaderOptions.h" |
#include "core/loader/ThreadableLoader.h" |
+#include "modules/fetch/BodyStreamBuffer.h" |
+#include "modules/fetch/FetchBlobDataConsumerHandle.h" |
#include "modules/fetch/FetchHeaderList.h" |
#include "platform/network/ResourceRequest.h" |
#include "public/platform/WebServiceWorkerRequest.h" |
@@ -20,14 +22,14 @@ FetchRequestData* FetchRequestData::create() |
return new FetchRequestData(); |
} |
-FetchRequestData* FetchRequestData::create(const WebServiceWorkerRequest& webRequest) |
+FetchRequestData* FetchRequestData::create(ExecutionContext* executionContext, const WebServiceWorkerRequest& webRequest) |
{ |
FetchRequestData* request = FetchRequestData::create(); |
request->m_url = webRequest.url(); |
request->m_method = webRequest.method(); |
for (HTTPHeaderMap::const_iterator it = webRequest.headers().begin(); it != webRequest.headers().end(); ++it) |
request->m_headerList->append(it->key, it->value); |
- request->m_blobDataHandle = webRequest.blobDataHandle(); |
+ request->setBlobDataHandle(executionContext, webRequest.blobDataHandle()); |
request->setContext(webRequest.requestContext()); |
request->m_referrer.setURL(webRequest.referrer()); |
request->setMode(webRequest.mode()); |
@@ -36,7 +38,7 @@ FetchRequestData* FetchRequestData::create(const WebServiceWorkerRequest& webReq |
return request; |
} |
-FetchRequestData* FetchRequestData::clone() const |
+FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext) const |
{ |
// TODO(yhirano): This method will be destructive. |
FetchRequestData* request = FetchRequestData::create(); |
@@ -44,7 +46,7 @@ FetchRequestData* FetchRequestData::clone() const |
request->m_method = m_method; |
request->m_headerList = m_headerList->clone(); |
request->m_unsafeRequestFlag = m_unsafeRequestFlag; |
- request->m_blobDataHandle = m_blobDataHandle; |
+ request->setBlobDataHandle(executionContext, m_blobDataHandle); |
request->m_origin = m_origin; |
request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag; |
request->m_context = m_context; |
@@ -56,10 +58,10 @@ FetchRequestData* FetchRequestData::clone() const |
return request; |
} |
-FetchRequestData* FetchRequestData::pass() const |
+FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext) const |
{ |
// TODO(yhirano): This method will be destructive. |
- return clone(); |
+ return clone(executionContext); |
} |
FetchRequestData::~FetchRequestData() |
@@ -80,7 +82,14 @@ FetchRequestData::FetchRequestData() |
DEFINE_TRACE(FetchRequestData) |
{ |
+ visitor->trace(m_buffer); |
visitor->trace(m_headerList); |
} |
+void FetchRequestData::setBlobDataHandle(ExecutionContext* executionContext, PassRefPtr<BlobDataHandle> blobDataHandle) |
+{ |
+ m_blobDataHandle = blobDataHandle; |
+ m_buffer = BodyStreamBuffer2::create(FetchBlobDataConsumerHandle::create(executionContext, m_blobDataHandle)); |
+} |
+ |
} // namespace blink |