/* * Copyright (c) 2023, Matthew Olsson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::Streams { // https://streams.spec.whatwg.org/#readablestreamgenericreader class ReadableStreamGenericReaderMixin { public: virtual ~ReadableStreamGenericReaderMixin() = default; GC::Ptr closed(); GC::Ref cancel(JS::Value reason); GC::Ptr stream() const { return m_stream; } void set_stream(GC::Ptr stream) { m_stream = stream; } GC::Ptr closed_promise_capability() { return m_closed_promise; } void set_closed_promise_capability(GC::Ptr promise) { m_closed_promise = promise; } protected: explicit ReadableStreamGenericReaderMixin(JS::Realm&); void visit_edges(JS::Cell::Visitor&); // https://streams.spec.whatwg.org/#readablestreamgenericreader-closedpromise // A promise returned by the reader's closed getter GC::Ptr m_closed_promise; // https://streams.spec.whatwg.org/#readablestreamgenericreader-stream // A ReadableStream instance that owns this reader GC::Ptr m_stream; GC::Ref m_realm; }; }