Procházet zdrojové kódy

WebDriver: Support "data" field in error responses

Linus Groh před 2 roky
rodič
revize
6e1131e6de

+ 2 - 0
Userland/Services/WebDriver/Client.cpp

@@ -229,6 +229,8 @@ ErrorOr<void> 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);

+ 6 - 5
Userland/Services/WebDriver/WebDriverError.cpp

@@ -47,13 +47,14 @@ static Vector<ErrorCodeData> 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<JsonValue> 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)
     };
 }
 

+ 3 - 1
Userland/Services/WebDriver/WebDriverError.h

@@ -7,6 +7,7 @@
 
 #pragma once
 
+#include <AK/JsonValue.h>
 #include <AK/String.h>
 
 namespace WebDriver {
@@ -48,8 +49,9 @@ struct WebDriverError {
     unsigned http_status;
     String error;
     String message;
+    Optional<JsonValue> data;
 
-    static WebDriverError from_code(ErrorCode, String message);
+    static WebDriverError from_code(ErrorCode, String message, Optional<JsonValue> data = {});
 };
 
 }