/* * Copyright (c) 2025, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include template<> ErrorOr IPC::encode(Encoder& encoder, WebView::ConsoleLog const& log) { TRY(encoder.encode(log.level)); TRY(encoder.encode(log.arguments)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto level = TRY(decoder.decode()); auto arguments = TRY(decoder.decode>()); return WebView::ConsoleLog { level, move(arguments) }; } template<> ErrorOr IPC::encode(Encoder& encoder, WebView::StackFrame const& frame) { TRY(encoder.encode(frame.function)); TRY(encoder.encode(frame.file)); TRY(encoder.encode(frame.line)); TRY(encoder.encode(frame.column)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto function = TRY(decoder.decode>()); auto file = TRY(decoder.decode>()); auto line = TRY(decoder.decode>()); auto column = TRY(decoder.decode>()); return WebView::StackFrame { move(function), move(file), line, column }; } template<> ErrorOr IPC::encode(Encoder& encoder, WebView::ConsoleError const& error) { TRY(encoder.encode(error.name)); TRY(encoder.encode(error.message)); TRY(encoder.encode(error.trace)); TRY(encoder.encode(error.inside_promise)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto name = TRY(decoder.decode()); auto message = TRY(decoder.decode()); auto trace = TRY(decoder.decode>()); auto inside_promise = TRY(decoder.decode()); return WebView::ConsoleError { move(name), move(message), move(trace), inside_promise }; } template<> ErrorOr IPC::encode(Encoder& encoder, WebView::ConsoleOutput const& output) { TRY(encoder.encode(output.timestamp)); TRY(encoder.encode(output.output)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto timestamp = TRY(decoder.decode()); auto output = TRY(decoder.decode>()); return WebView::ConsoleOutput { timestamp, move(output) }; }