Title: [223390] releases/WebKitGTK/webkit-2.18/Source/WebDriver
- Revision
- 223390
- Author
- [email protected]
- Date
- 2017-10-16 05:15:32 -0700 (Mon, 16 Oct 2017)
Log Message
Merge r222255 - WebDriver: wrong response in case of errors
https://bugs.webkit.org/show_bug.cgi?id=177127
Reviewed by Brian Burg.
I misunderstood the spec when I implemented this, so we either return a "value" key with the result in case of
success or the error object as the body in case of error. We should always add a "value" key to the body and set
it with either the result or the error object.
https://w3c.github.io/webdriver/webdriver-spec.html#dfn-send-an-error
* WebDriverService.cpp:
(WebDriver::WebDriverService::sendResponse const):
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/ChangeLog (223389 => 223390)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/ChangeLog 2017-10-16 12:10:47 UTC (rev 223389)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/ChangeLog 2017-10-16 12:15:32 UTC (rev 223390)
@@ -1,3 +1,19 @@
+2017-09-19 Carlos Garcia Campos <[email protected]>
+
+ WebDriver: wrong response in case of errors
+ https://bugs.webkit.org/show_bug.cgi?id=177127
+
+ Reviewed by Brian Burg.
+
+ I misunderstood the spec when I implemented this, so we either return a "value" key with the result in case of
+ success or the error object as the body in case of error. We should always add a "value" key to the body and set
+ it with either the result or the error object.
+
+ https://w3c.github.io/webdriver/webdriver-spec.html#dfn-send-an-error
+
+ * WebDriverService.cpp:
+ (WebDriver::WebDriverService::sendResponse const):
+
2017-09-18 Carlos Garcia Campos <[email protected]>
WebDriver: wrong key name for capabilities in new session response
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.cpp (223389 => 223390)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.cpp 2017-10-16 12:10:47 UTC (rev 223389)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.cpp 2017-10-16 12:15:32 UTC (rev 223390)
@@ -248,19 +248,31 @@
void WebDriverService::sendResponse(Function<void (HTTPRequestHandler::Response&&)>&& replyHandler, CommandResult&& result) const
{
- RefPtr<InspectorObject> responseObject;
+ // ยง6.3 Processing Model.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#processing-model
+ RefPtr<InspectorValue> resultValue;
if (result.isError()) {
- responseObject = InspectorObject::create();
- responseObject->setString(ASCIILiteral("error"), result.errorString());
- responseObject->setString(ASCIILiteral("message"), result.errorMessage().value_or(emptyString()));
- responseObject->setString(ASCIILiteral("stacktrace"), emptyString());
+ // When required to send an error.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#dfn-send-an-error
+ // Let body be a new JSON Object initialised with the following properties: "error", "message", "stacktrace".
+ auto errorObject = InspectorObject::create();
+ errorObject->setString(ASCIILiteral("error"), result.errorString());
+ errorObject->setString(ASCIILiteral("message"), result.errorMessage().value_or(emptyString()));
+ errorObject->setString(ASCIILiteral("stacktrace"), emptyString());
+ // If the error data dictionary contains any entries, set the "data" field on body to a new JSON Object populated with the dictionary.
if (auto& additionalData = result.additionalErrorData())
- responseObject->setObject(ASCIILiteral("data"), RefPtr<InspectorObject> { additionalData });
- } else {
- responseObject = InspectorObject::create();
- auto resultValue = result.result();
- responseObject->setValue(ASCIILiteral("value"), resultValue ? WTFMove(resultValue) : InspectorValue::null());
- }
+ errorObject->setObject(ASCIILiteral("data"), RefPtr<InspectorObject> { additionalData });
+ // Send a response with status and body as arguments.
+ resultValue = WTFMove(errorObject);
+ } else if (auto value = result.result())
+ resultValue = WTFMove(value);
+ else
+ resultValue = InspectorValue::null();
+
+ // When required to send a response.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#dfn-send-a-response
+ RefPtr<InspectorObject> responseObject = InspectorObject::create();
+ responseObject->setValue(ASCIILiteral("value"), WTFMove(resultValue));
replyHandler({ result.httpStatusCode(), responseObject->toJSONString().utf8(), ASCIILiteral("application/json; charset=utf-8") });
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes