Przeglądaj źródła

LibWeb: Add AO transform_stream_default_sink_abort_algorithm()

Kenneth Myhra 2 lat temu
rodzic
commit
48921add86

+ 12 - 0
Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp

@@ -2845,6 +2845,18 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<WebIDL::Promise>> transform_stream_default_
     return WebIDL::create_resolved_promise(realm, react_result);
 }
 
+// https://streams.spec.whatwg.org/#transform-stream-default-sink-abort-algorithm
+WebIDL::ExceptionOr<JS::NonnullGCPtr<WebIDL::Promise>> transform_stream_default_sink_abort_algorithm(TransformStream& stream, JS::Value reason)
+{
+    auto& realm = stream.realm();
+
+    // 1. Perform ! TransformStreamError(stream, reason).
+    TRY(transform_stream_error(stream, reason));
+
+    // 2. Return a promise resolved with undefined.
+    return WebIDL::create_resolved_promise(realm, JS::js_undefined());
+}
+
 // https://streams.spec.whatwg.org/#transform-stream-default-sink-write-algorithm
 WebIDL::ExceptionOr<JS::NonnullGCPtr<WebIDL::Promise>> transform_stream_default_sink_write_algorithm(TransformStream& stream, JS::Value chunk)
 {

+ 1 - 0
Userland/Libraries/LibWeb/Streams/AbstractOperations.h

@@ -138,6 +138,7 @@ WebIDL::ExceptionOr<void> transform_stream_default_controller_enqueue(TransformS
 WebIDL::ExceptionOr<void> transform_stream_default_controller_error(TransformStreamDefaultController&, JS::Value error);
 WebIDL::ExceptionOr<void> transform_stream_default_controller_terminate(TransformStreamDefaultController&);
 WebIDL::ExceptionOr<JS::NonnullGCPtr<WebIDL::Promise>> transform_stream_default_controller_perform_transform(TransformStreamDefaultController&, JS::Value chunk);
+WebIDL::ExceptionOr<JS::NonnullGCPtr<WebIDL::Promise>> transform_stream_default_sink_abort_algorithm(TransformStream&, JS::Value reason);
 WebIDL::ExceptionOr<JS::NonnullGCPtr<WebIDL::Promise>> transform_stream_default_sink_write_algorithm(TransformStream&, JS::Value chunk);
 WebIDL::ExceptionOr<void> transform_stream_error(TransformStream&, JS::Value error);
 WebIDL::ExceptionOr<void> transform_stream_error_writable_and_unblock_write(TransformStream&, JS::Value error);