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

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

Issue 1018243002: [Fetch] Support various operations after reading data partially. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@async-read
Patch Set: Created 5 years, 9 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
« no previous file with comments | « Source/modules/fetch/Body.h ('k') | Source/modules/fetch/Response.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/fetch/Body.cpp
diff --git a/Source/modules/fetch/Body.cpp b/Source/modules/fetch/Body.cpp
index 798cd4b2b7418d2e0d238896a6e5409496b3be06..6b43a22094c661901cda9335c75f4c832d802de9 100644
--- a/Source/modules/fetch/Body.cpp
+++ b/Source/modules/fetch/Body.cpp
@@ -59,7 +59,7 @@ public:
Errored,
BodyUsed,
};
- ReadableStreamSource(Body* body) : m_body(body), m_state(Initial), m_queueCount(0)
+ ReadableStreamSource(Body* body) : m_body(body), m_state(Initial)
{
if (m_body->buffer()) {
m_bodyStreamBuffer = m_body->buffer();
@@ -100,13 +100,12 @@ public:
}
}
// Creates a new BodyStreamBuffer to drain the data.
- BodyStreamBuffer* createDrainingStream(bool* dataLost)
+ BodyStreamBuffer* createDrainingStream()
{
ASSERT(!m_drainingStreamBuffer);
ASSERT(m_state != Initial);
ASSERT(m_state != BodyUsed);
ASSERT(m_stream);
- ASSERT(dataLost);
m_drainingStreamBuffer = new BodyStreamBuffer();
if (m_state == Errored) {
m_drainingStreamBuffer->error(exception());
@@ -116,7 +115,6 @@ public:
Deque<std::pair<RefPtr<DOMArrayBuffer>, size_t>> tmp_queue;
if (m_stream->stateInternal() == ReadableStream::Readable)
m_stream->readInternal(tmp_queue);
- *dataLost = m_queueCount != tmp_queue.size();
while (!tmp_queue.isEmpty()) {
std::pair<RefPtr<DOMArrayBuffer>, size_t> data = tmp_queue.takeFirst();
m_drainingStreamBuffer->write(data.first);
@@ -183,12 +181,10 @@ private:
void write(PassRefPtr<DOMArrayBuffer> buf)
{
- if (m_drainingStreamBuffer) {
+ if (m_drainingStreamBuffer)
m_drainingStreamBuffer->write(buf);
- } else {
- ++m_queueCount;
+ else
m_stream->enqueue(buf);
- }
}
void close()
{
@@ -228,8 +224,6 @@ private:
Member<BodyStreamBuffer> m_drainingStreamBuffer;
Member<ReadableStreamImpl<ReadableStreamChunkTypeTraits<DOMArrayBuffer>>> m_stream;
State m_state;
- // The count of the chunks which were enqueued to the ReadableStream.
- size_t m_queueCount;
};
ScriptPromise Body::readAsync(ScriptState* scriptState, ResponseType type)
@@ -256,8 +250,7 @@ ScriptPromise Body::readAsync(ScriptState* scriptState, ResponseType type)
if (m_stream) {
ASSERT(m_streamSource);
- bool dataLost;
- m_streamSource->createDrainingStream(&dataLost)->readAllAndCreateBlobHandle(contentTypeForBuffer(), new BlobHandleReceiver(this));
+ m_streamSource->createDrainingStream()->readAllAndCreateBlobHandle(contentTypeForBuffer(), new BlobHandleReceiver(this));
} else if (buffer()) {
buffer()->readAllAndCreateBlobHandle(contentTypeForBuffer(), new BlobHandleReceiver(this));
} else {
@@ -369,10 +362,10 @@ bool Body::streamAccessed() const
return m_stream;
}
-BodyStreamBuffer* Body::createDrainingStream(bool* dataLost)
+BodyStreamBuffer* Body::createDrainingStream()
{
ASSERT(m_stream);
- BodyStreamBuffer* newBuffer = m_streamSource->createDrainingStream(dataLost);
+ BodyStreamBuffer* newBuffer = m_streamSource->createDrainingStream();
m_stream = nullptr;
m_streamSource = nullptr;
return newBuffer;
« no previous file with comments | « Source/modules/fetch/Body.h ('k') | Source/modules/fetch/Response.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698