From 6e24f23aa09c89bc0cd171fe69df96d276d8d759 Mon Sep 17 00:00:00 2001 From: sideshowbarker Date: Sun, 8 Dec 2024 15:53:19 +0900 Subject: [PATCH] =?UTF-8?q?LibWeb:=20Add=20support=20for=20the=20=E2=80=9C?= =?UTF-8?q?mark=E2=80=9D=20ARIA=20role?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libraries/LibWeb/ARIA/AriaRoles.json | 42 +++++++++++++++++++++++++++ Libraries/LibWeb/ARIA/RoleType.cpp | 2 ++ Libraries/LibWeb/ARIA/Roles.h | 1 + Libraries/LibWeb/HTML/HTMLElement.cpp | 3 ++ 4 files changed, 48 insertions(+) diff --git a/Libraries/LibWeb/ARIA/AriaRoles.json b/Libraries/LibWeb/ARIA/AriaRoles.json index 93f423cb12d..4bd5ec34538 100644 --- a/Libraries/LibWeb/ARIA/AriaRoles.json +++ b/Libraries/LibWeb/ARIA/AriaRoles.json @@ -3307,6 +3307,48 @@ "childrenArePresentational": false, "implicitValueForRole": {} }, + "Mark": { + "specLink": "https://w3c.github.io/aria/#mark", + "description": "Content which is marked or highlighted for reference or notation purposes, due to the content's relevance in the enclosing context.", + "superClassRoles": [ + "Section" + ], + "supportedStates": [ + "aria-busy", + "aria-current", + "aria-disabled", + "aria-grabbed", + "aria-hidden", + "aria-invalid" + ], + "supportedProperties": [ + "aria-atomic", + "aria-brailleroledescription", + "aria-controls", + "aria-describedby", + "aria-description", + "aria-details", + "aria-dropeffect", + "aria-errormessage", + "aria-flowto", + "aria-haspopup", + "aria-keyshortcuts", + "aria-live", + "aria-owns", + "aria-relevant", + "aria-roledescription" + ], + "requiredStates": [], + "requiredProperties": [], + "prohibitedStates": [], + "prohibitedProperties": [], + "requiredContextRoles": [], + "requiredOwnedElements": [], + "nameFromSource": "Prohibited", + "accessibleNameRequired": false, + "childrenArePresentational": false, + "implicitValueForRole": {} + }, "Navigation": { "specLink": "https://www.w3.org/TR/wai-aria-1.2/#navigation", "description": "A landmark containing a collection of navigational elements (usually links) for navigating the document or related documents.", diff --git a/Libraries/LibWeb/ARIA/RoleType.cpp b/Libraries/LibWeb/ARIA/RoleType.cpp index c6e888e4139..d1a39040492 100644 --- a/Libraries/LibWeb/ARIA/RoleType.cpp +++ b/Libraries/LibWeb/ARIA/RoleType.cpp @@ -232,6 +232,8 @@ ErrorOr> RoleType::build_role_object(Role role, bool foc return adopt_nonnull_own_or_enomem(new (nothrow) Main(data)); case Role::marquee: return adopt_nonnull_own_or_enomem(new (nothrow) Marquee(data)); + case Role::mark: + return adopt_nonnull_own_or_enomem(new (nothrow) Mark(data)); case Role::math: return adopt_nonnull_own_or_enomem(new (nothrow) Math(data)); case Role::meter: diff --git a/Libraries/LibWeb/ARIA/Roles.h b/Libraries/LibWeb/ARIA/Roles.h index ac3e4f49829..96f5d49ecb4 100644 --- a/Libraries/LibWeb/ARIA/Roles.h +++ b/Libraries/LibWeb/ARIA/Roles.h @@ -53,6 +53,7 @@ namespace Web::ARIA { __ENUMERATE_ARIA_ROLE(listitem) \ __ENUMERATE_ARIA_ROLE(log) \ __ENUMERATE_ARIA_ROLE(main) \ + __ENUMERATE_ARIA_ROLE(mark) \ __ENUMERATE_ARIA_ROLE(marquee) \ __ENUMERATE_ARIA_ROLE(math) \ __ENUMERATE_ARIA_ROLE(meter) \ diff --git a/Libraries/LibWeb/HTML/HTMLElement.cpp b/Libraries/LibWeb/HTML/HTMLElement.cpp index 001ee6d104c..cb3a9c62ea0 100644 --- a/Libraries/LibWeb/HTML/HTMLElement.cpp +++ b/Libraries/LibWeb/HTML/HTMLElement.cpp @@ -776,6 +776,9 @@ Optional HTMLElement::default_role() const // https://www.w3.org/TR/html-aria/#el-main if (local_name() == TagNames::main) return ARIA::Role::main; + // https://www.w3.org/TR/html-aria/#el-mark + if (local_name() == TagNames::mark) + return ARIA::Role::mark; // https://www.w3.org/TR/html-aria/#el-nav if (local_name() == TagNames::nav) return ARIA::Role::navigation;