Index: Source/modules/fetch/BodyStreamBuffer.cpp |
diff --git a/Source/modules/fetch/BodyStreamBuffer.cpp b/Source/modules/fetch/BodyStreamBuffer.cpp |
index 3c98e3ee5d588101a847150e7632d971969ca05e..0b02692e7ca0e261761286cf990a17104b1b7537 100644 |
--- a/Source/modules/fetch/BodyStreamBuffer.cpp |
+++ b/Source/modules/fetch/BodyStreamBuffer.cpp |
@@ -12,129 +12,6 @@ namespace blink { |
namespace { |
-class BlobCreator final : public BodyStreamBuffer::Observer { |
-public: |
- BlobCreator(BodyStreamBuffer* buffer, const String& contentType, BodyStreamBuffer::BlobHandleCreatorClient* client) |
- : m_buffer(buffer) |
- , m_client(client) |
- , m_blobData(BlobData::create()) |
- { |
- m_blobData->setContentType(contentType); |
- } |
- ~BlobCreator() override { } |
- DEFINE_INLINE_VIRTUAL_TRACE() |
- { |
- visitor->trace(m_buffer); |
- visitor->trace(m_client); |
- BodyStreamBuffer::Observer::trace(visitor); |
- } |
- void onWrite() override |
- { |
- ASSERT(m_buffer); |
- while (RefPtr<DOMArrayBuffer> buf = m_buffer->read()) { |
- m_blobData->appendBytes(buf->data(), buf->byteLength()); |
- } |
- } |
- void onClose() override |
- { |
- ASSERT(m_buffer); |
- const long long size = m_blobData->length(); |
- m_client->didCreateBlobHandle(BlobDataHandle::create(m_blobData.release(), size)); |
- cleanup(); |
- } |
- void onError() override |
- { |
- ASSERT(m_buffer); |
- m_client->didFail(m_buffer->exception()); |
- cleanup(); |
- } |
- void start() |
- { |
- ASSERT(!m_buffer->isObserverRegistered()); |
- m_buffer->registerObserver(this); |
- onWrite(); |
- if (m_buffer->hasError()) { |
- return onError(); |
- } |
- if (m_buffer->isClosed()) |
- return onClose(); |
- } |
- void cleanup() |
- { |
- m_buffer->unregisterObserver(); |
- m_buffer.clear(); |
- m_client.clear(); |
- m_blobData.clear(); |
- } |
-private: |
- Member<BodyStreamBuffer> m_buffer; |
- Member<BodyStreamBuffer::BlobHandleCreatorClient> m_client; |
- OwnPtr<BlobData> m_blobData; |
-}; |
- |
-class StreamTeePump : public BodyStreamBuffer::Observer { |
-public: |
- StreamTeePump(BodyStreamBuffer* inBuffer, BodyStreamBuffer* outBuffer1, BodyStreamBuffer* outBuffer2) |
- : m_inBuffer(inBuffer) |
- , m_outBuffer1(outBuffer1) |
- , m_outBuffer2(outBuffer2) |
- { |
- } |
- void onWrite() override |
- { |
- while (RefPtr<DOMArrayBuffer> buf = m_inBuffer->read()) { |
- if (!m_outBuffer1->isClosed() && !m_outBuffer1->hasError()) |
- m_outBuffer1->write(buf); |
- if (!m_outBuffer2->isClosed() && !m_outBuffer2->hasError()) |
- m_outBuffer2->write(buf); |
- } |
- } |
- void onClose() override |
- { |
- if (!m_outBuffer1->isClosed() && !m_outBuffer1->hasError()) |
- m_outBuffer1->close(); |
- if (!m_outBuffer2->isClosed() && !m_outBuffer2->hasError()) |
- m_outBuffer2->close(); |
- cleanup(); |
- } |
- void onError() override |
- { |
- if (!m_outBuffer1->isClosed() && !m_outBuffer1->hasError()) |
- m_outBuffer1->error(m_inBuffer->exception()); |
- if (!m_outBuffer2->isClosed() && !m_outBuffer2->hasError()) |
- m_outBuffer2->error(m_inBuffer->exception()); |
- cleanup(); |
- } |
- DEFINE_INLINE_VIRTUAL_TRACE() |
- { |
- BodyStreamBuffer::Observer::trace(visitor); |
- visitor->trace(m_inBuffer); |
- visitor->trace(m_outBuffer1); |
- visitor->trace(m_outBuffer2); |
- } |
- void start() |
- { |
- m_inBuffer->registerObserver(this); |
- onWrite(); |
- if (m_inBuffer->hasError()) |
- return onError(); |
- if (m_inBuffer->isClosed()) |
- return onClose(); |
- } |
- |
-private: |
- void cleanup() |
- { |
- m_inBuffer->unregisterObserver(); |
- m_inBuffer.clear(); |
- m_outBuffer1.clear(); |
- m_outBuffer2.clear(); |
- } |
- Member<BodyStreamBuffer> m_inBuffer; |
- Member<BodyStreamBuffer> m_outBuffer1; |
- Member<BodyStreamBuffer> m_outBuffer2; |
-}; |
- |
// WebDataConsumerHandleAdapter is used to migrate incrementally |
// from BodyStreamBuffer to FetchDataConsumerHandle and will be removed |
// after the migration. |
@@ -264,24 +141,6 @@ void BodyStreamBuffer::error(DOMException* exception) |
m_observer->onError(); |
} |
-bool BodyStreamBuffer::readAllAndCreateBlobHandle(const String& contentType, BlobHandleCreatorClient* client) |
-{ |
- if (m_observer) |
- return false; |
- BlobCreator* blobCreator = new BlobCreator(this, contentType, client); |
- blobCreator->start(); |
- return true; |
-} |
- |
-bool BodyStreamBuffer::startTee(BodyStreamBuffer* out1, BodyStreamBuffer* out2) |
-{ |
- if (m_observer) |
- return false; |
- StreamTeePump* teePump = new StreamTeePump(this, out1, out2); |
- teePump->start(); |
- return true; |
-} |
- |
bool BodyStreamBuffer::registerObserver(Observer* observer) |
{ |
if (m_observer) |