mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 12:05:15 +00:00
LibWebView+WebContent: Transfer inspected DOM info over IPC as String
Let's avoid a whole bunch of String to ByteString to String conversions.
This commit is contained in:
parent
1e841cd453
commit
5478f34992
Notes:
github-actions[bot]
2025-02-24 17:07:24 +00:00
Author: https://github.com/trflynn89 Commit: https://github.com/LadybirdBrowser/ladybird/commit/5478f349928 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3666 Reviewed-by: https://github.com/AtkinsSJ
6 changed files with 44 additions and 44 deletions
|
@ -371,7 +371,7 @@ void Application::inspect_tab(DevTools::TabDescription const& description, DevTo
|
|||
return;
|
||||
}
|
||||
|
||||
view->on_received_dom_tree = [&view = *view, on_complete = move(on_complete)](ByteString const& dom_tree) {
|
||||
view->on_received_dom_tree = [&view = *view, on_complete = move(on_complete)](String const& dom_tree) {
|
||||
view.on_received_dom_tree = nullptr;
|
||||
|
||||
if (auto parsed_tree = JsonValue::from_string(dom_tree); parsed_tree.is_error()) {
|
||||
|
|
|
@ -200,9 +200,9 @@ public:
|
|||
Function<void()> on_request_accept_dialog;
|
||||
Function<void()> on_request_dismiss_dialog;
|
||||
Function<void(URL::URL const&, URL::URL const&, String const&)> on_received_source;
|
||||
Function<void(ByteString const&)> on_received_dom_tree;
|
||||
Function<void(String const&)> on_received_dom_tree;
|
||||
Function<void(Optional<DOMNodeProperties>)> on_received_dom_node_properties;
|
||||
Function<void(ByteString const&)> on_received_accessibility_tree;
|
||||
Function<void(String const&)> on_received_accessibility_tree;
|
||||
Function<void(Vector<Web::CSS::StyleSheetIdentifier>)> on_received_style_sheet_list;
|
||||
Function<void(Web::CSS::StyleSheetIdentifier const&)> on_inspector_requested_style_sheet_source;
|
||||
Function<void(Web::CSS::StyleSheetIdentifier const&, URL::URL const&, String const&)> on_received_style_sheet_source;
|
||||
|
|
|
@ -264,7 +264,7 @@ void WebContentClient::did_get_source(u64 page_id, URL::URL const& url, URL::URL
|
|||
}
|
||||
}
|
||||
|
||||
void WebContentClient::did_inspect_dom_tree(u64 page_id, ByteString const& dom_tree)
|
||||
void WebContentClient::did_inspect_dom_tree(u64 page_id, String const& dom_tree)
|
||||
{
|
||||
if (auto view = view_for_page_id(page_id); view.has_value()) {
|
||||
if (view->on_received_dom_tree)
|
||||
|
@ -272,7 +272,7 @@ void WebContentClient::did_inspect_dom_tree(u64 page_id, ByteString const& dom_t
|
|||
}
|
||||
}
|
||||
|
||||
void WebContentClient::did_inspect_dom_node(u64 page_id, bool has_style, ByteString const& computed_style, ByteString const& resolved_style, ByteString const& custom_properties, ByteString const& node_box_sizing, ByteString const& aria_properties_state, ByteString const& fonts)
|
||||
void WebContentClient::did_inspect_dom_node(u64 page_id, bool has_style, String const& computed_style, String const& resolved_style, String const& custom_properties, String const& node_box_sizing, String const& aria_properties_state, String const& fonts)
|
||||
{
|
||||
auto view = view_for_page_id(page_id);
|
||||
if (!view.has_value() || !view->on_received_dom_node_properties)
|
||||
|
@ -282,19 +282,19 @@ void WebContentClient::did_inspect_dom_node(u64 page_id, bool has_style, ByteStr
|
|||
|
||||
if (has_style) {
|
||||
properties = ViewImplementation::DOMNodeProperties {
|
||||
.computed_style_json = MUST(String::from_byte_string(computed_style)),
|
||||
.resolved_style_json = MUST(String::from_byte_string(resolved_style)),
|
||||
.custom_properties_json = MUST(String::from_byte_string(custom_properties)),
|
||||
.node_box_sizing_json = MUST(String::from_byte_string(node_box_sizing)),
|
||||
.aria_properties_state_json = MUST(String::from_byte_string(aria_properties_state)),
|
||||
.fonts_json = MUST(String::from_byte_string(fonts))
|
||||
.computed_style_json = computed_style,
|
||||
.resolved_style_json = resolved_style,
|
||||
.custom_properties_json = custom_properties,
|
||||
.node_box_sizing_json = node_box_sizing,
|
||||
.aria_properties_state_json = aria_properties_state,
|
||||
.fonts_json = fonts,
|
||||
};
|
||||
}
|
||||
|
||||
view->on_received_dom_node_properties(move(properties));
|
||||
}
|
||||
|
||||
void WebContentClient::did_inspect_accessibility_tree(u64 page_id, ByteString const& accessibility_tree)
|
||||
void WebContentClient::did_inspect_accessibility_tree(u64 page_id, String const& accessibility_tree)
|
||||
{
|
||||
if (auto view = view_for_page_id(page_id); view.has_value()) {
|
||||
if (view->on_received_accessibility_tree)
|
||||
|
|
|
@ -71,9 +71,9 @@ private:
|
|||
virtual void did_request_image_context_menu(u64 page_id, Gfx::IntPoint, URL::URL const&, ByteString const&, unsigned, Optional<Gfx::ShareableBitmap> const&) override;
|
||||
virtual void did_request_media_context_menu(u64 page_id, Gfx::IntPoint, ByteString const&, unsigned, Web::Page::MediaContextMenu const&) override;
|
||||
virtual void did_get_source(u64 page_id, URL::URL const&, URL::URL const&, String const&) override;
|
||||
virtual void did_inspect_dom_tree(u64 page_id, ByteString const&) override;
|
||||
virtual void did_inspect_dom_node(u64 page_id, bool has_style, ByteString const& computed_style, ByteString const& resolved_style, ByteString const& custom_properties, ByteString const& node_box_sizing, ByteString const& aria_properties_state, ByteString const& fonts) override;
|
||||
virtual void did_inspect_accessibility_tree(u64 page_id, ByteString const&) override;
|
||||
virtual void did_inspect_dom_tree(u64 page_id, String const&) override;
|
||||
virtual void did_inspect_dom_node(u64 page_id, bool has_style, String const& computed_style, String const& resolved_style, String const& custom_properties, String const& node_box_sizing, String const& aria_properties_state, String const& fonts) override;
|
||||
virtual void did_inspect_accessibility_tree(u64 page_id, String const&) override;
|
||||
virtual void did_get_hovered_node_id(u64 page_id, Web::UniqueNodeID const& node_id) override;
|
||||
virtual void did_finish_editing_dom_node(u64 page_id, Optional<Web::UniqueNodeID> const& node_id) override;
|
||||
virtual void did_get_dom_node_html(u64 page_id, String const& html) override;
|
||||
|
|
|
@ -430,7 +430,7 @@ void ConnectionFromClient::inspect_dom_tree(u64 page_id)
|
|||
{
|
||||
if (auto page = this->page(page_id); page.has_value()) {
|
||||
if (auto* doc = page->page().top_level_browsing_context().active_document())
|
||||
async_did_inspect_dom_tree(page_id, doc->dump_dom_tree_as_json().to_byte_string());
|
||||
async_did_inspect_dom_tree(page_id, doc->dump_dom_tree_as_json());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -462,7 +462,7 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
|
|||
return;
|
||||
}
|
||||
|
||||
auto serialize_json = [](Web::CSS::ComputedProperties const& properties) -> ByteString {
|
||||
auto serialize_json = [](Web::CSS::ComputedProperties const& properties) {
|
||||
StringBuilder builder;
|
||||
|
||||
auto serializer = MUST(JsonObjectSerializer<>::try_create(builder));
|
||||
|
@ -471,10 +471,10 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
|
|||
});
|
||||
MUST(serializer.finish());
|
||||
|
||||
return builder.to_byte_string();
|
||||
return MUST(builder.to_string());
|
||||
};
|
||||
|
||||
auto serialize_custom_properties_json = [](Web::DOM::Element const& element, Optional<Web::CSS::Selector::PseudoElement::Type> pseudo_element) -> ByteString {
|
||||
auto serialize_custom_properties_json = [](Web::DOM::Element const& element, Optional<Web::CSS::Selector::PseudoElement::Type> pseudo_element) {
|
||||
StringBuilder builder;
|
||||
auto serializer = MUST(JsonObjectSerializer<>::try_create(builder));
|
||||
HashTable<FlyString> seen_properties;
|
||||
|
@ -498,11 +498,11 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
|
|||
|
||||
MUST(serializer.finish());
|
||||
|
||||
return builder.to_byte_string();
|
||||
return MUST(builder.to_string());
|
||||
};
|
||||
auto serialize_node_box_sizing_json = [](Web::Layout::Node const* layout_node) -> ByteString {
|
||||
auto serialize_node_box_sizing_json = [](Web::Layout::Node const* layout_node) {
|
||||
if (!layout_node || !layout_node->is_box() || !layout_node->first_paintable() || !layout_node->first_paintable()->is_paintable_box()) {
|
||||
return "{}";
|
||||
return "{}"_string;
|
||||
}
|
||||
auto const& paintable_box = as<Web::Painting::PaintableBox>(*layout_node->first_paintable());
|
||||
auto const& box_model = paintable_box.box_model();
|
||||
|
@ -524,13 +524,13 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
|
|||
MUST(serializer.add("content_height"sv, paintable_box.content_height().to_double()));
|
||||
|
||||
MUST(serializer.finish());
|
||||
return builder.to_byte_string();
|
||||
return MUST(builder.to_string());
|
||||
};
|
||||
|
||||
auto serialize_aria_properties_state_json = [](Web::DOM::Element const& element) -> ByteString {
|
||||
auto serialize_aria_properties_state_json = [](Web::DOM::Element const& element) {
|
||||
auto role_name = element.role_or_default();
|
||||
if (!role_name.has_value()) {
|
||||
return "";
|
||||
return "{}"_string;
|
||||
}
|
||||
auto aria_data = MUST(Web::ARIA::AriaData::build_data(element));
|
||||
auto role = MUST(Web::ARIA::RoleType::build_role_object(role_name.value(), element.is_focusable(), *aria_data));
|
||||
|
@ -539,10 +539,10 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
|
|||
auto serializer = MUST(JsonObjectSerializer<>::try_create(builder));
|
||||
MUST(role->serialize_as_json(serializer));
|
||||
MUST(serializer.finish());
|
||||
return builder.to_byte_string();
|
||||
return MUST(builder.to_string());
|
||||
};
|
||||
|
||||
auto serialize_fonts_json = [](Web::CSS::ComputedProperties const& properties) -> ByteString {
|
||||
auto serialize_fonts_json = [](Web::CSS::ComputedProperties const& properties) {
|
||||
StringBuilder builder;
|
||||
auto serializer = MUST(JsonArraySerializer<>::try_create(builder));
|
||||
|
||||
|
@ -556,7 +556,7 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
|
|||
MUST(font_json_object.finish());
|
||||
});
|
||||
MUST(serializer.finish());
|
||||
return builder.to_byte_string();
|
||||
return MUST(builder.to_string());
|
||||
};
|
||||
|
||||
if (pseudo_element.has_value()) {
|
||||
|
@ -568,9 +568,9 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
|
|||
|
||||
auto pseudo_element_style = element.pseudo_element_computed_properties(pseudo_element.value());
|
||||
|
||||
ByteString computed_values;
|
||||
ByteString fonts_json;
|
||||
ByteString resolved_values;
|
||||
String computed_values;
|
||||
String fonts_json;
|
||||
String resolved_values;
|
||||
if (pseudo_element_style) {
|
||||
computed_values = serialize_json(*pseudo_element_style);
|
||||
fonts_json = serialize_fonts_json(*pseudo_element_style);
|
||||
|
@ -579,18 +579,18 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
|
|||
dbgln("Inspected pseudo-element has no computed style.");
|
||||
}
|
||||
|
||||
ByteString custom_properties_json = serialize_custom_properties_json(element, pseudo_element);
|
||||
ByteString node_box_sizing_json = serialize_node_box_sizing_json(pseudo_element_node.ptr());
|
||||
async_did_inspect_dom_node(page_id, true, move(computed_values), move(resolved_values), move(custom_properties_json), move(node_box_sizing_json), {}, move(fonts_json));
|
||||
auto custom_properties_json = serialize_custom_properties_json(element, pseudo_element);
|
||||
auto node_box_sizing_json = serialize_node_box_sizing_json(pseudo_element_node.ptr());
|
||||
async_did_inspect_dom_node(page_id, true, move(computed_values), move(resolved_values), move(custom_properties_json), move(node_box_sizing_json), "{}"_string, move(fonts_json));
|
||||
return;
|
||||
}
|
||||
|
||||
ByteString computed_values = serialize_json(*element.computed_properties());
|
||||
ByteString resolved_values = serialize_json(element.resolved_css_values());
|
||||
ByteString custom_properties_json = serialize_custom_properties_json(element, {});
|
||||
ByteString node_box_sizing_json = serialize_node_box_sizing_json(element.layout_node());
|
||||
ByteString aria_properties_state_json = serialize_aria_properties_state_json(element);
|
||||
ByteString fonts_json = serialize_fonts_json(*element.computed_properties());
|
||||
auto computed_values = serialize_json(*element.computed_properties());
|
||||
auto resolved_values = serialize_json(element.resolved_css_values());
|
||||
auto custom_properties_json = serialize_custom_properties_json(element, {});
|
||||
auto node_box_sizing_json = serialize_node_box_sizing_json(element.layout_node());
|
||||
auto aria_properties_state_json = serialize_aria_properties_state_json(element);
|
||||
auto fonts_json = serialize_fonts_json(*element.computed_properties());
|
||||
|
||||
async_did_inspect_dom_node(page_id, true, move(computed_values), move(resolved_values), move(custom_properties_json), move(node_box_sizing_json), move(aria_properties_state_json), move(fonts_json));
|
||||
return;
|
||||
|
@ -603,7 +603,7 @@ void ConnectionFromClient::inspect_accessibility_tree(u64 page_id)
|
|||
{
|
||||
if (auto page = this->page(page_id); page.has_value()) {
|
||||
if (auto* doc = page->page().top_level_browsing_context().active_document())
|
||||
async_did_inspect_accessibility_tree(page_id, doc->dump_accessibility_tree_as_json().to_byte_string());
|
||||
async_did_inspect_accessibility_tree(page_id, doc->dump_accessibility_tree_as_json());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -47,9 +47,9 @@ endpoint WebContentClient
|
|||
did_request_dismiss_dialog(u64 page_id) =|
|
||||
did_get_source(u64 page_id, URL::URL url, URL::URL base_url, String source) =|
|
||||
|
||||
did_inspect_dom_tree(u64 page_id, ByteString dom_tree) =|
|
||||
did_inspect_dom_node(u64 page_id, bool has_style, ByteString computed_style, ByteString resolved_style, ByteString custom_properties, ByteString node_box_sizing, ByteString aria_properties_state, ByteString fonts) =|
|
||||
did_inspect_accessibility_tree(u64 page_id, ByteString accessibility_tree) =|
|
||||
did_inspect_dom_tree(u64 page_id, String dom_tree) =|
|
||||
did_inspect_dom_node(u64 page_id, bool has_style, String computed_style, String resolved_style, String custom_properties, String node_box_sizing, String aria_properties_state, String fonts) =|
|
||||
did_inspect_accessibility_tree(u64 page_id, String accessibility_tree) =|
|
||||
did_get_hovered_node_id(u64 page_id, Web::UniqueNodeID node_id) =|
|
||||
did_finish_editing_dom_node(u64 page_id, Optional<Web::UniqueNodeID> node_id) =|
|
||||
did_get_dom_node_html(u64 page_id, String html) =|
|
||||
|
|
Loading…
Add table
Reference in a new issue