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();