/src/serenity/Userland/Libraries/LibWeb/Streams/UnderlyingSink.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/VM.h> |
8 | | #include <LibWeb/Streams/AbstractOperations.h> |
9 | | #include <LibWeb/Streams/UnderlyingSink.h> |
10 | | #include <LibWeb/WebIDL/CallbackType.h> |
11 | | |
12 | | namespace Web::Streams { |
13 | | |
14 | | JS::ThrowCompletionOr<UnderlyingSink> UnderlyingSink::from_value(JS::VM& vm, JS::Value value) |
15 | 0 | { |
16 | 0 | if (!value.is_object()) |
17 | 0 | return UnderlyingSink {}; |
18 | | |
19 | 0 | auto& object = value.as_object(); |
20 | |
|
21 | 0 | UnderlyingSink underlying_sink { |
22 | 0 | .start = TRY(property_to_callback(vm, value, "start", WebIDL::OperationReturnsPromise::No)), |
23 | 0 | .write = TRY(property_to_callback(vm, value, "write", WebIDL::OperationReturnsPromise::Yes)), |
24 | 0 | .close = TRY(property_to_callback(vm, value, "close", WebIDL::OperationReturnsPromise::Yes)), |
25 | 0 | .abort = TRY(property_to_callback(vm, value, "abort", WebIDL::OperationReturnsPromise::Yes)), |
26 | 0 | .type = {}, |
27 | 0 | }; |
28 | |
|
29 | 0 | if (TRY(object.has_property("type"))) |
30 | 0 | underlying_sink.type = TRY(object.get("type")); |
31 | |
|
32 | 0 | return underlying_sink; |
33 | 0 | } |
34 | | |
35 | | } |