Index: Source/modules/fetch/Body.h |
diff --git a/Source/modules/fetch/Body.h b/Source/modules/fetch/Body.h |
index 6a9435d7bf9c4ea313fb574ab3d1aac6590aa943..02d348440b375a7528e2bd5b3abb341953279ca2 100644 |
--- a/Source/modules/fetch/Body.h |
+++ b/Source/modules/fetch/Body.h |
@@ -10,16 +10,16 @@ |
#include "bindings/core/v8/ScriptWrappable.h" |
#include "core/dom/ActiveDOMObject.h" |
#include "core/dom/DOMArrayBuffer.h" |
-#include "core/fileapi/FileReaderLoader.h" |
-#include "core/fileapi/FileReaderLoaderClient.h" |
#include "modules/ModulesExport.h" |
+#include "modules/fetch/FetchDataConsumerHandle.h" |
+#include "modules/fetch/FetchDataLoader.h" |
#include "platform/blob/BlobData.h" |
#include "platform/heap/Handle.h" |
#include "wtf/RefPtr.h" |
namespace blink { |
-class BodyStreamBuffer; |
+class BodyStreamBuffer2; |
class BodyStreamSource; |
class DOMException; |
class ReadableByteStream; |
@@ -29,9 +29,9 @@ class MODULES_EXPORT Body |
: public GarbageCollectedFinalized<Body> |
, public ScriptWrappable |
, public ActiveDOMObject |
- , public FileReaderLoaderClient { |
+ , public FetchDataLoader::Client { |
DEFINE_WRAPPERTYPEINFO(); |
- WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(Body); |
+ USING_GARBAGE_COLLECTED_MIXIN(Body); |
public: |
class ReadableStreamSource; |
enum ResponseType { |
@@ -65,28 +65,24 @@ public: |
// Sets |m_stream| to a newly created stream from |source|. |
void setBody(ReadableStreamSource* /* source */); |
- void setBody(PassRefPtr<BlobDataHandle> handle) |
- { |
- setBody(createBodySource(handle)); |
- } |
- void setBody(BodyStreamBuffer* buffer) |
+ // |buffer| can be null. |
+ void setBody(BodyStreamBuffer2* buffer) |
{ |
setBody(createBodySource(buffer)); |
} |
// Creates a new BodyStreamBuffer to drain the data from the ReadableStream. |
- BodyStreamBuffer* createDrainingStream(); |
+ BodyStreamBuffer2* createDrainingStream(); |
// ActiveDOMObject override. |
virtual void stop() override; |
virtual bool hasPendingActivity() const override; |
- ReadableStreamSource* createBodySource(PassRefPtr<BlobDataHandle>); |
- ReadableStreamSource* createBodySource(BodyStreamBuffer*); |
+ ReadableStreamSource* createBodySource(BodyStreamBuffer2*); |
DECLARE_VIRTUAL_TRACE(); |
- BodyStreamBuffer* bufferForTest() const { return buffer(); } |
+ BodyStreamBuffer2* bufferForTest() const { return buffer(); } |
private: |
class BlobHandleReceiver; |
@@ -95,27 +91,22 @@ private: |
void readAllFromStream(); |
ScriptPromise readAsync(ScriptState*, ResponseType); |
void readAsyncFromBlob(PassRefPtr<BlobDataHandle>); |
+ void readAsyncFromFetchDataConsumerHandle(BodyStreamBuffer2*, const String& mimeType); |
void resolveJSON(const String&); |
- // FileReaderLoaderClient functions. |
- virtual void didStartLoading() override; |
- virtual void didReceiveData() override; |
- virtual void didFinishLoading() override; |
- virtual void didFail(FileError::ErrorCode) override; |
- |
- void didBlobHandleReceiveError(DOMException*); |
+ // FetchDataLoader::Client functions. |
+ void didFetchDataLoadFailed() override; |
+ void didFetchDataLoadedBlobHandle(PassRefPtr<BlobDataHandle>) override; |
+ void didFetchDataLoadedArrayBuffer(PassRefPtr<DOMArrayBuffer>) override; |
+ void didFetchDataLoadedString(const String&) override; |
- // We use BlobDataHandle or BodyStreamBuffer as data container of the Body. |
- // BodyStreamBuffer is used only when the Response object is created by |
- // fetch() API. |
- // FIXME: We should seek a cleaner way to handle the data. |
- virtual PassRefPtr<BlobDataHandle> blobDataHandle() const = 0; |
- virtual BodyStreamBuffer* buffer() const = 0; |
+ // We use BodyStreamBuffer2 as data container of the Body. |
+ virtual BodyStreamBuffer2* buffer() const = 0; |
virtual String mimeType() const = 0; |
void didFinishLoadingViaStream(PassRefPtr<DOMArrayBuffer>); |
- OwnPtr<FileReaderLoader> m_loader; |
+ Member<FetchDataLoader> m_fetchDataLoader; |
bool m_bodyUsed; |
ResponseType m_responseType; |
RefPtrWillBeMember<ScriptPromiseResolver> m_resolver; |