1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef FetchBodyStream_h
6 #define FetchBodyStream_h
8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptWrappable.h"
11 #include "core/dom/ActiveDOMObject.h"
12 #include "core/fileapi/FileReaderLoader.h"
13 #include "core/fileapi/FileReaderLoaderClient.h"
14 #include "platform/blob/BlobData.h"
15 #include "platform/heap/Handle.h"
16 #include "wtf/RefCounted.h"
17 #include "wtf/RefPtr.h"
23 class FetchBodyStream FINAL
24 : public RefCountedWillBeGarbageCollectedFinalized<FetchBodyStream>
25 , public ScriptWrappable
26 , public ActiveDOMObject
27 , public FileReaderLoaderClient {
30 ResponseAsArrayBuffer,
37 static PassRefPtrWillBeRawPtr<FetchBodyStream> create(ExecutionContext*, PassRefPtr<BlobDataHandle>);
38 ~FetchBodyStream() { }
40 ScriptPromise asArrayBuffer(ScriptState*);
41 ScriptPromise asBlob(ScriptState*);
42 ScriptPromise asFormData(ScriptState*);
43 ScriptPromise asJSON(ScriptState*);
44 ScriptPromise asText(ScriptState*);
46 // ActiveDOMObject override.
47 virtual void stop() OVERRIDE;
48 virtual bool hasPendingActivity() const OVERRIDE;
50 void trace(Visitor*) { }
53 FetchBodyStream(ExecutionContext*, PassRefPtr<BlobDataHandle>);
54 ScriptPromise readAsync(ScriptState*, ResponseType);
57 // FileReaderLoaderClient functions.
58 virtual void didStartLoading() OVERRIDE;
59 virtual void didReceiveData() OVERRIDE;
60 virtual void didFinishLoading() OVERRIDE;
61 virtual void didFail(FileError::ErrorCode) OVERRIDE;
63 RefPtr<BlobDataHandle> m_blobDataHandle;
64 OwnPtr<FileReaderLoader> m_loader;
66 ResponseType m_responseType;
67 RefPtr<ScriptPromiseResolver> m_resolver;
72 #endif // FetchBodyStream_h