Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1347)

Unified Diff: Source/modules/fetch/FetchRequestData.cpp

Issue 1233573002: [Fetch API] Remove DrainingBuffer. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/modules/fetch/FetchRequestData.cpp
diff --git a/Source/modules/fetch/FetchRequestData.cpp b/Source/modules/fetch/FetchRequestData.cpp
index 0a467dfcd011c52e8df70f6da440d4759bf25e25..7c58b55dc3727b0ae04dd40736d7b8f561b07b71 100644
--- a/Source/modules/fetch/FetchRequestData.cpp
+++ b/Source/modules/fetch/FetchRequestData.cpp
@@ -31,7 +31,7 @@ FetchRequestData* FetchRequestData::create(ExecutionContext* executionContext, c
for (HTTPHeaderMap::const_iterator it = webRequest.headers().begin(); it != webRequest.headers().end(); ++it)
request->m_headerList->append(it->key, it->value);
if (webRequest.blobDataHandle())
- request->setBuffer(BodyStreamBuffer::create(FetchBlobDataConsumerHandle::create(executionContext, webRequest.blobDataHandle())));
+ request->setBuffer(new BodyStreamBuffer(FetchBlobDataConsumerHandle::create(executionContext, webRequest.blobDataHandle())));
request->setContext(webRequest.requestContext());
request->m_referrer.setURL(webRequest.referrer());
request->setMode(webRequest.mode());
@@ -47,11 +47,15 @@ FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext)
request->m_method = m_method;
request->m_headerList = m_headerList->clone();
request->m_unsafeRequestFlag = m_unsafeRequestFlag;
- if (m_buffer) {
+ if (m_buffer->hasBody()) {
OwnPtr<FetchDataConsumerHandle> dest1, dest2;
- DataConsumerTee::create(executionContext, m_buffer->releaseHandle(), &dest1, &dest2);
- m_buffer = BodyStreamBuffer::create(dest1.release());
- request->m_buffer = BodyStreamBuffer::create(dest2.release());
+ // TODO(yhirano): unlock the buffer.
+ DataConsumerTee::create(executionContext, m_buffer->lock(executionContext), &dest1, &dest2);
+ m_buffer = new BodyStreamBuffer(dest1.release());
+ request->m_buffer = new BodyStreamBuffer(dest2.release());
+ } else {
+ m_buffer = new BodyStreamBuffer;
+ request->m_buffer = new BodyStreamBuffer;
}
request->m_origin = m_origin;
request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag;
@@ -66,7 +70,22 @@ FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext)
FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext)
{
- return clone(executionContext);
+ FetchRequestData* request = FetchRequestData::create();
+ request->m_url = m_url;
+ request->m_method = m_method;
+ request->m_headerList = m_headerList->clone();
+ request->m_unsafeRequestFlag = m_unsafeRequestFlag;
+ request->m_buffer = m_buffer;
+ m_buffer = new BodyStreamBuffer;
+ request->m_origin = m_origin;
+ request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag;
+ request->m_context = m_context;
+ request->m_referrer = m_referrer;
+ request->m_mode = m_mode;
+ request->m_credentials = m_credentials;
+ request->m_responseTainting = m_responseTainting;
+ request->m_mimeType = m_mimeType;
+ return request;
}
FetchRequestData::~FetchRequestData()
@@ -82,6 +101,7 @@ FetchRequestData::FetchRequestData()
, m_mode(WebURLRequest::FetchRequestModeNoCORS)
, m_credentials(WebURLRequest::FetchCredentialsModeOmit)
, m_responseTainting(BasicTainting)
+ , m_buffer(new BodyStreamBuffer)
{
}

Powered by Google App Engine
This is Rietveld 408576698