diff --git a/Userland/Services/WebDriver/Client.cpp b/Userland/Services/WebDriver/Client.cpp index 03df19b339..d6f477b3be 100644 --- a/Userland/Services/WebDriver/Client.cpp +++ b/Userland/Services/WebDriver/Client.cpp @@ -229,6 +229,8 @@ ErrorOr Client::send_error_response(WebDriverError const& error, HTTP::Htt result.set("error", error.error); result.set("message", error.message); result.set("stacktrace", ""); + if (error.data.has_value()) + result.set("data", *error.data); StringBuilder content_builder; result.serialize(content_builder); diff --git a/Userland/Services/WebDriver/WebDriverError.cpp b/Userland/Services/WebDriver/WebDriverError.cpp index faf203bda1..8d51e10700 100644 --- a/Userland/Services/WebDriver/WebDriverError.cpp +++ b/Userland/Services/WebDriver/WebDriverError.cpp @@ -47,13 +47,14 @@ static Vector const s_error_code_data = { { ErrorCode::UnsupportedOperation, 500, "unsupported operation" }, }; -WebDriverError WebDriverError::from_code(ErrorCode code, String message) +WebDriverError WebDriverError::from_code(ErrorCode code, String message, Optional data) { - auto& data = s_error_code_data[to_underlying(code)]; + auto const& error_code_data = s_error_code_data[to_underlying(code)]; return { - .http_status = data.http_status, - .error = data.json_error_code, - .message = move(message) + .http_status = error_code_data.http_status, + .error = error_code_data.json_error_code, + .message = move(message), + .data = move(data) }; } diff --git a/Userland/Services/WebDriver/WebDriverError.h b/Userland/Services/WebDriver/WebDriverError.h index a89deea587..bd05d6fa80 100644 --- a/Userland/Services/WebDriver/WebDriverError.h +++ b/Userland/Services/WebDriver/WebDriverError.h @@ -7,6 +7,7 @@ #pragma once +#include #include namespace WebDriver { @@ -48,8 +49,9 @@ struct WebDriverError { unsigned http_status; String error; String message; + Optional data; - static WebDriverError from_code(ErrorCode, String message); + static WebDriverError from_code(ErrorCode, String message, Optional data = {}); }; }