Title: [185558] trunk
Revision
185558
Author
[email protected]
Date
2015-06-15 11:39:20 -0700 (Mon, 15 Jun 2015)

Log Message

AX: no accessibility support for details element
https://bugs.webkit.org/show_bug.cgi?id=131111

Reviewed by Darin Adler.

Source/WebCore:

Add accessibility support for Mac for details element by:
   1) Returning new subroles for <details> and <summary>
   2) Exposing isExpanded property for <details> element.

Test: platform/mac/accessibility/details-summary.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::supportsARIAPressed):
(WebCore::AccessibilityObject::supportsExpanded):
(WebCore::AccessibilityObject::isExpanded):
(WebCore::AccessibilityObject::supportsARIAExpanded): Deleted.
* accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::canvasHasFallbackContent):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilitySupportsARIAExpanded]):
(-[WebAccessibilityObjectWrapper accessibilityIsExpanded]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):
* html/HTMLDetailsElement.h:
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

LayoutTests:

* platform/mac/accessibility/details-summary-expected.txt: Added.
* platform/mac/accessibility/details-summary.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (185557 => 185558)


--- trunk/LayoutTests/ChangeLog	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/LayoutTests/ChangeLog	2015-06-15 18:39:20 UTC (rev 185558)
@@ -1,3 +1,13 @@
+2015-06-15  Chris Fleizach  <[email protected]>
+
+        AX: no accessibility support for details element
+        https://bugs.webkit.org/show_bug.cgi?id=131111
+
+        Reviewed by Darin Adler.
+
+        * platform/mac/accessibility/details-summary-expected.txt: Added.
+        * platform/mac/accessibility/details-summary.html: Added.
+
 2015-06-13  Chris Fleizach  <[email protected]>
 
         AX: WebKit exposes all Ruby Text as Unknown (Japanese EPUB accessibility blocker)

Added: trunk/LayoutTests/platform/mac/accessibility/details-summary-expected.txt (0 => 185558)


--- trunk/LayoutTests/platform/mac/accessibility/details-summary-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/accessibility/details-summary-expected.txt	2015-06-15 18:39:20 UTC (rev 185558)
@@ -0,0 +1,20 @@
+Some open info
+Details about the open topic.
+
+Some open info
+This tests some basic attributes about the details element.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS details1.role is 'AXRole: AXGroup'
+PASS details1.subrole is 'AXSubrole: AXDetails'
+PASS details1.isExpanded is true
+PASS details1.childAtIndex(0).role is 'AXRole: AXGroup'
+PASS details1.childAtIndex(0).subrole is 'AXSubrole: AXSummary'
+PASS details2.subrole is 'AXSubrole: AXDetails'
+PASS details2.isExpanded is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/platform/mac/accessibility/details-summary.html (0 => 185558)


--- trunk/LayoutTests/platform/mac/accessibility/details-summary.html	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/accessibility/details-summary.html	2015-06-15 18:39:20 UTC (rev 185558)
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body id="body">
+
+<details open id="details1">
+  <summary>Some open info</summary>
+  <p>Details about the open topic.</p>
+</details>
+
+<details id="details2">
+  <summary>Some open info</summary>
+  <p>Details about the open topic.</p>
+</details>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+    description("This tests some basic attributes about the details element.");
+
+    if (window.accessibilityController) {
+
+        var details1 = accessibilityController.accessibleElementById("details1");
+        shouldBe("details1.role", "'AXRole: AXGroup'");
+        shouldBe("details1.subrole", "'AXSubrole: AXDetails'");
+        shouldBeTrue("details1.isExpanded");
+        shouldBe("details1.childAtIndex(0).role", "'AXRole: AXGroup'");
+        shouldBe("details1.childAtIndex(0).subrole", "'AXSubrole: AXSummary'");
+
+        var details2 = accessibilityController.accessibleElementById("details2");
+        shouldBe("details2.subrole", "'AXSubrole: AXDetails'");
+        shouldBeFalse("details2.isExpanded");
+    }
+
+</script>
+
+<script src=""
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (185557 => 185558)


--- trunk/Source/WebCore/ChangeLog	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/Source/WebCore/ChangeLog	2015-06-15 18:39:20 UTC (rev 185558)
@@ -1,3 +1,37 @@
+2015-06-15  Chris Fleizach  <[email protected]>
+
+        AX: no accessibility support for details element
+        https://bugs.webkit.org/show_bug.cgi?id=131111
+
+        Reviewed by Darin Adler.
+
+        Add accessibility support for Mac for details element by:
+           1) Returning new subroles for <details> and <summary>
+           2) Exposing isExpanded property for <details> element.
+
+        Test: platform/mac/accessibility/details-summary.html
+
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::supportsARIAPressed):
+        (WebCore::AccessibilityObject::supportsExpanded):
+        (WebCore::AccessibilityObject::isExpanded):
+        (WebCore::AccessibilityObject::supportsARIAExpanded): Deleted.
+        * accessibility/AccessibilityObject.h:
+        (WebCore::AccessibilityObject::canvasHasFallbackContent):
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
+        (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
+        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+        (-[WebAccessibilityObjectWrapper accessibilitySupportsARIAExpanded]):
+        (-[WebAccessibilityObjectWrapper accessibilityIsExpanded]):
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        (-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
+        (createAccessibilityRoleMap):
+        (-[WebAccessibilityObjectWrapper subrole]):
+        * html/HTMLDetailsElement.h:
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
+
 2015-06-15  Alex Christensen  <[email protected]>
 
         [Content Extensions] Limit number of rules.

Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (185557 => 185558)


--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp	2015-06-15 18:39:20 UTC (rev 185558)
@@ -41,6 +41,7 @@
 #include "Frame.h"
 #include "FrameLoader.h"
 #include "FrameSelection.h"
+#include "HTMLDetailsElement.h"
 #include "HTMLInputElement.h"
 #include "HTMLNames.h"
 #include "HTMLParserIdioms.h"
@@ -2219,7 +2220,7 @@
     return equalIgnoringCase(expanded, "true") || equalIgnoringCase(expanded, "false");
 }
     
-bool AccessibilityObject::supportsARIAExpanded() const
+bool AccessibilityObject::supportsExpanded() const
 {
     // Undefined values should not result in this attribute being exposed to ATs according to ARIA.
     const AtomicString& expanded = getAttribute(aria_expandedAttr);
@@ -2228,6 +2229,7 @@
     switch (roleValue()) {
     case ComboBoxRole:
     case DisclosureTriangleRole:
+    case DetailsRole:
         return true;
     default:
         return false;
@@ -2239,6 +2241,9 @@
     if (equalIgnoringCase(getAttribute(aria_expandedAttr), "true"))
         return true;
     
+    if (is<HTMLDetailsElement>(node()))
+        return downcast<HTMLDetailsElement>(node())->isOpen();
+    
     return false;  
 }
 

Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.h (185557 => 185558)


--- trunk/Source/WebCore/accessibility/AccessibilityObject.h	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.h	2015-06-15 18:39:20 UTC (rev 185558)
@@ -118,6 +118,7 @@
     DescriptionListRole,
     DescriptionListTermRole,
     DescriptionListDetailRole,
+    DetailsRole,
     DirectoryRole,
     DisclosureTriangleRole,
     DivRole,
@@ -195,6 +196,7 @@
     SplitGroupRole,
     SplitterRole,
     StaticTextRole,
+    SummaryRole,
     SwitchRole,
     SystemWideRole,
     SVGRootRole,
@@ -612,7 +614,7 @@
     bool ariaIsMultiline() const;
     String invalidStatus() const;
     bool supportsARIAPressed() const;
-    bool supportsARIAExpanded() const;
+    bool supportsExpanded() const;
     bool supportsChecked() const;
     AccessibilitySortDirection sortDirection() const;
     virtual bool canvasHasFallbackContent() const { return false; }

Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (185557 => 185558)


--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp	2015-06-15 18:39:20 UTC (rev 185558)
@@ -1256,6 +1256,7 @@
     case AudioRole:
     case DescriptionListTermRole:
     case DescriptionListDetailRole:
+    case DetailsRole:
     case DocumentArticleRole:
     case DocumentRegionRole:
     case ListItemRole:
@@ -2651,6 +2652,11 @@
     if (node && node->hasTagName(preTag))
         return PreRole;
 
+    if (is<HTMLDetailsElement>(node))
+        return DetailsRole;
+    if (is<HTMLSummaryElement>(node))
+        return SummaryRole;
+
 #if ENABLE(VIDEO)
     if (is<HTMLVideoElement>(node))
         return VideoRole;

Modified: trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (185557 => 185558)


--- trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm	2015-06-15 18:39:20 UTC (rev 185558)
@@ -2326,7 +2326,7 @@
     if (![self _prepareAccessibilityCall])
         return NO;
     
-    return m_object->supportsARIAExpanded();
+    return m_object->supportsExpanded();
 }
 
 - (BOOL)accessibilityIsExpanded

Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (185557 => 185558)


--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2015-06-15 18:39:20 UTC (rev 185558)
@@ -1214,7 +1214,7 @@
     if (m_object->isToggleButton())
         [additional addObject:NSAccessibilityValueAttribute];
     
-    if (m_object->supportsARIAExpanded())
+    if (m_object->supportsExpanded())
         [additional addObject:NSAccessibilityExpandedAttribute];
     
     if (m_object->isScrollbar())
@@ -1985,6 +1985,8 @@
         { RubyInlineRole, NSAccessibilityGroupRole },
         { RubyRunRole, NSAccessibilityGroupRole },
         { RubyTextRole, NSAccessibilityGroupRole },
+        { DetailsRole, NSAccessibilityGroupRole },
+        { SummaryRole, NSAccessibilityGroupRole },
     };
     AccessibilityRoleMap& roleMap = *new AccessibilityRoleMap;
     
@@ -2161,6 +2163,10 @@
         return @"AXVideo";
     if (role == AudioRole)
         return @"AXAudio";
+    if (role == DetailsRole)
+        return @"AXDetails";
+    if (role == SummaryRole)
+        return @"AXSummary";
     
     if (m_object->isMediaTimeline())
         return NSAccessibilityTimelineSubrole;

Modified: trunk/Source/WebCore/html/HTMLDetailsElement.h (185557 => 185558)


--- trunk/Source/WebCore/html/HTMLDetailsElement.h	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/Source/WebCore/html/HTMLDetailsElement.h	2015-06-15 18:39:20 UTC (rev 185558)
@@ -31,7 +31,8 @@
     void toggleOpen();
 
     const Element* findMainSummary() const;
-
+    bool isOpen() const { return m_isOpen; }
+    
 private:
     HTMLDetailsElement(const QualifiedName&, Document&);
 

Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (185557 => 185558)


--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp	2015-06-15 18:08:11 UTC (rev 185557)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp	2015-06-15 18:39:20 UTC (rev 185558)
@@ -1510,7 +1510,7 @@
             disabled = !axObject->isEnabled(); 
             exists = true;
             
-            supportsExpanded = axObject->supportsARIAExpanded();
+            supportsExpanded = axObject->supportsExpanded();
             if (supportsExpanded)
                 expanded = axObject->isExpanded();
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to