https://bugs.webkit.org/show_bug.cgi?id=202272
<rdar://problem/
54789907>
Patch by Andres Gonzalez <andresg_22@apple.com> on 2019-09-27
Reviewed by Chris Fleizach.
Source/WebCore:
Test: accessibility/ios-simulator/figure-element.html
Added a role description for the <figure> element.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::roleDescription const):
Tools:
Implemented titleUIElement and roleDescription properties for <figure> elements on iOS.
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::titleUIElement):
(WTR::AccessibilityUIElement::roleDescription):
LayoutTests:
* accessibility/ios-simulator/figure-element-expected.txt: Added.
* accessibility/ios-simulator/figure-element.html: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@250462
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2019-09-27 Andres Gonzalez <andresg_22@apple.com>
+
+ Support accessibility for <figure> element on iOS.
+ https://bugs.webkit.org/show_bug.cgi?id=202272
+ <rdar://problem/54789907>
+
+ Reviewed by Chris Fleizach.
+
+ * accessibility/ios-simulator/figure-element-expected.txt: Added.
+ * accessibility/ios-simulator/figure-element.html: Added.
+
2019-09-27 Truitt Savell <tsavell@apple.com>
fast/images/async-image-multiple-clients-repaint.html
--- /dev/null
+This tests that the 'figure' element is accessible on iOS.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Test figure with aria-label.
+figure1: [object AccessibilityUIElement]
+figure1 AXRoleDescription: figure
+figure1 AXLabel: Figure 1.
+figure1 AXHint:
+PASS !titleUIElement is true
+
+Test figure with title attribute.
+figure2: [object AccessibilityUIElement]
+figure2 AXRoleDescription: figure
+figure2 AXLabel: Figure 2.
+figure2 AXHint:
+PASS !titleUIElement is true
+
+Test figure with aria-describedby.
+figure3: [object AccessibilityUIElement]
+figure3 AXRoleDescription: figure
+figure3 AXLabel:
+figure3 AXHint: This is the description for Figure 3.
+PASS !titleUIElement is true
+
+Test figure with aria-roledescription attribute.
+figure4: [object AccessibilityUIElement]
+figure4 AXRoleDescription: ARIA role description for Figure 4.
+figure4 AXLabel:
+figure4 AXHint:
+PASS !titleUIElement is true
+
+Test figure with figcaption element.
+figure5: [object AccessibilityUIElement]
+figure5 AXRoleDescription: figure
+figure5 AXLabel: Caption for Figure 5.
+figure5 AXHint:
+PASS titleUIElement.isEqual(figureCaption) is true
+
+Test figure with figcaption element and title attribute.
+figure6: [object AccessibilityUIElement]
+figure6 AXRoleDescription: figure
+figure6 AXLabel: Caption for Figure 6.
+figure6 AXHint: Figure 6.
+PASS titleUIElement.isEqual(figureCaption) is true
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+</head>
+<body id="body">
+
+<div id="content">
+
+<p id="p1">Test figure with aria-label.</p>
+<figure id="figure1" aria-label="Figure 1.">
+ <img src="" alt="Alt text for Figure 1." width="20" height="20"/>
+</figure>
+
+<p id="p2">Test figure with title attribute.</p>
+<figure id="figure2" title="Figure 2.">
+ <img src="" alt="Alt text for Figure 2." width="20" height="20"/>
+</figure>
+
+<p id="p3">Test figure with aria-describedby.</p>
+<figure id="figure3" aria-describedby="fig-description">
+ <img src="" alt="Alt text for Figure 3." width="20" height="20"/>
+ <p id="fig-description">This is the description for Figure 3.</p>
+</figure>
+
+<p id="p4">Test figure with aria-roledescription attribute.</p>
+<figure id="figure4" aria-roledescription="ARIA role description for Figure 4.">
+ <img src="" alt="Alt text for Figure 4." width="20" height="20"/>
+</figure>
+
+<p id="p5">Test figure with figcaption element.</p>
+<figure id="figure5">
+ <img src="" alt="Alt text for Figure 5." width="20" height="20"/>
+ <figcaption id="figCaption5">Caption for Figure 5.</figcaption>
+</figure>
+
+<p id="p6">Test figure with figcaption element and title attribute.</p>
+<figure id="figure6" title="Figure 6.">
+ <img src="" alt="Alt text for Figure 6." width="20" height="20"/>
+ <figcaption id="figCaption6">Caption for Figure 6.</figcaption>
+</figure>
+
+</div>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+ description("This tests that the 'figure' element is accessible on iOS.");
+
+ if (window.accessibilityController) {
+ for (var k = 1; k <= 6; k++) {
+ var p = document.getElementById("p" + k);
+ debug(p.innerText);
+ var figure = window.accessibilityController.accessibleElementById("figure" + k);
+ debug("figure" + k + ": " + figure);
+ debug("figure" + k + " " + figure.roleDescription);
+ debug("figure" + k + " " + figure.description);
+ debug("figure" + k + " " + figure.helpText);
+
+ var titleUIElement = figure.titleUIElement();
+ if (k >= 5) {
+ var figureCaption = accessibilityController.accessibleElementById("figCaption" + k);
+ shouldBeTrue("titleUIElement.isEqual(figureCaption)");
+ } else
+ shouldBeTrue("!titleUIElement");
+
+ debug("");
+ }
+
+ document.getElementById("content").innerText = "";
+ }
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
<fieldset data-platform="atk,mac" class="ex">
<legend data-platform="atk,mac" class="ex">X</legend>
</fieldset>
-<!-- skipped figure/figcaption http://webkit.org/b/108996 -->
+<figure data-platform="atk,mac" class="ex">X</figure>
<footer data-platform="atk,mac" class="ex">X</footer>
<form data-platform="atk,mac" class="ex">X</form>
<!-- skipped <frame> -->
</div>
<!-- skipped <menu> -->
<!-- skipped <meta> -->
-<!-- renable for atk after http://webkit.org/b/163383 fixed --><meter data-platform="mac" class="ex" value="0.75">X</meter>
+<!-- reenable for atk after http://webkit.org/b/163383 fixed --><meter data-platform="mac" class="ex" value="0.75">X</meter>
<nav data-platform="atk,mac" class="ex">X</nav>
<!-- skipped <noscript> -->
<!-- skipped <object> -->
AXSubrole:
AXRoleDescription:
+figure
+ AXRole: AXGroup
+ AXSubrole:
+ AXRoleDescription: figure
+
footer
AXRole: AXGroup
AXSubrole: AXLandmarkContentInfo
+2019-09-27 Andres Gonzalez <andresg_22@apple.com>
+
+ Support accessibility for <figure> element on iOS.
+ https://bugs.webkit.org/show_bug.cgi?id=202272
+ <rdar://problem/54789907>
+
+ Reviewed by Chris Fleizach.
+
+ Test: accessibility/ios-simulator/figure-element.html
+
+ Added a role description for the <figure> element.
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::roleDescription const):
+
2019-09-27 Zalan Bujtas <zalan@apple.com>
[iPadOS] Can’t use RalphLauren.com on iPad because hover menus don’t stay up
String AccessibilityObject::roleDescription() const
{
- return stripLeadingAndTrailingHTMLSpaces(getAttribute(aria_roledescriptionAttr));
+ // aria-roledescription takes precedence over any other rule.
+ String roleDescription = stripLeadingAndTrailingHTMLSpaces(getAttribute(aria_roledescriptionAttr));
+ if (!roleDescription.isEmpty())
+ return roleDescription;
+
+ if (roleValue() == AccessibilityRole::Figure)
+ return AXFigureText();
+
+ return roleDescription;
}
-
+
bool nodeHasPresentationRole(Node* node)
{
return nodeHasRole(node, "presentation") || nodeHasRole(node, "none");
return AXDetailsText();
case AccessibilityRole::Feed:
return AXFeedText();
- case AccessibilityRole::Figure:
- return AXFigureText();
case AccessibilityRole::Footer:
return AXFooterRoleDescriptionText();
case AccessibilityRole::Mark:
+2019-09-27 Andres Gonzalez <andresg_22@apple.com>
+
+ Support accessibility for <figure> element on iOS.
+ https://bugs.webkit.org/show_bug.cgi?id=202272
+ <rdar://problem/54789907>
+
+ Reviewed by Chris Fleizach.
+
+ Implemented titleUIElement and roleDescription properties for <figure> elements on iOS.
+ * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
+ (WTR::AccessibilityUIElement::titleUIElement):
+ (WTR::AccessibilityUIElement::roleDescription):
+
2019-09-27 Alex Christensen <achristensen@webkit.org>
Move shouldUseTestingNetworkSession from NetworkProcessCreationParameters to NetworkSessionCreationParameters
@interface NSObject (UIAccessibilityHidden)
- (id)accessibilityHitTest:(CGPoint)point;
- (id)accessibilityLinkedElement;
+- (id)accessibilityTitleElement;
- (NSRange)accessibilityColumnRange;
- (NSRange)accessibilityRowRange;
- (id)accessibilityElementForRow:(NSInteger)row andColumn:(NSInteger)column;
RefPtr<AccessibilityUIElement> AccessibilityUIElement::titleUIElement()
{
+ id titleElement = [m_element accessibilityTitleElement];
+ if (titleElement)
+ return AccessibilityUIElement::create(titleElement);
return nullptr;
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::roleDescription()
{
- return createEmptyJSString();
+ return concatenateAttributeAndValue(@"AXRoleDescription", [m_element accessibilityRoleDescription]);
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::computedRoleString()