| 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
|
|
|