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

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
Index: Source/modules/fetch/Body.cpp
diff --git a/Source/modules/fetch/Body.cpp b/Source/modules/fetch/Body.cpp
index 798cd4b2b7418d2e0d238896a6e5409496b3be06..925e432d85a189e1ebff05da31f4293254279011 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);
@@ -186,7 +184,6 @@ private:
if (m_drainingStreamBuffer) {
horo 2015/03/20 02:28:54 nit: we can remove brackets.
yhirano 2015/03/20 03:24:49 Done.
m_drainingStreamBuffer->write(buf);
} else {
- ++m_queueCount;
m_stream->enqueue(buf);
}
}
@@ -228,8 +225,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 +251,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 +363,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;

Powered by Google App Engine
This is Rietveld 408576698