/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_ReadableStreamBYOBReader_h #define mozilla_dom_ReadableStreamBYOBReader_h #include "ReadableStreamGenericReader.h" #include "js/TypeDecls.h" #include "mozilla/Attributes.h" #include "mozilla/ErrorResult.h" #include "mozilla/LinkedList.h" #include "mozilla/dom/BindingDeclarations.h" #include "mozilla/dom/TypedArray.h" #include "nsCycleCollectionParticipant.h" #include "nsWrapperCache.h" namespace mozilla::dom { class Promise; struct ReadIntoRequest; class ReadableStream; struct ReadableStreamBYOBReaderReadOptions; } // namespace mozilla::dom namespace mozilla::dom { class ReadableStreamBYOBReader final : public ReadableStreamGenericReader, public nsWrapperCache { public: NS_DECL_ISUPPORTS_INHERITED NS_DECL_CYCLE_COLLECTION_WRAPPERCACHE_CLASS_INHERITED( ReadableStreamBYOBReader, ReadableStreamGenericReader) public: explicit ReadableStreamBYOBReader(nsISupports* aGlobal); bool IsDefault() override { return false; }; bool IsBYOB() override { return true; } ReadableStreamDefaultReader* AsDefault() override { MOZ_CRASH("Should have verified IsDefault first"); return nullptr; } ReadableStreamBYOBReader* AsBYOB() override { return this; } JSObject* WrapObject(JSContext* aCx, JS::Handle aGivenProto) override; static already_AddRefed Constructor( const GlobalObject& global, ReadableStream& stream, ErrorResult& rv); MOZ_CAN_RUN_SCRIPT already_AddRefed Read( const ArrayBufferView& aArray, const ReadableStreamBYOBReaderReadOptions& aOptions, ErrorResult& rv); void ReleaseLock(ErrorResult& rv); LinkedList>& ReadIntoRequests() { return mReadIntoRequests; } private: ~ReadableStreamBYOBReader() override = default; LinkedList> mReadIntoRequests; }; } // namespace mozilla::dom #endif // mozilla_dom_ReadableStreamBYOBReader_h