mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 12:05:15 +00:00
LibWeb: Form the correct representation of a WebDriver element reference
We are currently returning a JSON object of the form: { "name": "element-6066-11e4-a52e-4f735466cecf", "value": "foo" } Instead, we are expected to return an object of the form: { "element-6066-11e4-a52e-4f735466cecf": "foo" }
This commit is contained in:
parent
7a15e3ee5c
commit
157d41bb0d
Notes:
github-actions[bot]
2024-09-27 08:47:55 +00:00
Author: https://github.com/trflynn89 Commit: https://github.com/LadybirdBrowser/ladybird/commit/157d41bb0da Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1546 Reviewed-by: https://github.com/tcl3 ✅
3 changed files with 10 additions and 11 deletions
|
@ -40,23 +40,22 @@ JsonObject web_element_reference_object(Web::DOM::Node const& element)
|
|||
|
||||
// 3. Return a JSON Object initialized with a property with name identifier and value reference.
|
||||
JsonObject object;
|
||||
object.set("name"sv, identifier);
|
||||
object.set("value"sv, reference);
|
||||
object.set(identifier, reference);
|
||||
return object;
|
||||
}
|
||||
|
||||
ByteString extract_web_element_reference(JsonObject const& object)
|
||||
{
|
||||
return object.get_byte_string(web_element_identifier).release_value();
|
||||
}
|
||||
|
||||
// https://w3c.github.io/webdriver/#dfn-represents-a-web-element
|
||||
bool represents_a_web_element(JsonValue const& value)
|
||||
{
|
||||
// An ECMAScript Object represents a web element if it has a web element identifier own property.
|
||||
if (!value.is_object())
|
||||
return false;
|
||||
|
||||
auto const& object = value.as_object();
|
||||
if (!object.has_string("name"sv) || !object.has_string("value"sv))
|
||||
return false;
|
||||
|
||||
return object.get_byte_string("name"sv) == web_element_identifier;
|
||||
return value.as_object().has_string(web_element_identifier);
|
||||
}
|
||||
|
||||
// https://w3c.github.io/webdriver/#dfn-get-a-known-connected-element
|
||||
|
@ -105,8 +104,7 @@ JsonObject shadow_root_reference_object(Web::DOM::ShadowRoot const& shadow_root)
|
|||
|
||||
// 3. Return a JSON Object initialized with a property with name identifier and value reference.
|
||||
JsonObject object;
|
||||
object.set("name"sv, identifier);
|
||||
object.set("value"sv, reference);
|
||||
object.set(identifier, reference);
|
||||
return object;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ namespace Web::WebDriver {
|
|||
|
||||
ByteString get_or_create_a_web_element_reference(Web::DOM::Node const& element);
|
||||
JsonObject web_element_reference_object(Web::DOM::Node const& element);
|
||||
ByteString extract_web_element_reference(JsonObject const&);
|
||||
bool represents_a_web_element(JsonValue const& value);
|
||||
ErrorOr<Web::DOM::Element*, Web::WebDriver::Error> get_known_connected_element(StringView element_id);
|
||||
bool is_element_stale(Web::DOM::Node const& element);
|
||||
|
|
|
@ -550,7 +550,7 @@ Messages::WebDriverClient::SwitchToFrameResponse WebDriverConnection::switch_to_
|
|||
|
||||
// -> id represents a web element
|
||||
else if (id.is_object()) {
|
||||
auto element_id = id.as_object().get_byte_string("value"sv).release_value();
|
||||
auto element_id = Web::WebDriver::extract_web_element_reference(id.as_object());
|
||||
|
||||
// 1. If session's current browsing context is no longer open, return error with error code no such window.
|
||||
TRY(ensure_current_browsing_context_is_open());
|
||||
|
|
Loading…
Add table
Reference in a new issue