From 1b4e609eb2915ec40a2495286e98905c2649613e Mon Sep 17 00:00:00 2001 From: sideshowbarker Date: Wed, 30 Oct 2024 02:35:14 +0900 Subject: [PATCH] LibWeb: Expose Node::accessible_name via window.internals This adds window.internals.getComputedLabel, for exposing Node::accessible_name (for accessibility-testing purposes). --- Userland/Libraries/LibWeb/Internals/Internals.cpp | 6 ++++++ Userland/Libraries/LibWeb/Internals/Internals.h | 2 ++ Userland/Libraries/LibWeb/Internals/Internals.idl | 2 ++ 3 files changed, 10 insertions(+) diff --git a/Userland/Libraries/LibWeb/Internals/Internals.cpp b/Userland/Libraries/LibWeb/Internals/Internals.cpp index 9b6f682d0e8..9293ed9efdb 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.cpp +++ b/Userland/Libraries/LibWeb/Internals/Internals.cpp @@ -193,4 +193,10 @@ void Internals::expire_cookies_with_time_offset(WebIDL::LongLong seconds) internals_page().client().page_did_expire_cookies_with_time_offset(AK::Duration::from_seconds(seconds)); } +String Internals::get_computed_label(DOM::Element& element) +{ + auto& active_document = internals_window().associated_document(); + return MUST(element.accessible_name(active_document)); +} + } diff --git a/Userland/Libraries/LibWeb/Internals/Internals.h b/Userland/Libraries/LibWeb/Internals/Internals.h index 83e155f9802..b28aa32e5c0 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.h +++ b/Userland/Libraries/LibWeb/Internals/Internals.h @@ -47,6 +47,8 @@ public: void enable_cookies_on_file_domains(); void expire_cookies_with_time_offset(WebIDL::LongLong seconds); + String get_computed_label(DOM::Element& element); + private: explicit Internals(JS::Realm&); virtual void initialize(JS::Realm&) override; diff --git a/Userland/Libraries/LibWeb/Internals/Internals.idl b/Userland/Libraries/LibWeb/Internals/Internals.idl index ee26ff48c5c..0eb5b56d93e 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.idl +++ b/Userland/Libraries/LibWeb/Internals/Internals.idl @@ -36,4 +36,6 @@ interface Internals { undefined enableCookiesOnFileDomains(); undefined expireCookiesWithTimeOffset(long long seconds); + + DOMString getComputedLabel(Element element); };