diff --git a/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.cpp b/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.cpp index 84b8fd74f6..d22a51f320 100644 --- a/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.cpp +++ b/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.cpp @@ -43,4 +43,13 @@ Optional TransformStreamDefaultController::desired_size() return readable_stream_default_controller_get_desired_size(*readable_controller); } +// https://streams.spec.whatwg.org/#ts-default-controller-error +WebIDL::ExceptionOr TransformStreamDefaultController::error(Optional reason) +{ + // 1. Perform ? TransformStreamDefaultControllerError(this, e). + TRY(transform_stream_default_controller_error(*this, reason.has_value() ? reason.value() : JS::js_undefined())); + + return {}; +} + } diff --git a/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.h b/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.h index 8854941a4d..5d14122b44 100644 --- a/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.h +++ b/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.h @@ -19,6 +19,7 @@ public: virtual ~TransformStreamDefaultController() override; Optional desired_size(); + WebIDL::ExceptionOr error(Optional reason = {}); auto& flush_algorithm() { return m_flush_algorithm; } void set_flush_algorithm(Optional&& value) { m_flush_algorithm = move(value); } diff --git a/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.idl b/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.idl index fefd284d54..9b2859062e 100644 --- a/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.idl +++ b/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.idl @@ -4,6 +4,6 @@ interface TransformStreamDefaultController { readonly attribute unrestricted double? desiredSize; // FIXME: undefined enqueue(optional any chunk); - // FIXME: undefined error(optional any reason); + undefined error(optional any reason); // FIXME: undefined terminate(); };