1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:17:45 +00:00

LibWeb: Add AO transform_stream_set_backpressure()

This commit is contained in:
Kenneth Myhra 2023-07-07 16:09:27 +02:00 committed by Andreas Kling
parent d8d0e8a6ea
commit 91f58eb220
2 changed files with 23 additions and 0 deletions

View file

@ -21,6 +21,7 @@
#include <LibWeb/Streams/ReadableStreamDefaultController.h>
#include <LibWeb/Streams/ReadableStreamDefaultReader.h>
#include <LibWeb/Streams/ReadableStreamGenericReader.h>
#include <LibWeb/Streams/TransformStream.h>
#include <LibWeb/Streams/TransformStreamDefaultController.h>
#include <LibWeb/Streams/UnderlyingSink.h>
#include <LibWeb/Streams/UnderlyingSource.h>
@ -2733,6 +2734,27 @@ void transform_stream_default_controller_clear_algorithms(TransformStreamDefault
controller.set_flush_algorithm({});
}
// https://streams.spec.whatwg.org/#transform-stream-set-backpressure
WebIDL::ExceptionOr<void> transform_stream_set_backpressure(TransformStream& stream, bool backpressure)
{
auto& realm = stream.realm();
// 1. Assert: stream.[[backpressure]] is not backpressure.
VERIFY(stream.backpressure() != backpressure);
// 2. If stream.[[backpressureChangePromise]] is not undefined, resolve stream.[[backpressureChangePromise]] with undefined.
if (stream.backpressure_change_promise())
WebIDL::resolve_promise(realm, *stream.backpressure_change_promise(), JS::js_undefined());
// 3. Set stream.[[backpressureChangePromise]] to a new promise.
stream.set_backpressure_change_promise(WebIDL::create_promise(realm));
// 4. Set stream.[[backpressure]] to backpressure.
stream.set_backpressure(backpressure);
return {};
}
// https://streams.spec.whatwg.org/#is-non-negative-number
bool is_non_negative_number(JS::Value value)
{