mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
LibWebView+WebContent: Expose the Accessibility Tree to Other Processes
This patch also stubs out notify_server_did_get_accessiblity_tree in ladybird since ViewImplementation now has it. However, this feature is still immature, so just stubbing out in ladybird for now. Once we have more robust support in Serenity (namely ARIA properties/state and accessible names and descriptions) we can port this functionality over.
This commit is contained in:
parent
a469bbd178
commit
367b1634fd
Notes:
sideshowbarker
2024-07-17 10:10:18 +09:00
Author: https://github.com/Epigenetic Commit: https://github.com/SerenityOS/serenity/commit/367b1634fd Pull-request: https://github.com/SerenityOS/serenity/pull/16430 Reviewed-by: https://github.com/AtkinsSJ ✅ Reviewed-by: https://github.com/MacDue Reviewed-by: https://github.com/awesomekling Reviewed-by: https://github.com/martinfalisse
11 changed files with 37 additions and 0 deletions
|
@ -1093,3 +1093,8 @@ void WebContentView::notify_server_did_finish_handling_input_event(bool event_wa
|
|||
// we don't need to do anything here. But we'll need to once we start asking web content first.
|
||||
(void)event_was_accepted;
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_get_accessibility_tree(DeprecatedString const&)
|
||||
{
|
||||
dbgln("TODO: support accessibility tree in Ladybird");
|
||||
}
|
||||
|
|
|
@ -144,6 +144,7 @@ public:
|
|||
virtual void notify_server_did_get_source(const AK::URL& url, DeprecatedString const& source) override;
|
||||
virtual void notify_server_did_get_dom_tree(DeprecatedString const& dom_tree) override;
|
||||
virtual void notify_server_did_get_dom_node_properties(i32 node_id, DeprecatedString const& specified_style, DeprecatedString const& computed_style, DeprecatedString const& custom_properties, DeprecatedString const& node_box_sizing) override;
|
||||
virtual void notify_server_did_get_accessibility_tree(DeprecatedString const& accessibility_tree) override;
|
||||
virtual void notify_server_did_output_js_console_message(i32 message_index) override;
|
||||
virtual void notify_server_did_get_js_console_messages(i32 start_index, Vector<DeprecatedString> const& message_types, Vector<DeprecatedString> const& messages) override;
|
||||
virtual void notify_server_did_change_favicon(Gfx::Bitmap const& favicon) override;
|
||||
|
|
|
@ -830,4 +830,15 @@ void OutOfProcessWebView::notify_server_did_finish_handling_input_event(bool eve
|
|||
process_next_input_event();
|
||||
}
|
||||
|
||||
void OutOfProcessWebView::inspect_accessibility_tree()
|
||||
{
|
||||
client().async_inspect_accessibility_tree();
|
||||
}
|
||||
|
||||
void OutOfProcessWebView::notify_server_did_get_accessibility_tree(DeprecatedString const& accessibility_tree)
|
||||
{
|
||||
if (on_get_accessibility_tree)
|
||||
on_get_accessibility_tree(accessibility_tree);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ public:
|
|||
DeprecatedString node_box_sizing_json;
|
||||
};
|
||||
Optional<DOMNodeProperties> inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement>);
|
||||
void inspect_accessibility_tree();
|
||||
void clear_inspected_dom_node();
|
||||
i32 get_hovered_node_id();
|
||||
|
||||
|
@ -97,6 +98,7 @@ public:
|
|||
Function<void(const AK::URL&, DeprecatedString const&)> on_get_source;
|
||||
Function<void(DeprecatedString const&)> on_get_dom_tree;
|
||||
Function<void(i32 node_id, DeprecatedString const& computed_style, DeprecatedString const& resolved_style, DeprecatedString const& custom_properties, DeprecatedString const& node_box_sizing)> on_get_dom_node_properties;
|
||||
Function<void(DeprecatedString const&)> on_get_accessibility_tree;
|
||||
Function<void(i32 message_id)> on_js_console_new_message;
|
||||
Function<void(i32 start_index, Vector<DeprecatedString> const& message_types, Vector<DeprecatedString> const& messages)> on_get_js_console_messages;
|
||||
Function<Vector<Web::Cookie::Cookie>(AK::URL const& url)> on_get_all_cookies;
|
||||
|
@ -170,6 +172,7 @@ private:
|
|||
virtual void notify_server_did_get_source(const AK::URL& url, DeprecatedString const& source) override;
|
||||
virtual void notify_server_did_get_dom_tree(DeprecatedString const& dom_tree) override;
|
||||
virtual void notify_server_did_get_dom_node_properties(i32 node_id, DeprecatedString const& computed_style, DeprecatedString const& resolved_style, DeprecatedString const& custom_properties, DeprecatedString const& node_box_sizing) override;
|
||||
virtual void notify_server_did_get_accessibility_tree(DeprecatedString const& accessibility_tree) override;
|
||||
virtual void notify_server_did_output_js_console_message(i32 message_index) override;
|
||||
virtual void notify_server_did_get_js_console_messages(i32 start_index, Vector<DeprecatedString> const& message_types, Vector<DeprecatedString> const& messages) override;
|
||||
virtual void notify_server_did_change_favicon(Gfx::Bitmap const& favicon) override;
|
||||
|
|
|
@ -50,6 +50,7 @@ public:
|
|||
virtual void notify_server_did_get_source(const AK::URL& url, DeprecatedString const& source) = 0;
|
||||
virtual void notify_server_did_get_dom_tree(DeprecatedString const& dom_tree) = 0;
|
||||
virtual void notify_server_did_get_dom_node_properties(i32 node_id, DeprecatedString const& computed_style, DeprecatedString const& resolved_style, DeprecatedString const& custom_properties, DeprecatedString const& node_box_sizing) = 0;
|
||||
virtual void notify_server_did_get_accessibility_tree(DeprecatedString const& accessibility_tree) = 0;
|
||||
virtual void notify_server_did_output_js_console_message(i32 message_index) = 0;
|
||||
virtual void notify_server_did_get_js_console_messages(i32 start_index, Vector<DeprecatedString> const& message_types, Vector<DeprecatedString> const& messages) = 0;
|
||||
virtual void notify_server_did_change_favicon(Gfx::Bitmap const& favicon) = 0;
|
||||
|
|
|
@ -285,4 +285,9 @@ void WebContentClient::did_finish_handling_input_event(bool event_was_accepted)
|
|||
m_view.notify_server_did_finish_handling_input_event(event_was_accepted);
|
||||
}
|
||||
|
||||
void WebContentClient::did_get_accessibility_tree(DeprecatedString const& accessibility_tree)
|
||||
{
|
||||
m_view.notify_server_did_get_accessibility_tree(accessibility_tree);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ private:
|
|||
virtual void did_get_source(AK::URL const&, DeprecatedString const&) override;
|
||||
virtual void did_get_dom_tree(DeprecatedString const&) override;
|
||||
virtual void did_get_dom_node_properties(i32 node_id, DeprecatedString const& computed_style, DeprecatedString const& resolved_style, DeprecatedString const& custom_properties, DeprecatedString const& node_box_sizing) override;
|
||||
virtual void did_get_accessibility_tree(DeprecatedString const&) override;
|
||||
virtual void did_output_js_console_message(i32 message_index) override;
|
||||
virtual void did_get_js_console_messages(i32 start_index, Vector<DeprecatedString> const& message_types, Vector<DeprecatedString> const& messages) override;
|
||||
virtual void did_change_favicon(Gfx::ShareableBitmap const&) override;
|
||||
|
|
|
@ -595,4 +595,11 @@ void ConnectionFromClient::prompt_closed(DeprecatedString const& response)
|
|||
m_page_host->prompt_closed(response);
|
||||
}
|
||||
|
||||
void ConnectionFromClient::inspect_accessibility_tree()
|
||||
{
|
||||
if (auto* doc = page().top_level_browsing_context().active_document()) {
|
||||
async_did_get_accessibility_tree(doc->dump_accessibility_tree_as_json());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -68,6 +68,7 @@ private:
|
|||
virtual void get_source() override;
|
||||
virtual void inspect_dom_tree() override;
|
||||
virtual Messages::WebContentServer::InspectDomNodeResponse inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement> const& pseudo_element) override;
|
||||
virtual void inspect_accessibility_tree() override;
|
||||
virtual Messages::WebContentServer::GetHoveredNodeIdResponse get_hovered_node_id() override;
|
||||
virtual Messages::WebContentServer::DumpLayoutTreeResponse dump_layout_tree() override;
|
||||
virtual void set_content_filters(Vector<DeprecatedString> const&) override;
|
||||
|
|
|
@ -38,6 +38,7 @@ endpoint WebContentClient
|
|||
did_get_source(URL url, DeprecatedString source) =|
|
||||
did_get_dom_tree(DeprecatedString dom_tree) =|
|
||||
did_get_dom_node_properties(i32 node_id, DeprecatedString computed_style, DeprecatedString resolved_style, DeprecatedString custom_properties, DeprecatedString node_box_sizing_json) =|
|
||||
did_get_accessibility_tree(DeprecatedString accessibility_tree) =|
|
||||
did_change_favicon(Gfx::ShareableBitmap favicon) =|
|
||||
did_request_all_cookies(URL url) => (Vector<Web::Cookie::Cookie> cookies)
|
||||
did_request_named_cookie(URL url, DeprecatedString name) => (Optional<Web::Cookie::Cookie> cookie)
|
||||
|
|
|
@ -37,6 +37,7 @@ endpoint WebContentServer
|
|||
get_source() =|
|
||||
inspect_dom_tree() =|
|
||||
inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement> pseudo_element) => (bool has_style, DeprecatedString computed_style, DeprecatedString resolved_style, DeprecatedString custom_properties, DeprecatedString node_box_sizing)
|
||||
inspect_accessibility_tree() =|
|
||||
get_hovered_node_id() => (i32 node_id)
|
||||
js_console_input(DeprecatedString js_source) =|
|
||||
js_console_request_messages(i32 start_index) =|
|
||||
|
|
Loading…
Reference in a new issue