Coverage Report

Created: 2025-12-18 07:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibWeb/Streams/WritableStreamDefaultWriter.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2023, Matthew Olsson <mattco@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <AK/Function.h>
10
#include <AK/SinglyLinkedList.h>
11
#include <LibJS/Forward.h>
12
#include <LibWeb/Bindings/PlatformObject.h>
13
#include <LibWeb/Forward.h>
14
#include <LibWeb/WebIDL/Promise.h>
15
16
namespace Web::Streams {
17
18
// https://streams.spec.whatwg.org/#writablestreamdefaultwriter
19
class WritableStreamDefaultWriter final : public Bindings::PlatformObject {
20
    WEB_PLATFORM_OBJECT(WritableStreamDefaultWriter, Bindings::PlatformObject);
21
    JS_DECLARE_ALLOCATOR(WritableStreamDefaultWriter);
22
23
public:
24
    static WebIDL::ExceptionOr<JS::NonnullGCPtr<WritableStreamDefaultWriter>> construct_impl(JS::Realm&, JS::NonnullGCPtr<WritableStream>);
25
26
    virtual ~WritableStreamDefaultWriter() override = default;
27
28
    JS::GCPtr<JS::Object> closed();
29
    WebIDL::ExceptionOr<Optional<double>> desired_size() const;
30
    JS::GCPtr<JS::Object> ready();
31
    JS::GCPtr<JS::Object> abort(JS::Value reason);
32
    JS::GCPtr<JS::Object> close();
33
    void release_lock();
34
    JS::GCPtr<JS::Object> write(JS::Value chunk);
35
36
0
    JS::GCPtr<WebIDL::Promise> closed_promise() { return m_closed_promise; }
37
0
    void set_closed_promise(JS::GCPtr<WebIDL::Promise> value) { m_closed_promise = value; }
38
39
0
    JS::GCPtr<WebIDL::Promise> ready_promise() { return m_ready_promise; }
40
0
    void set_ready_promise(JS::GCPtr<WebIDL::Promise> value) { m_ready_promise = value; }
41
42
0
    JS::GCPtr<WritableStream const> stream() const { return m_stream; }
43
0
    JS::GCPtr<WritableStream> stream() { return m_stream; }
44
0
    void set_stream(JS::GCPtr<WritableStream> value) { m_stream = value; }
45
46
private:
47
    explicit WritableStreamDefaultWriter(JS::Realm&);
48
49
    virtual void initialize(JS::Realm&) override;
50
51
    virtual void visit_edges(Cell::Visitor&) override;
52
53
    // https://streams.spec.whatwg.org/#writablestreamdefaultwriter-closedpromise
54
    // A promise returned by the writer’s closed getter
55
    JS::GCPtr<WebIDL::Promise> m_closed_promise;
56
57
    // https://streams.spec.whatwg.org/#writablestreamdefaultwriter-readypromise
58
    // A promise returned by the writer’s ready getter
59
    JS::GCPtr<WebIDL::Promise> m_ready_promise;
60
61
    // https://streams.spec.whatwg.org/#writablestreamdefaultwriter-stream
62
    // A WritableStream instance that owns this reader
63
    JS::GCPtr<WritableStream> m_stream;
64
};
65
66
}