Coverage Report

Created: 2025-11-02 07:25

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibWeb/Streams/TransformStreamDefaultController.cpp
Line
Count
Source
1
/*
2
 * Copyright (c) 2023-2024, Kenneth Myhra <kennethmyhra@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#include <LibWeb/Bindings/Intrinsics.h>
8
#include <LibWeb/Bindings/TransformStreamDefaultControllerPrototype.h>
9
#include <LibWeb/Streams/TransformStream.h>
10
#include <LibWeb/Streams/TransformStreamDefaultController.h>
11
12
namespace Web::Streams {
13
14
JS_DEFINE_ALLOCATOR(TransformStreamDefaultController);
15
16
TransformStreamDefaultController::TransformStreamDefaultController(JS::Realm& realm)
17
0
    : Bindings::PlatformObject(realm)
18
0
{
19
0
}
20
21
0
TransformStreamDefaultController::~TransformStreamDefaultController() = default;
22
23
void TransformStreamDefaultController::initialize(JS::Realm& realm)
24
0
{
25
0
    Base::initialize(realm);
26
0
    WEB_SET_PROTOTYPE_FOR_INTERFACE(TransformStreamDefaultController);
27
0
}
28
29
void TransformStreamDefaultController::visit_edges(Cell::Visitor& visitor)
30
0
{
31
0
    Base::visit_edges(visitor);
32
0
    visitor.visit(m_stream);
33
0
    visitor.visit(m_cancel_algorithm);
34
0
    visitor.visit(m_finish_promise);
35
0
    visitor.visit(m_flush_algorithm);
36
0
    visitor.visit(m_transform_algorithm);
37
0
}
38
39
// https://streams.spec.whatwg.org/#ts-default-controller-desired-size
40
Optional<double> TransformStreamDefaultController::desired_size()
41
0
{
42
0
    VERIFY(stream()->readable()->controller().has_value() && stream()->readable()->controller()->has<JS::NonnullGCPtr<ReadableStreamDefaultController>>());
43
44
    // 1. Let readableController be this.[[stream]].[[readable]].[[controller]].
45
0
    auto readable_controller = stream()->readable()->controller()->get<JS::NonnullGCPtr<ReadableStreamDefaultController>>();
46
47
    // 2. Return ! ReadableStreamDefaultControllerGetDesiredSize(readableController).
48
0
    return readable_stream_default_controller_get_desired_size(*readable_controller);
49
0
}
50
51
// https://streams.spec.whatwg.org/#ts-default-controller-enqueue
52
WebIDL::ExceptionOr<void> TransformStreamDefaultController::enqueue(Optional<JS::Value> chunk)
53
0
{
54
    // 1. Perform ? TransformStreamDefaultControllerEnqueue(this, chunk).
55
0
    TRY(transform_stream_default_controller_enqueue(*this, chunk.has_value() ? chunk.value() : JS::js_undefined()));
56
57
0
    return {};
58
0
}
59
60
// https://streams.spec.whatwg.org/#ts-default-controller-error
61
void TransformStreamDefaultController::error(Optional<JS::Value> reason)
62
0
{
63
    // 1. Perform ? TransformStreamDefaultControllerError(this, e).
64
0
    transform_stream_default_controller_error(*this, reason.has_value() ? reason.value() : JS::js_undefined());
65
0
}
66
67
// https://streams.spec.whatwg.org/#ts-default-controller-terminate
68
void TransformStreamDefaultController::terminate()
69
0
{
70
    // 1. Perform ? TransformStreamDefaultControllerTerminate(this).
71
0
    transform_stream_default_controller_terminate(*this);
72
0
}
73
74
}