2023-04-10 18:37:27 -07:00
/*
* Copyright ( c ) 2023 , Matthew Olsson < mattco @ serenityos . org >
2023-11-25 22:18:43 +13:00
* Copyright ( c ) 2023 , Shannon Booth < shannon @ serenityos . org >
2023-04-10 18:37:27 -07:00
*
* SPDX - License - Identifier : BSD - 2 - Clause
*/
# pragma once
# include <LibJS/Runtime/TypedArray.h>
# include <LibWeb/Bindings/PlatformObject.h>
2023-04-08 06:31:36 -07:00
# include <LibWeb/Forward.h>
# include <LibWeb/Streams/ReadableByteStreamController.h>
2023-04-10 18:37:27 -07:00
namespace Web : : Streams {
// https://streams.spec.whatwg.org/#readablestreambyobrequest
class ReadableStreamBYOBRequest : public Bindings : : PlatformObject {
WEB_PLATFORM_OBJECT ( ReadableStreamBYOBRequest , Bindings : : PlatformObject ) ;
2023-11-19 19:47:52 +01:00
JS_DECLARE_ALLOCATOR ( ReadableStreamBYOBRequest ) ;
2023-04-10 18:37:27 -07:00
public :
virtual ~ ReadableStreamBYOBRequest ( ) override = default ;
2023-11-25 22:18:43 +13:00
JS : : GCPtr < WebIDL : : ArrayBufferView > view ( ) ;
2023-04-10 18:37:27 -07:00
2023-04-08 06:31:36 -07:00
void set_controller ( JS : : GCPtr < ReadableByteStreamController > value ) { m_controller = value ; }
2023-11-25 22:18:43 +13:00
void set_view ( JS : : GCPtr < WebIDL : : ArrayBufferView > value ) { m_view = value ; }
2023-04-08 06:31:36 -07:00
2023-04-10 18:37:27 -07:00
private :
explicit ReadableStreamBYOBRequest ( JS : : Realm & ) ;
2023-12-02 20:04:31 +13:00
virtual void initialize ( JS : : Realm & ) override ;
2023-04-10 18:37:27 -07:00
virtual void visit_edges ( Cell : : Visitor & ) override ;
// https://streams.spec.whatwg.org/#readablestreambyobrequest-controller
// The parent ReadableByteStreamController instance
2023-04-11 16:33:32 -07:00
JS : : GCPtr < ReadableByteStreamController > m_controller ;
2023-04-10 18:37:27 -07:00
// https://streams.spec.whatwg.org/#readablestreambyobrequest-view
// A typed array representing the destination region to which the controller can write generated data, or null after the BYOB request has been invalidated.
2023-11-25 22:18:43 +13:00
JS : : GCPtr < WebIDL : : ArrayBufferView > m_view ;
2023-04-10 18:37:27 -07:00
} ;
}