mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-05 15:49:11 +00:00
LibDevTools+LibWebView+WebContent: Report exceptions to DevTools
This commit is contained in:
parent
5d0fbc85e5
commit
9eca5febd1
Notes:
github-actions[bot]
2025-03-27 14:15:04 +00:00
Author: https://github.com/trflynn89
Commit: 9eca5febd1
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4117
Reviewed-by: https://github.com/gmta ✅
4 changed files with 232 additions and 45 deletions
|
@ -9,11 +9,72 @@
|
|||
#include <LibWebView/ConsoleOutput.h>
|
||||
|
||||
template<>
|
||||
ErrorOr<void> IPC::encode(Encoder& encoder, WebView::ConsoleOutput const& console_output)
|
||||
ErrorOr<void> IPC::encode(Encoder& encoder, WebView::ConsoleLog const& log)
|
||||
{
|
||||
TRY(encoder.encode(console_output.level));
|
||||
TRY(encoder.encode(console_output.timestamp));
|
||||
TRY(encoder.encode(console_output.arguments));
|
||||
TRY(encoder.encode(log.level));
|
||||
TRY(encoder.encode(log.arguments));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
template<>
|
||||
ErrorOr<WebView::ConsoleLog> IPC::decode(Decoder& decoder)
|
||||
{
|
||||
auto level = TRY(decoder.decode<JS::Console::LogLevel>());
|
||||
auto arguments = TRY(decoder.decode<Vector<JsonValue>>());
|
||||
|
||||
return WebView::ConsoleLog { level, move(arguments) };
|
||||
}
|
||||
|
||||
template<>
|
||||
ErrorOr<void> 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<WebView::StackFrame> IPC::decode(Decoder& decoder)
|
||||
{
|
||||
auto function = TRY(decoder.decode<Optional<String>>());
|
||||
auto file = TRY(decoder.decode<Optional<String>>());
|
||||
auto line = TRY(decoder.decode<Optional<size_t>>());
|
||||
auto column = TRY(decoder.decode<Optional<size_t>>());
|
||||
|
||||
return WebView::StackFrame { move(function), move(file), line, column };
|
||||
}
|
||||
|
||||
template<>
|
||||
ErrorOr<void> 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<WebView::ConsoleError> IPC::decode(Decoder& decoder)
|
||||
{
|
||||
auto name = TRY(decoder.decode<String>());
|
||||
auto message = TRY(decoder.decode<String>());
|
||||
auto trace = TRY(decoder.decode<Vector<WebView::StackFrame>>());
|
||||
auto inside_promise = TRY(decoder.decode<bool>());
|
||||
|
||||
return WebView::ConsoleError { move(name), move(message), move(trace), inside_promise };
|
||||
}
|
||||
|
||||
template<>
|
||||
ErrorOr<void> IPC::encode(Encoder& encoder, WebView::ConsoleOutput const& output)
|
||||
{
|
||||
TRY(encoder.encode(output.timestamp));
|
||||
TRY(encoder.encode(output.output));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
@ -21,9 +82,8 @@ ErrorOr<void> IPC::encode(Encoder& encoder, WebView::ConsoleOutput const& consol
|
|||
template<>
|
||||
ErrorOr<WebView::ConsoleOutput> IPC::decode(Decoder& decoder)
|
||||
{
|
||||
auto level = TRY(decoder.decode<JS::Console::LogLevel>());
|
||||
auto timestamp = TRY(decoder.decode<UnixDateTime>());
|
||||
auto arguments = TRY(decoder.decode<Vector<JsonValue>>());
|
||||
auto output = TRY(decoder.decode<Variant<WebView::ConsoleLog, WebView::ConsoleError>>());
|
||||
|
||||
return WebView::ConsoleOutput { level, timestamp, move(arguments) };
|
||||
return WebView::ConsoleOutput { timestamp, move(output) };
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue