diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/streams/readable_stream_byob_reader.h')
-rw-r--r-- | chromium/third_party/blink/renderer/core/streams/readable_stream_byob_reader.h | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/chromium/third_party/blink/renderer/core/streams/readable_stream_byob_reader.h b/chromium/third_party/blink/renderer/core/streams/readable_stream_byob_reader.h index 198e915cca1..fb7ac5bc9b2 100644 --- a/chromium/third_party/blink/renderer/core/streams/readable_stream_byob_reader.h +++ b/chromium/third_party/blink/renderer/core/streams/readable_stream_byob_reader.h @@ -1,4 +1,4 @@ -// Copyright 2020 The Chromium AUthors. All rights reserved. +// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be found // in the LICENSE file. @@ -9,13 +9,16 @@ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/streams/readable_stream_generic_reader.h" #include "third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h" +#include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h" #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +#include "third_party/blink/renderer/platform/wtf/casting.h" namespace blink { class ExceptionState; class ScriptPromise; class ScriptState; +class StreamPromiseResolver; class ReadableStream; class DOMArrayBufferView; @@ -34,6 +37,9 @@ class CORE_EXPORT ReadableStreamBYOBReader ExceptionState&); ~ReadableStreamBYOBReader() override; + bool IsDefaultReader() const override { return false; } + bool IsBYOBReader() const override { return true; } + // https://streams.spec.whatwg.org/#byob-reader-read ScriptPromise read(ScriptState*, NotShared<DOMArrayBufferView> view, @@ -42,11 +48,51 @@ class CORE_EXPORT ReadableStreamBYOBReader // https://streams.spec.whatwg.org/#byob-reader-release-lock void releaseLock(ScriptState*, ExceptionState&); + // https://streams.spec.whatwg.org/#set-up-readable-stream-byob-reader + static void SetUpBYOBReader(ScriptState*, + ReadableStreamBYOBReader* reader, + ReadableStream* stream, + ExceptionState&); + + void Trace(Visitor*) const override; + private: + friend class ReadableByteStreamController; friend class ReadableStream; - static void ThrowUnimplemented(ExceptionState&); - static ScriptPromise RejectUnimplemented(ScriptState*); + + class ReadIntoRequest : public GarbageCollected<ReadIntoRequest> { + public: + explicit ReadIntoRequest(StreamPromiseResolver* resolver); + + void ChunkSteps(ScriptState*, DOMArrayBufferView* chunk) const; + void CloseSteps(ScriptState*, DOMArrayBufferView* chunk) const; + void ErrorSteps(ScriptState*, v8::Local<v8::Value> e) const; + + void Trace(Visitor*) const; + + private: + friend class ReadableStream; + + Member<StreamPromiseResolver> resolver_; + }; + + // https://streams.spec.whatwg.org/#readable-stream-byob-reader-read + static void Read(ScriptState*, + ReadableStreamBYOBReader*, + NotShared<DOMArrayBufferView> view, + ReadIntoRequest*, + ExceptionState&); + + HeapDeque<Member<ReadIntoRequest>> read_into_requests_; }; + +template <> +struct DowncastTraits<ReadableStreamBYOBReader> { + static bool AllowFrom(const ReadableStreamGenericReader& reader) { + return reader.IsBYOBReader(); + } +}; + } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_STREAMS_READABLE_STREAM_BYOB_READER_H_ |