Quellcode durchsuchen

LibWeb: Add window.internals.getComputedRole(element)

This change adds a window.internals.getComputedLabel(element) function,
for use in testing ARIA-related behavior. It also patches the imported
WPT testdriver.js script’s test_driver.get_computed_role(element)
function to call our window.internals.getComputedRole(element) function.
sideshowbarker vor 6 Monaten
Ursprung
Commit
c5966bbdcb

+ 8 - 0
Libraries/LibWeb/Internals/Internals.cpp

@@ -203,6 +203,14 @@ 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));
 }
 
+// NOLINTNEXTLINE(readability-convert-member-functions-to-static
+String Internals::get_computed_role(DOM::Element& element)
+{
+    if (auto role = element.role_or_default(); role.has_value())
+        return MUST(String::from_utf8(ARIA::role_name(role.value())));
+    return String {};
+}
+
 String Internals::get_computed_label(DOM::Element& element)
 {
     auto& active_document = internals_window().associated_document();

+ 1 - 0
Libraries/LibWeb/Internals/Internals.h

@@ -48,6 +48,7 @@ public:
     void enable_cookies_on_file_domains();
     void expire_cookies_with_time_offset(WebIDL::LongLong seconds);
 
+    String get_computed_role(DOM::Element& element);
     String get_computed_label(DOM::Element& element);
 
     static u16 get_echo_server_port();

+ 1 - 0
Libraries/LibWeb/Internals/Internals.idl

@@ -38,6 +38,7 @@ interface Internals {
     undefined enableCookiesOnFileDomains();
     undefined expireCookiesWithTimeOffset(long long seconds);
 
+    DOMString getComputedRole(Element element);
     DOMString getComputedLabel(Element element);
     unsigned short getEchoServerPort();
 };

+ 5 - 1
Tests/LibWeb/Text/input/wpt-import/resources/testdriver.js

@@ -250,7 +250,11 @@
          *                    rejected in the cases the WebDriver command errors
          */
         get_computed_role: async function(element) {
-            let role = await window.test_driver_internal.get_computed_role(element);
+            // XXX: Ladybird-specific change: Upstream WPT calls
+            // window.test_driver_internal.get_computed_role(element) here,
+            // but we’ve changed that to our Ladybird-specific
+            // window.internals.getComputedRole(el).
+            let role = await window.internals.getComputedRole(element);
             return role;
         },