Coverage Report

Created: 2026-10-28 07:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibWeb/Streams/ReadableStreamGenericReader.cpp
Line
Count
Source
1
/*
2
 * Copyright (c) 2023, Matthew Olsson <mattco@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#include <LibJS/Runtime/Promise.h>
8
#include <LibJS/Runtime/PromiseCapability.h>
9
#include <LibWeb/Streams/AbstractOperations.h>
10
#include <LibWeb/Streams/ReadableStream.h>
11
#include <LibWeb/Streams/ReadableStreamGenericReader.h>
12
#include <LibWeb/WebIDL/Promise.h>
13
14
namespace Web::Streams {
15
16
// https://streams.spec.whatwg.org/#generic-reader-closed
17
JS::GCPtr<WebIDL::Promise> ReadableStreamGenericReaderMixin::closed()
18
0
{
19
    // 1. Return this.[[closedPromise]].
20
0
    return m_closed_promise;
21
0
}
22
23
// https://streams.spec.whatwg.org/#generic-reader-cancel
24
JS::NonnullGCPtr<WebIDL::Promise> ReadableStreamGenericReaderMixin::cancel(JS::Value reason)
25
0
{
26
    // 1. If this.[[stream]] is undefined, return a promise rejected with a TypeError exception.
27
0
    if (!m_stream) {
28
0
        WebIDL::SimpleException exception { WebIDL::SimpleExceptionType::TypeError, "No stream present to cancel"sv };
29
0
        return WebIDL::create_rejected_promise_from_exception(m_realm, move(exception));
30
0
    }
31
32
    // 2. Return ! ReadableStreamReaderGenericCancel(this, reason).
33
0
    return readable_stream_reader_generic_cancel(*this, reason);
34
0
}
35
36
ReadableStreamGenericReaderMixin::ReadableStreamGenericReaderMixin(JS::Realm& realm)
37
0
    : m_realm(realm)
38
0
{
39
0
}
40
41
void ReadableStreamGenericReaderMixin::visit_edges(JS::Cell::Visitor& visitor)
42
0
{
43
0
    visitor.visit(m_closed_promise);
44
0
    visitor.visit(m_stream);
45
0
    visitor.visit(m_realm);
46
0
}
47
48
}