1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-08 20:27:35 +00:00

LibWeb: Add ReadableStreamByteController interface

This commit is contained in:
Matthew Olsson 2023-04-11 16:33:32 -07:00 committed by Linus Groh
parent c7aa4fa166
commit 819b6332d1
10 changed files with 253 additions and 1 deletions

View file

@ -0,0 +1,38 @@
/*
* Copyright (c) 2023, Matthew Olsson <mattco@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/Streams/ReadableByteStreamController.h>
#include <LibWeb/Streams/ReadableStream.h>
#include <LibWeb/Streams/ReadableStreamBYOBRequest.h>
namespace Web::Streams {
// https://streams.spec.whatwg.org/#rbs-controller-desired-size
Optional<double> ReadableByteStreamController::desired_size() const
{
// 1. Return ! ReadableByteStreamControllerGetDesiredSize(this).
return readable_byte_stream_controller_get_desired_size(*this);
}
ReadableByteStreamController::ReadableByteStreamController(JS::Realm& realm)
: Bindings::PlatformObject(realm)
{
}
void ReadableByteStreamController::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_byob_request);
for (auto const& pending_pull_into : m_pending_pull_intos) {
visitor.visit(pending_pull_into.buffer);
visitor.visit(pending_pull_into.view_constructor);
}
for (auto const& item : m_queue)
visitor.visit(item.buffer);
visitor.visit(m_stream);
}
}