Title: [287424] trunk/Source/WebCore
Revision
287424
Author
[email protected]
Date
2021-12-24 02:48:46 -0800 (Fri, 24 Dec 2021)

Log Message

[GTK][a11y] Expose the right roles for math elements with ATSPI
https://bugs.webkit.org/show_bug.cgi?id=234634

Reviewed by Adrian Perez de Castro.

This is missing with ATSPI causing all a11y mathml layout tests to fail.

* accessibility/atspi/AccessibilityObjectAtspi.cpp:
(WebCore::atspiRole):
(WebCore::AccessibilityObjectAtspi::attributes const):
(WebCore::AccessibilityObjectAtspi::effectiveRole const):
(WebCore::AccessibilityObjectAtspi::effectiveRoleName const):
(WebCore::AccessibilityObjectAtspi::effectiveLocalizedRoleName const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (287423 => 287424)


--- trunk/Source/WebCore/ChangeLog	2021-12-24 10:47:51 UTC (rev 287423)
+++ trunk/Source/WebCore/ChangeLog	2021-12-24 10:48:46 UTC (rev 287424)
@@ -1,5 +1,21 @@
 2021-12-24  Carlos Garcia Campos  <[email protected]>
 
+        [GTK][a11y] Expose the right roles for math elements with ATSPI
+        https://bugs.webkit.org/show_bug.cgi?id=234634
+
+        Reviewed by Adrian Perez de Castro.
+
+        This is missing with ATSPI causing all a11y mathml layout tests to fail.
+
+        * accessibility/atspi/AccessibilityObjectAtspi.cpp:
+        (WebCore::atspiRole):
+        (WebCore::AccessibilityObjectAtspi::attributes const):
+        (WebCore::AccessibilityObjectAtspi::effectiveRole const):
+        (WebCore::AccessibilityObjectAtspi::effectiveRoleName const):
+        (WebCore::AccessibilityObjectAtspi::effectiveLocalizedRoleName const):
+
+2021-12-24  Carlos Garcia Campos  <[email protected]>
+
         [GTK][a11y] Expose list items with pseudo marker as List instead of Group with ATSPI
         https://bugs.webkit.org/show_bug.cgi?id=234633
 

Modified: trunk/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp (287423 => 287424)


--- trunk/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp	2021-12-24 10:47:51 UTC (rev 287423)
+++ trunk/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp	2021-12-24 10:48:46 UTC (rev 287424)
@@ -327,8 +327,6 @@
         return Atspi::Role::Definition;
     case AccessibilityRole::DocumentMath:
         return Atspi::Role::Math;
-    case AccessibilityRole::MathElement:
-        return Atspi::Role::MathFraction;
     case AccessibilityRole::LandmarkBanner:
     case AccessibilityRole::LandmarkComplementary:
     case AccessibilityRole::LandmarkContentInfo:
@@ -390,6 +388,7 @@
     case AccessibilityRole::ValueIndicator:
         return Atspi::Role::Unknown;
     case AccessibilityRole::ListMarker:
+    case AccessibilityRole::MathElement:
         RELEASE_ASSERT_NOT_REACHED();
     }
 
@@ -1026,6 +1025,11 @@
     if (!keyShortcuts.isEmpty())
         map.add("keyshortcuts", keyShortcuts);
 
+    if (m_coreObject->isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType::PreSuperscript) || m_coreObject->isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType::PreSubscript))
+        map.add("multiscript-type", "pre");
+    else if (m_coreObject->isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType::PostSuperscript) || m_coreObject->isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType::PostSubscript))
+        map.add("multiscript-type", "post");
+
     return map;
 }
 
@@ -1258,6 +1262,32 @@
             auto* renderer = m_coreObject->renderer();
             return renderer && renderer->isImage() ? Atspi::Role::Image : Atspi::Role::Text;
         });
+    case AccessibilityRole::MathElement:
+        if (m_axObject->isMathRow())
+            return Atspi::Role::Panel;
+        if (m_axObject->isMathTable())
+            return Atspi::Role::Table;
+        if (m_axObject->isMathTableRow())
+            return Atspi::Role::TableRow;
+        if (m_axObject->isMathTableCell())
+            return Atspi::Role::TableCell;
+        if (m_axObject->isMathSubscriptSuperscript() || m_axObject->isMathMultiscript())
+            return Atspi::Role::Section;
+        if (m_axObject->isMathFraction())
+            return Atspi::Role::MathFraction;
+        if (m_axObject->isMathSquareRoot() || m_coreObject->isMathRoot())
+            return Atspi::Role::MathRoot;
+        if (m_axObject->isMathScriptObject(AccessibilityMathScriptObjectType::Subscript)
+            || m_axObject->isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType::PreSubscript)
+            || m_axObject->isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType::PostSubscript))
+            return Atspi::Role::Subscript;
+        if (m_axObject->isMathScriptObject(AccessibilityMathScriptObjectType::Superscript)
+            || m_axObject->isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType::PreSuperscript)
+            || m_axObject->isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType::PostSuperscript))
+            return Atspi::Role::Superscript;
+        if (m_axObject->isMathToken())
+            return Atspi::Role::Static;
+        break;
     default:
         break;
     }
@@ -1287,9 +1317,28 @@
     case Atspi::Role::Image:
         return "image";
     case Atspi::Role::Text:
+    case Atspi::Role::Static:
         return "text";
     case Atspi::Role::InvalidRole:
         return "invalid";
+    case Atspi::Role::Panel:
+        return "panel";
+    case Atspi::Role::Table:
+        return "table";
+    case Atspi::Role::TableRow:
+        return "table row";
+    case Atspi::Role::TableCell:
+        return "table cell";
+    case Atspi::Role::Section:
+        return "section";
+    case Atspi::Role::MathFraction:
+        return "math fraction";
+    case Atspi::Role::MathRoot:
+        return "math root";
+    case Atspi::Role::Subscript:
+        return "subscript";
+    case Atspi::Role::Superscript:
+        return "superscript";
     default:
         break;
     }
@@ -1320,9 +1369,28 @@
     case Atspi::Role::Image:
         return AccessibilityAtspi::localizedRoleName(AccessibilityRole::Image);
     case Atspi::Role::Text:
+    case Atspi::Role::Static:
         return AccessibilityAtspi::localizedRoleName(AccessibilityRole::StaticText);
     case Atspi::Role::InvalidRole:
         return _("invalid");
+    case Atspi::Role::Panel:
+        return AccessibilityAtspi::localizedRoleName(AccessibilityRole::Group);
+    case Atspi::Role::Table:
+        return AccessibilityAtspi::localizedRoleName(AccessibilityRole::Table);
+    case Atspi::Role::TableRow:
+        return AccessibilityAtspi::localizedRoleName(AccessibilityRole::Row);
+    case Atspi::Role::TableCell:
+        return AccessibilityAtspi::localizedRoleName(AccessibilityRole::Cell);
+    case Atspi::Role::Section:
+        return AccessibilityAtspi::localizedRoleName(AccessibilityRole::Div);
+    case Atspi::Role::MathFraction:
+        return _("math fraction");
+    case Atspi::Role::MathRoot:
+        return _("math root");
+    case Atspi::Role::Subscript:
+        return AccessibilityAtspi::localizedRoleName(AccessibilityRole::Subscript);
+    case Atspi::Role::Superscript:
+        return AccessibilityAtspi::localizedRoleName(AccessibilityRole::Superscript);
     default:
         break;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to