mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-21 18:42:53 +00:00
LibWeb: Implement WritableStreamDefaultWriter.close()
This commit is contained in:
parent
0c441fa7af
commit
5f4da20a56
Notes:
sideshowbarker
2024-07-17 04:49:48 +09:00
Author: https://github.com/mattco98
Commit: 5f4da20a56
Pull-request: https://github.com/SerenityOS/serenity/pull/18265
Reviewed-by: https://github.com/linusg ✅
5 changed files with 39 additions and 1 deletions
|
@ -64,6 +64,29 @@ WebIDL::ExceptionOr<JS::GCPtr<JS::Object>> WritableStreamDefaultWriter::abort(JS
|
|||
return TRY(writable_stream_default_writer_abort(*this, reason))->promise();
|
||||
}
|
||||
|
||||
// https://streams.spec.whatwg.org/#default-writer-close
|
||||
WebIDL::ExceptionOr<JS::GCPtr<JS::Object>> WritableStreamDefaultWriter::close()
|
||||
{
|
||||
auto& realm = this->realm();
|
||||
|
||||
// 1. Let stream be this.[[stream]].
|
||||
|
||||
// 2. If stream is undefined, return a promise rejected with a TypeError exception.
|
||||
if (!m_stream) {
|
||||
auto exception = MUST_OR_THROW_OOM(JS::TypeError::create(realm, "Cannot close a writer that has no locked stream"sv));
|
||||
return WebIDL::create_rejected_promise(realm, exception)->promise();
|
||||
}
|
||||
|
||||
// 3. If ! WritableStreamCloseQueuedOrInFlight(stream) is true, return a promise rejected with a TypeError exception.
|
||||
if (writable_stream_close_queued_or_in_flight(*m_stream)) {
|
||||
auto exception = MUST_OR_THROW_OOM(JS::TypeError::create(realm, "Cannot close a stream that is already closed or errored"sv));
|
||||
return WebIDL::create_rejected_promise(realm, exception)->promise();
|
||||
}
|
||||
|
||||
// 4. Return ! WritableStreamDefaultWriterClose(this).
|
||||
return TRY(writable_stream_default_writer_close(*this))->promise();
|
||||
}
|
||||
|
||||
WritableStreamDefaultWriter::WritableStreamDefaultWriter(JS::Realm& realm)
|
||||
: Bindings::PlatformObject(realm)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue