From 0a503cce2c6efd211ed834279893a9c616025049 Mon Sep 17 00:00:00 2001 From: Tyler Wilcock Date: Fri, 1 Mar 2024 17:31:36 -0800 Subject: [PATCH] AX: Parse "strong" and "emphasis" ARIA roles into internal role representation https://bugs.webkit.org/show_bug.cgi?id=270369 rdar://problem/123912792 Reviewed by Chris Fleizach. This patch parses the "strong" and "emphasis" ARIA roles into a new internal AccessibilityRole interpretation. Note that this patch does not actually hook them up into platform representations for AT consumption (we'll need to decide the best way to do that in a future patch). * LayoutTests/imported/w3c/web-platform-tests/wai-aria/role/roles-expected.txt: Pass two more testcases. * Source/WebCore/accessibility/AXCoreObject.h: (WebCore::accessibilityRoleToString): * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::initializeRoleMap): * Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): * Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm: (WebCore::Accessibility::createPlatformRoleMap): Canonical link: https://commits.webkit.org/275587@main --- .../w3c/web-platform-tests/wai-aria/role/roles-expected.txt | 4 ++-- Source/WebCore/accessibility/AXCoreObject.h | 6 ++++++ Source/WebCore/accessibility/AccessibilityObject.cpp | 2 ++ .../accessibility/atspi/AccessibilityObjectAtspi.cpp | 2 ++ .../accessibility/ios/WebAccessibilityObjectWrapperIOS.mm | 2 ++ Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm | 2 ++ 6 files changed, 16 insertions(+), 2 deletions(-) diff --git a/LayoutTests/imported/w3c/web-platform-tests/wai-aria/role/roles-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wai-aria/role/roles-expected.txt index 453dfd15b0bf..953ba11cde83 100644 --- a/LayoutTests/imported/w3c/web-platform-tests/wai-aria/role/roles-expected.txt +++ b/LayoutTests/imported/w3c/web-platform-tests/wai-aria/role/roles-expected.txt @@ -72,7 +72,7 @@ PASS role: definition PASS role: deletion PASS role: dialog PASS role: document -FAIL role: emphasis assert_equals:
x
expected "emphasis" but got "generic" +PASS role: emphasis PASS role: feed PASS role: figure PASS role: generic @@ -98,7 +98,7 @@ PASS role: separator PASS role: slider PASS role: spinbutton PASS role: status -FAIL role: strong assert_equals:
x
expected "strong" but got "generic" +PASS role: strong PASS role: subscript PASS role: suggestion PASS role: superscript diff --git a/Source/WebCore/accessibility/AXCoreObject.h b/Source/WebCore/accessibility/AXCoreObject.h index a2d93b89ccb9..6ab34dbcfbe7 100644 --- a/Source/WebCore/accessibility/AXCoreObject.h +++ b/Source/WebCore/accessibility/AXCoreObject.h @@ -149,6 +149,7 @@ enum class AccessibilityRole { DocumentArticle, DocumentMath, DocumentNote, + Emphasis, Feed, Figure, Footer, @@ -224,6 +225,7 @@ enum class AccessibilityRole { SpinButtonPart, Splitter, StaticText, + Strong, Subscript, Suggestion, Summary, @@ -330,6 +332,8 @@ ALWAYS_INLINE String accessibilityRoleToString(AccessibilityRole role) return "DocumentMath"_s; case AccessibilityRole::DocumentNote: return "DocumentNote"_s; + case AccessibilityRole::Emphasis: + return "Emphasis"_s; case AccessibilityRole::Feed: return "Feed"_s; case AccessibilityRole::Figure: @@ -480,6 +484,8 @@ ALWAYS_INLINE String accessibilityRoleToString(AccessibilityRole role) return "Splitter"_s; case AccessibilityRole::StaticText: return "StaticText"_s; + case AccessibilityRole::Strong: + return "Strong"_s; case AccessibilityRole::Subscript: return "Subscript"_s; case AccessibilityRole::Suggestion: diff --git a/Source/WebCore/accessibility/AccessibilityObject.cpp b/Source/WebCore/accessibility/AccessibilityObject.cpp index 52cf02d7ce08..bd0ba400b7c7 100644 --- a/Source/WebCore/accessibility/AccessibilityObject.cpp +++ b/Source/WebCore/accessibility/AccessibilityObject.cpp @@ -2667,6 +2667,7 @@ static void initializeRoleMap() { "doc-subtitle"_s, AccessibilityRole::Heading }, { "doc-tip"_s, AccessibilityRole::DocumentNote }, { "doc-toc"_s, AccessibilityRole::LandmarkNavigation }, + { "emphasis"_s, AccessibilityRole::Emphasis }, { "figure"_s, AccessibilityRole::Figure }, { "generic"_s, AccessibilityRole::Generic }, // The mappings for 'graphics-*' roles are defined in this spec: https://w3c.github.io/graphics-aam/ @@ -2727,6 +2728,7 @@ static void initializeRoleMap() { "subscript"_s, AccessibilityRole::Subscript }, { "suggestion"_s, AccessibilityRole::Suggestion }, { "superscript"_s, AccessibilityRole::Superscript }, + { "strong"_s, AccessibilityRole::Strong }, { "switch"_s, AccessibilityRole::Switch }, { "tab"_s, AccessibilityRole::Tab }, { "tablist"_s, AccessibilityRole::TabList }, diff --git a/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp b/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp index 5187b2fa356d..b25638bae400 100644 --- a/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp +++ b/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp @@ -354,6 +354,7 @@ static Atspi::Role atspiRole(AccessibilityRole role) case AccessibilityRole::Mark: return Atspi::Role::Mark; case AccessibilityRole::Details: + case AccessibilityRole::Emphasis: case AccessibilityRole::Ignored: case AccessibilityRole::Incrementor: case AccessibilityRole::LineBreak: @@ -367,6 +368,7 @@ static Atspi::Role atspiRole(AccessibilityRole role) case AccessibilityRole::RubyText: case AccessibilityRole::SliderThumb: case AccessibilityRole::SpinButtonPart: + case AccessibilityRole::Strong: case AccessibilityRole::Summary: case AccessibilityRole::TableHeaderContainer: case AccessibilityRole::Suggestion: diff --git a/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm b/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm index 9243ad6bd349..8625d702de04 100644 --- a/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm +++ b/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm @@ -1033,6 +1033,7 @@ - (BOOL)determineIsAccessibilityElement case AccessibilityRole::Document: case AccessibilityRole::DocumentArticle: case AccessibilityRole::DocumentNote: + case AccessibilityRole::Emphasis: case AccessibilityRole::Feed: case AccessibilityRole::Figure: case AccessibilityRole::Footer: @@ -1081,6 +1082,7 @@ - (BOOL)determineIsAccessibilityElement case AccessibilityRole::ScrollBar: case AccessibilityRole::SpinButtonPart: case AccessibilityRole::Splitter: + case AccessibilityRole::Strong: case AccessibilityRole::Subscript: case AccessibilityRole::Suggestion: case AccessibilityRole::Superscript: diff --git a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm b/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm index fdd67fecc840..09fe4fad313d 100644 --- a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm +++ b/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm @@ -906,6 +906,7 @@ PlatformRoleMap createPlatformRoleMap() { AccessibilityRole::DocumentArticle, NSAccessibilityGroupRole }, { AccessibilityRole::DocumentMath, NSAccessibilityGroupRole }, { AccessibilityRole::DocumentNote, NSAccessibilityGroupRole }, + { AccessibilityRole::Emphasis, NSAccessibilityGroupRole }, { AccessibilityRole::UserInterfaceTooltip, NSAccessibilityGroupRole }, { AccessibilityRole::Tab, NSAccessibilityRadioButtonRole }, { AccessibilityRole::TabList, NSAccessibilityTabGroupRole }, @@ -954,6 +955,7 @@ PlatformRoleMap createPlatformRoleMap() { AccessibilityRole::Caption, NSAccessibilityGroupRole }, { AccessibilityRole::Deletion, NSAccessibilityGroupRole }, { AccessibilityRole::Insertion, NSAccessibilityGroupRole }, + { AccessibilityRole::Strong, NSAccessibilityGroupRole }, { AccessibilityRole::Subscript, NSAccessibilityGroupRole }, { AccessibilityRole::Superscript, NSAccessibilityGroupRole }, { AccessibilityRole::Model, NSAccessibilityGroupRole },