AX: [ATK] MathML tokens, tables, and row-like elements are exposed with ATK_ROLE_UNKNOWN
authorjdiggs@igalia.com <jdiggs@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Dec 2014 18:31:53 +0000 (18:31 +0000)
committerjdiggs@igalia.com <jdiggs@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Dec 2014 18:31:53 +0000 (18:31 +0000)
https://bugs.webkit.org/show_bug.cgi?id=139402

Reviewed by Chris Fleizach.

Source/WebCore:

Expose tables and their children using existing table AtkRole types,
token elements using the new ATK_ROLE_STATIC, and row-like elements
using ATK_ROLE_PANEL. Also expose <mlabeledtr> as a math table row
and <ms> as math text.

No new tests; instead, added MathML elements to roles-exposed.html.

* accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::isMathToken):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::isMathToken):
(WebCore::AccessibilityRenderObject::isMathText):
(WebCore::AccessibilityRenderObject::isMathTableRow):
* accessibility/AccessibilityRenderObject.h:
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(atkRole):
* css/mathml.css:
(ms, mi, mo, mrow, mfenced, mfrac, msub, msup, msubsup, mmultiscripts, mprescripts, none, munder, mover, munderover, msqrt, mroot, merror, mphantom, mstyle, menclose):
(mi, mo, mrow, mfenced, mfrac, msub, msup, msubsup, mmultiscripts, mprescripts, none, munder, mover, munderover, msqrt, mroot, merror, mphantom, mstyle, menclose): Deleted.
* mathml/mathtags.in:

LayoutTests:

* accessibility/roles-exposed.html: Added MathML elements.
* platform/efl/accessibility/roles-exposed-expected.txt: Updated for added elements.
* platform/gtk/accessibility/roles-exposed-expected.txt: Updated for added elements.
* platform/mac-mavericks/accessibility/roles-exposed-expected.txt: Updated for added elements.
* platform/mac-mountainlion/accessibility/roles-exposed-expected.txt: Updated for added elements.
* platform/mac/accessibility/roles-exposed-expected.txt: Updated for added elements.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@177025 268f45cc-cd09-0410-ab3c-d52691b4dbfc

14 files changed:
LayoutTests/ChangeLog
LayoutTests/accessibility/roles-exposed.html
LayoutTests/platform/efl/accessibility/roles-exposed-expected.txt
LayoutTests/platform/gtk/accessibility/roles-exposed-expected.txt
LayoutTests/platform/mac-mavericks/accessibility/roles-exposed-expected.txt
LayoutTests/platform/mac-mountainlion/accessibility/roles-exposed-expected.txt
LayoutTests/platform/mac/accessibility/roles-exposed-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/accessibility/AccessibilityObject.h
Source/WebCore/accessibility/AccessibilityRenderObject.cpp
Source/WebCore/accessibility/AccessibilityRenderObject.h
Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
Source/WebCore/css/mathml.css
Source/WebCore/mathml/mathtags.in

index 26ce55c..0f2894b 100644 (file)
@@ -1,5 +1,19 @@
 2014-12-09  Joanmarie Diggs  <jdiggs@igalia.com>
 
+        AX: [ATK] MathML tokens, tables, and row-like elements are exposed with ATK_ROLE_UNKNOWN
+        https://bugs.webkit.org/show_bug.cgi?id=139402
+
+        Reviewed by Chris Fleizach.
+
+        * accessibility/roles-exposed.html: Added MathML elements.
+        * platform/efl/accessibility/roles-exposed-expected.txt: Updated for added elements.
+        * platform/gtk/accessibility/roles-exposed-expected.txt: Updated for added elements.
+        * platform/mac-mavericks/accessibility/roles-exposed-expected.txt: Updated for added elements.
+        * platform/mac-mountainlion/accessibility/roles-exposed-expected.txt: Updated for added elements.
+        * platform/mac/accessibility/roles-exposed-expected.txt: Updated for added elements.
+
+2014-12-09  Joanmarie Diggs  <jdiggs@igalia.com>
+
         [GTK] Bump minimum version of ATK used by jhbuild to at least 2.15.2
         https://bugs.webkit.org/show_bug.cgi?id=139070
 
index 427645d..5217f01 100644 (file)
   <area data-platform="atk,mac" class="ex" shape="rect" coords="0,0,10,10" href="#" title="x" />
 </map>
 <!-- http://webkit.org/b/109018 --><mark data-platform="atk,mac" class="ex">X</mark>
+<!-- Some MathML elements do not become hidden by display: none, so hide them after the test via a parent element. http://webkit.org/b/139403 --><div class="ex">
 <math data-platform="atk,mac" class="ex">X</math>
+<math><merror data-platform="atk,mac" class="ex">X</merror></math>
+<math><mfenced data-platform="atk,mac" class="ex"><mi class="ex">X</mi></mfenced></math>
+<math><mfrac data-platform="atk,mac" class="ex"><mi class="ex">X</mi><mn class="ex">Y</mn></mfrac></math>
+<math><mi data-platform="atk,mac" class="ex">X</mi></math>
+<math><mn data-platform="atk,mac" class="ex">X</mn></math>
+<math><mo data-platform="atk,mac" class="ex">X</mo></math>
+<math><mroot data-platform="atk,mac" class="ex">X</mroot></math>
+<math><msqrt data-platform="atk,mac" class="ex">X</msqrt></math>
+<math><mrow data-platform="atk,mac" class="ex"><mi class="ex">X</mi></mrow></math>
+<math><ms data-platform="atk,mac" class="ex">X</ms></math>
+<math><mtext data-platform="atk,mac" class="ex">X</mtext></math>
+<math>
+  <mtable data-platform="atk,mac" class="ex">
+    <mlabeledtr data-platform="atk,mac" class="ex"><mtd data-platform="atk,mac" class="ex">X</mtd></mlabeledtr>
+    <mtr data-platform="atk,mac" class="ex"><mtd data-platform="atk,mac" class="ex">X</mtd></mtr>
+  </mtable>
+</math>
+</div>
 <!-- skipped <menu> -->
 <!-- skipped <meta> -->
 <meter data-platform="atk,mac" class="ex" value="0.75">X</meter>
index cd77577..379cb9b 100644 (file)
@@ -1,4 +1,4 @@
- X
+X
 This tests that native elements and ARIA overrides result in the expected role, subrole and role description.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
@@ -220,6 +220,54 @@ mark
 math
       AXRole: AXMath
       
+merror
+      AXRole: AXGroup
+      
+mfenced
+      AXRole: AXGroup
+      
+mfrac
+      AXRole: AXUnknown
+      
+mi
+      AXRole: AXUnknown
+      
+mn
+      AXRole: AXUnknown
+      
+mo
+      AXRole: AXUnknown
+      
+mroot
+      AXRole: AXUnknown
+      
+msqrt
+      AXRole: AXUnknown
+      
+mrow
+      AXRole: AXGroup
+      
+ms
+      AXRole: AXUnknown
+      
+mtext
+      AXRole: AXUnknown
+      
+mtable
+      AXRole: AXTable
+      
+mlabeledtr
+      AXRole: AXRow
+      
+mtd
+      AXRole: AXCell
+      
+mtr
+      AXRole: AXRow
+      
+mtd
+      AXRole: AXCell
+      
 meter
       AXRole: AXProgressIndicator
       
index c162d09..3b62db4 100644 (file)
@@ -1,4 +1,4 @@
- X
+X
 This tests that native elements and ARIA overrides result in the expected role, subrole and role description.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
@@ -220,6 +220,54 @@ mark
 math
       AXRole: AXMath
       
+merror
+      AXRole: AXGroup
+      
+mfenced
+      AXRole: AXGroup
+      
+mfrac
+      AXRole: AXUnknown
+      
+mi
+      AXRole: AXStatic
+      
+mn
+      AXRole: AXStatic
+      
+mo
+      AXRole: AXStatic
+      
+mroot
+      AXRole: AXUnknown
+      
+msqrt
+      AXRole: AXUnknown
+      
+mrow
+      AXRole: AXGroup
+      
+ms
+      AXRole: AXStatic
+      
+mtext
+      AXRole: AXStatic
+      
+mtable
+      AXRole: AXTable
+      
+mlabeledtr
+      AXRole: AXRow
+      
+mtd
+      AXRole: AXCell
+      
+mtr
+      AXRole: AXRow
+      
+mtd
+      AXRole: AXCell
+      
 meter
       AXRole: AXProgressIndicator
       
index f467e4a..01525cd 100644 (file)
@@ -1,4 +1,4 @@
- X
+X
 This tests that native elements and ARIA overrides result in the expected role, subrole and role description.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
@@ -364,6 +364,86 @@ math
       AXSubrole: AXDocumentMath
       AXRoleDescription: math
       
+merror
+      AXRole: AXGroup
+      AXSubrole: AXMathRow
+      AXRoleDescription: group
+      
+mfenced
+      AXRole: AXGroup
+      AXSubrole: AXMathFenced
+      AXRoleDescription: group
+      
+mfrac
+      AXRole: AXGroup
+      AXSubrole: AXMathFraction
+      AXRoleDescription: group
+      
+mi
+      AXRole: AXGroup
+      AXSubrole: AXMathIdentifier
+      AXRoleDescription: group
+      
+mn
+      AXRole: AXGroup
+      AXSubrole: AXMathNumber
+      AXRoleDescription: group
+      
+mo
+      AXRole: AXGroup
+      AXSubrole: AXMathOperator
+      AXRoleDescription: group
+      
+mroot
+      AXRole: AXGroup
+      AXSubrole: AXMathRoot
+      AXRoleDescription: group
+      
+msqrt
+      AXRole: AXGroup
+      AXSubrole: AXMathSquareRoot
+      AXRoleDescription: group
+      
+mrow
+      AXRole: AXGroup
+      AXSubrole: AXMathRow
+      AXRoleDescription: group
+      
+ms
+      AXRole: AXGroup
+      AXSubrole: AXMathText
+      AXRoleDescription: group
+      
+mtext
+      AXRole: AXGroup
+      AXSubrole: AXMathText
+      AXRoleDescription: group
+      
+mtable
+      AXRole: AXGroup
+      AXSubrole: AXMathTable
+      AXRoleDescription: group
+      
+mlabeledtr
+      AXRole: AXGroup
+      AXSubrole: AXMathTableRow
+      AXRoleDescription: group
+      
+mtd
+      AXRole: AXGroup
+      AXSubrole: AXMathTableCell
+      AXRoleDescription: group
+      
+mtr
+      AXRole: AXGroup
+      AXSubrole: AXMathTableRow
+      AXRoleDescription: group
+      
+mtd
+      AXRole: AXGroup
+      AXSubrole: AXMathTableCell
+      AXRoleDescription: group
+      
 meter
       AXRole: AXProgressIndicator
       AXSubrole: 
index 8fe310f..6de04ec 100644 (file)
@@ -1,4 +1,4 @@
- X
+X
 This tests that native elements and ARIA overrides result in the expected role, subrole and role description.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
@@ -364,6 +364,86 @@ math
       AXSubrole: AXDocumentMath
       AXRoleDescription: math
       
+merror
+      AXRole: AXGroup
+      AXSubrole: AXMathRow
+      AXRoleDescription: group
+      
+mfenced
+      AXRole: AXGroup
+      AXSubrole: AXMathFenced
+      AXRoleDescription: group
+      
+mfrac
+      AXRole: AXGroup
+      AXSubrole: AXMathFraction
+      AXRoleDescription: group
+      
+mi
+      AXRole: AXGroup
+      AXSubrole: AXMathIdentifier
+      AXRoleDescription: group
+      
+mn
+      AXRole: AXGroup
+      AXSubrole: AXMathNumber
+      AXRoleDescription: group
+      
+mo
+      AXRole: AXGroup
+      AXSubrole: AXMathOperator
+      AXRoleDescription: group
+      
+mroot
+      AXRole: AXGroup
+      AXSubrole: AXMathRoot
+      AXRoleDescription: group
+      
+msqrt
+      AXRole: AXGroup
+      AXSubrole: AXMathSquareRoot
+      AXRoleDescription: group
+      
+mrow
+      AXRole: AXGroup
+      AXSubrole: AXMathRow
+      AXRoleDescription: group
+      
+ms
+      AXRole: AXGroup
+      AXSubrole: AXMathText
+      AXRoleDescription: group
+      
+mtext
+      AXRole: AXGroup
+      AXSubrole: AXMathText
+      AXRoleDescription: group
+      
+mtable
+      AXRole: AXGroup
+      AXSubrole: AXMathTable
+      AXRoleDescription: group
+      
+mlabeledtr
+      AXRole: AXGroup
+      AXSubrole: AXMathTableRow
+      AXRoleDescription: group
+      
+mtd
+      AXRole: AXGroup
+      AXSubrole: AXMathTableCell
+      AXRoleDescription: group
+      
+mtr
+      AXRole: AXGroup
+      AXSubrole: AXMathTableRow
+      AXRoleDescription: group
+      
+mtd
+      AXRole: AXGroup
+      AXSubrole: AXMathTableCell
+      AXRoleDescription: group
+      
 meter
       AXRole: AXProgressIndicator
       AXSubrole: 
index a45ebd1..1c8a062 100644 (file)
@@ -1,4 +1,4 @@
- X
+X
 This tests that native elements and ARIA overrides result in the expected role, subrole and role description.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
@@ -364,6 +364,86 @@ math
       AXSubrole: AXDocumentMath
       AXRoleDescription: math
       
+merror
+      AXRole: AXGroup
+      AXSubrole: AXMathRow
+      AXRoleDescription: group
+      
+mfenced
+      AXRole: AXGroup
+      AXSubrole: AXMathFenced
+      AXRoleDescription: group
+      
+mfrac
+      AXRole: AXGroup
+      AXSubrole: AXMathFraction
+      AXRoleDescription: group
+      
+mi
+      AXRole: AXGroup
+      AXSubrole: AXMathIdentifier
+      AXRoleDescription: group
+      
+mn
+      AXRole: AXGroup
+      AXSubrole: AXMathNumber
+      AXRoleDescription: group
+      
+mo
+      AXRole: AXGroup
+      AXSubrole: AXMathOperator
+      AXRoleDescription: group
+      
+mroot
+      AXRole: AXGroup
+      AXSubrole: AXMathRoot
+      AXRoleDescription: group
+      
+msqrt
+      AXRole: AXGroup
+      AXSubrole: AXMathSquareRoot
+      AXRoleDescription: group
+      
+mrow
+      AXRole: AXGroup
+      AXSubrole: AXMathRow
+      AXRoleDescription: group
+      
+ms
+      AXRole: AXGroup
+      AXSubrole: AXMathText
+      AXRoleDescription: group
+      
+mtext
+      AXRole: AXGroup
+      AXSubrole: AXMathText
+      AXRoleDescription: group
+      
+mtable
+      AXRole: AXGroup
+      AXSubrole: AXMathTable
+      AXRoleDescription: group
+      
+mlabeledtr
+      AXRole: AXGroup
+      AXSubrole: AXMathTableRow
+      AXRoleDescription: group
+      
+mtd
+      AXRole: AXGroup
+      AXSubrole: AXMathTableCell
+      AXRoleDescription: group
+      
+mtr
+      AXRole: AXGroup
+      AXSubrole: AXMathTableRow
+      AXRoleDescription: group
+      
+mtd
+      AXRole: AXGroup
+      AXSubrole: AXMathTableCell
+      AXRoleDescription: group
+      
 meter
       AXRole: AXProgressIndicator
       AXSubrole: 
index 4cd6f45..e5aaa78 100644 (file)
@@ -1,3 +1,31 @@
+2014-12-09  Joanmarie Diggs  <jdiggs@igalia.com>
+
+        AX: [ATK] MathML tokens, tables, and row-like elements are exposed with ATK_ROLE_UNKNOWN
+        https://bugs.webkit.org/show_bug.cgi?id=139402
+
+        Reviewed by Chris Fleizach.
+
+        Expose tables and their children using existing table AtkRole types,
+        token elements using the new ATK_ROLE_STATIC, and row-like elements
+        using ATK_ROLE_PANEL. Also expose <mlabeledtr> as a math table row
+        and <ms> as math text.
+
+        No new tests; instead, added MathML elements to roles-exposed.html.
+
+        * accessibility/AccessibilityObject.h:
+        (WebCore::AccessibilityObject::isMathToken):
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::isMathToken):
+        (WebCore::AccessibilityRenderObject::isMathText):
+        (WebCore::AccessibilityRenderObject::isMathTableRow):
+        * accessibility/AccessibilityRenderObject.h:
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        (atkRole):
+        * css/mathml.css:
+        (ms, mi, mo, mrow, mfenced, mfrac, msub, msup, msubsup, mmultiscripts, mprescripts, none, munder, mover, munderover, msqrt, mroot, merror, mphantom, mstyle, menclose):
+        (mi, mo, mrow, mfenced, mfrac, msub, msup, msubsup, mmultiscripts, mprescripts, none, munder, mover, munderover, msqrt, mroot, merror, mphantom, mstyle, menclose): Deleted.
+        * mathml/mathtags.in:
+
 2014-12-09  Dean Jackson  <dino@apple.com>
 
         [Apple] Use Accelerate framework to speed-up FEGaussianBlur
index 7e80bac..a63e039 100644 (file)
@@ -896,6 +896,7 @@ public:
     virtual bool isMathTableRow() const { return false; }
     virtual bool isMathTableCell() const { return false; }
     virtual bool isMathMultiscript() const { return false; }
+    virtual bool isMathToken() const { return false; }
 
     // Root components.
     virtual AccessibilityObject* mathRadicandObject() { return nullptr; }
index 332194b..233bf09 100644 (file)
@@ -3541,6 +3541,11 @@ bool AccessibilityRenderObject::isMathSquareRoot() const
     return m_renderer && m_renderer->isRenderMathMLSquareRoot();
 }
     
+bool AccessibilityRenderObject::isMathToken() const
+{
+    return m_renderer && m_renderer->isRenderMathMLToken();
+}
+
 bool AccessibilityRenderObject::isMathRoot() const
 {
     return m_renderer && m_renderer->isRenderMathMLRoot();
@@ -3572,7 +3577,7 @@ bool AccessibilityRenderObject::isMathSeparatorOperator() const
     
 bool AccessibilityRenderObject::isMathText() const
 {
-    return node() && node()->hasTagName(MathMLNames::mtextTag);
+    return node() && (node()->hasTagName(MathMLNames::mtextTag) || hasTagName(MathMLNames::msTag));
 }
 
 bool AccessibilityRenderObject::isMathNumber() const
@@ -3597,7 +3602,7 @@ bool AccessibilityRenderObject::isMathTable() const
 
 bool AccessibilityRenderObject::isMathTableRow() const
 {
-    return node() && node()->hasTagName(MathMLNames::mtrTag);
+    return node() && (node()->hasTagName(MathMLNames::mtrTag) || hasTagName(MathMLNames::mlabeledtrTag));
 }
 
 bool AccessibilityRenderObject::isMathTableCell() const
index 145a765..6a3c1eb 100644 (file)
@@ -303,6 +303,7 @@ private:
     virtual bool isMathTableRow() const override;
     virtual bool isMathTableCell() const override;
     virtual bool isMathMultiscript() const override;
+    virtual bool isMathToken() const override;
     
     // Generic components.
     virtual AccessibilityObject* mathBaseObject() override;
index 7c0a9dd..c150232 100644 (file)
@@ -649,6 +649,20 @@ static AtkRole atkRole(AccessibilityObject* coreObject)
         return ATK_ROLE_DEFINITION;
     case DocumentMathRole:
         return ATK_ROLE_MATH;
+    case MathElementRole:
+        if (coreObject->isMathRow())
+            return ATK_ROLE_PANEL;
+        if (coreObject->isMathTable())
+            return ATK_ROLE_TABLE;
+        if (coreObject->isMathTableRow())
+            return ATK_ROLE_TABLE_ROW;
+        if (coreObject->isMathTableCell())
+            return ATK_ROLE_TABLE_CELL;
+#if ATK_CHECK_VERSION(2, 15, 2)
+        if (coreObject->isMathToken())
+            return ATK_ROLE_STATIC;
+#endif
+        return ATK_ROLE_UNKNOWN;
     case LandmarkBannerRole:
     case LandmarkComplementaryRole:
     case LandmarkContentInfoRole:
index 8c8a424..707163f 100644 (file)
@@ -33,7 +33,7 @@ math[display="block"] {
     -webkit-margin-after: 1em;
 }
 
-mi, mo, mrow, mfenced, mfrac, msub, msup, msubsup, mmultiscripts, mprescripts, none, munder, mover, munderover, msqrt, mroot, merror, mphantom, mstyle, menclose {
+ms, mi, mo, mrow, mfenced, mfrac, msub, msup, msubsup, mmultiscripts, mprescripts, none, munder, mover, munderover, msqrt, mroot, merror, mphantom, mstyle, menclose {
     display: -webkit-inline-flex !important;
 }
 
index 7cce6d7..5d081d1 100644 (file)
@@ -23,6 +23,7 @@ mi interfaceName=MathMLTextElement
 mn interfaceName=MathMLTextElement
 mo interfaceName=MathMLTextElement
 mtext interfaceName=MathMLTextElement
+ms interfaceName=MathMLTextElement
 mspace interfaceName=MathMLTextElement
 msub interfaceName=MathMLInlineContainerElement
 msup interfaceName=MathMLInlineContainerElement
@@ -41,7 +42,6 @@ mglyph interfaceName=MathMLElement
 mlabeledtr interfaceName=MathMLElement
 mlongdiv interfaceName=MathMLElement
 mpadded interfaceName=MathMLElement
-ms interfaceName=MathMLElement
 mscarries interfaceName=MathMLElement
 mscarry interfaceName=MathMLElement
 msgroup interfaceName=MathMLElement