mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 09:48:11 +00:00
LibWeb: Implement ReadableByteStreamController.close()
This commit is contained in:
parent
ef3810d03d
commit
c9be755367
5 changed files with 71 additions and 1 deletions
|
@ -18,6 +18,25 @@ Optional<double> ReadableByteStreamController::desired_size() const
|
|||
return readable_byte_stream_controller_get_desired_size(*this);
|
||||
}
|
||||
|
||||
// https://streams.spec.whatwg.org/#rbs-controller-close
|
||||
WebIDL::ExceptionOr<void> ReadableByteStreamController::close()
|
||||
{
|
||||
// 1. If this.[[closeRequested]] is true, throw a TypeError exception.
|
||||
if (m_close_requested)
|
||||
return WebIDL::SimpleException { WebIDL::SimpleExceptionType::TypeError, "Controller is already closed"sv };
|
||||
|
||||
// 2. If this.[[stream]].[[state]] is not "readable", throw a TypeError exception.
|
||||
if (m_stream->state() != ReadableStream::State::Readable) {
|
||||
auto message = m_stream->state() == ReadableStream::State::Closed ? "Cannot close a closed stream"sv : "Cannot close an errored stream"sv;
|
||||
return WebIDL::SimpleException { WebIDL::SimpleExceptionType::TypeError, message };
|
||||
}
|
||||
|
||||
// 3. Perform ? ReadableByteStreamControllerClose(this).
|
||||
TRY(readable_byte_stream_controller_close(*this));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
ReadableByteStreamController::ReadableByteStreamController(JS::Realm& realm)
|
||||
: Bindings::PlatformObject(realm)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue