1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 08:07:44 +00:00

Browser+LibWeb+WebContent: Add variables display to Inspector

This allows us to see which custom properties apply to a given element,
which previously wasn't shown.
This commit is contained in:
Sam Atkins 2021-12-08 11:51:26 +00:00 committed by Andreas Kling
parent 53df13fed7
commit 54bbb97ac6
12 changed files with 65 additions and 24 deletions

View file

@ -241,7 +241,7 @@ Messages::WebContentServer::InspectDomNodeResponse ClientConnection::inspect_dom
Web::DOM::Node* node = Web::DOM::Node::from_id(node_id);
if (!node) {
return { false, "", "" };
return { false, "", "", "" };
}
node->document().set_inspected_node(node);
@ -249,7 +249,7 @@ Messages::WebContentServer::InspectDomNodeResponse ClientConnection::inspect_dom
if (node->is_element()) {
auto& element = verify_cast<Web::DOM::Element>(*node);
if (!element.specified_css_values())
return { false, "", "" };
return { false, "", "", "" };
auto serialize_json = [](Web::CSS::StyleProperties const& properties) -> String {
StringBuilder builder;
@ -263,12 +263,35 @@ Messages::WebContentServer::InspectDomNodeResponse ClientConnection::inspect_dom
return builder.to_string();
};
auto serialize_custom_properties_json = [](Web::DOM::Element const& element) -> String {
StringBuilder builder;
JsonObjectSerializer serializer(builder);
HashTable<String> seen_properties;
auto const* element_to_check = &element;
while (element_to_check) {
for (auto const& property : element_to_check->custom_properties()) {
if (!seen_properties.contains(property.key) && property.value.style.has_value()) {
seen_properties.set(property.key);
serializer.add(property.key, property.value.style.value().value->to_string());
}
}
element_to_check = element_to_check->parent_element();
}
serializer.finish();
return builder.to_string();
};
String specified_values_json = serialize_json(*element.specified_css_values());
String computed_values_json = serialize_json(element.computed_style());
return { true, specified_values_json, computed_values_json };
String custom_properties_json = serialize_custom_properties_json(element);
return { true, specified_values_json, computed_values_json, custom_properties_json };
}
return { false, "", "" };
return { false, "", "", "" };
}
Messages::WebContentServer::GetHoveredNodeIdResponse ClientConnection::get_hovered_node_id()

View file

@ -29,7 +29,7 @@ endpoint WebContentClient
did_request_prompt(String message, String default_) => (String response)
did_get_source(URL url, String source) =|
did_get_dom_tree(String dom_tree) =|
did_get_dom_node_properties(i32 node_id, String specified_style, String computed_style) =|
did_get_dom_node_properties(i32 node_id, String specified_style, String computed_style, String custom_properties) =|
did_change_favicon(Gfx::ShareableBitmap favicon) =|
did_request_cookie(URL url, u8 source) => (String cookie)
did_set_cookie(URL url, Web::Cookie::ParsedCookie cookie, u8 source) =|

View file

@ -29,7 +29,7 @@ endpoint WebContentServer
debug_request(String request, String argument) =|
get_source() =|
inspect_dom_tree() =|
inspect_dom_node(i32 node_id) => (bool has_style, String specified_style, String computed_style)
inspect_dom_node(i32 node_id) => (bool has_style, String specified_style, String computed_style, String custom_properties)
get_hovered_node_id() => (i32 node_id)
js_console_input(String js_source) =|
js_console_request_messages(i32 start_index) =|