Diff
Modified: trunk/LayoutTests/ChangeLog (192455 => 192456)
--- trunk/LayoutTests/ChangeLog 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/LayoutTests/ChangeLog 2015-11-14 09:39:28 UTC (rev 192456)
@@ -1,3 +1,13 @@
+2015-11-14 Nan Wang <n_w...@apple.com>
+
+ AX: add a new trait for elements in fieldset on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=151281
+
+ Reviewed by Chris Fleizach.
+
+ * accessibility/ios-simulator/fieldset-traits-expected.txt: Added.
+ * accessibility/ios-simulator/fieldset-traits.html: Added.
+
2015-11-13 Zalan Bujtas <za...@apple.com>
Always render at least a device pixel line when border/outline width > 0.
Added: trunk/LayoutTests/accessibility/ios-simulator/fieldset-traits-expected.txt (0 => 192456)
--- trunk/LayoutTests/accessibility/ios-simulator/fieldset-traits-expected.txt (rev 0)
+++ trunk/LayoutTests/accessibility/ios-simulator/fieldset-traits-expected.txt 2015-11-14 09:39:28 UTC (rev 192456)
@@ -0,0 +1,14 @@
+Personalia:
+Name:
+Email:
+This tests that elements in a fieldset are having the correct traits.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS inputname.hasContainedByFieldsetTrait is true
+PASS fieldset.isEqual(inputname.fieldsetAncestorElement()) is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/accessibility/ios-simulator/fieldset-traits.html (0 => 192456)
--- trunk/LayoutTests/accessibility/ios-simulator/fieldset-traits.html (rev 0)
+++ trunk/LayoutTests/accessibility/ios-simulator/fieldset-traits.html 2015-11-14 09:39:28 UTC (rev 192456)
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script>
+var successfullyParsed = false;
+</script>
+<script src=""
+</head>
+<body id="body">
+
+<form>
+<fieldset id="fieldset">
+<legend>Personalia:</legend>
+Name: <input type="text" id="inputname"><br>
+Email: <input type="text"><br>
+</fieldset>
+</form>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+ description("This tests that elements in a fieldset are having the correct traits.");
+
+ if (window.accessibilityController) {
+
+ var inputname = accessibilityController.accessibleElementById("inputname");
+ var fieldset = accessibilityController.accessibleElementById("fieldset");
+ shouldBeTrue("inputname.hasContainedByFieldsetTrait");
+ shouldBeTrue("fieldset.isEqual(inputname.fieldsetAncestorElement())");
+ }
+
+ successfullyParsed = true;
+</script>
+
+<script src=""
+</body>
+</html>
+
Modified: trunk/Source/WebCore/ChangeLog (192455 => 192456)
--- trunk/Source/WebCore/ChangeLog 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Source/WebCore/ChangeLog 2015-11-14 09:39:28 UTC (rev 192456)
@@ -1,3 +1,21 @@
+2015-11-14 Nan Wang <n_w...@apple.com>
+
+ AX: add a new trait for elements in fieldset on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=151281
+
+ Reviewed by Chris Fleizach.
+
+ Added a new trait for elements in the fieldset, so VoiceOver can speak the legend
+ information for those elements.
+
+ Test: accessibility/ios-simulator/fieldset-traits.html
+
+ * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+ (-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
+ (-[WebAccessibilityObjectWrapper _accessibilityTableAncestor]):
+ (-[WebAccessibilityObjectWrapper _accessibilityFieldsetAncestor]):
+ (-[WebAccessibilityObjectWrapper _accessibilityTraitsFromAncestors]):
+
2015-11-13 Commit Queue <commit-qu...@webkit.org>
Unreviewed, rolling out r192445, r192451, and r192452.
Modified: trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (192455 => 192456)
--- trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm 2015-11-14 09:39:28 UTC (rev 192456)
@@ -271,6 +271,7 @@
- (uint64_t)_axSelectedTrait { return (1 << 19); }
- (uint64_t)_axNotEnabledTrait { return (1 << 20); }
- (uint64_t)_axRadioButtonTrait { return (1 << 21); }
+- (uint64_t)_axContainedByFieldsetTrait { return (1 << 22); }
- (BOOL)accessibilityCanFuzzyHitTest
{
@@ -494,6 +495,16 @@
return nil;
}
+- (AccessibilityObjectWrapper*)_accessibilityFieldsetAncestor
+{
+ for (AccessibilityObject* parent = m_object->parentObject(); parent != nil; parent = parent->parentObject()) {
+ if (parent->isFieldset())
+ return parent->wrapper();
+ }
+
+ return nil;
+}
+
- (uint64_t)_accessibilityTraitsFromAncestors
{
uint64_t traits = 0;
@@ -538,6 +549,10 @@
traits |= [self _axContainedByLandmarkTrait];
break;
}
+
+ // If this object has fieldset parent, we should add containedByFieldsetTrait to it.
+ if (parent->isFieldset())
+ traits |= [self _axContainedByFieldsetTrait];
}
return traits;
Modified: trunk/Tools/ChangeLog (192455 => 192456)
--- trunk/Tools/ChangeLog 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Tools/ChangeLog 2015-11-14 09:39:28 UTC (rev 192456)
@@ -1,3 +1,37 @@
+2015-11-14 Nan Wang <n_w...@apple.com>
+
+ AX: add a new trait for elements in fieldset on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=151281
+
+ Reviewed by Chris Fleizach.
+
+ * DumpRenderTree/AccessibilityUIElement.cpp:
+ (assistiveTechnologySimulatedFocusCallback):
+ (fieldsetAncestorElementCallback):
+ (childAtIndexCallback):
+ (getElementTextLengthCallback):
+ (hasContainedByFieldsetTraitCallback):
+ (AccessibilityUIElement::getJSClass):
+ * DumpRenderTree/AccessibilityUIElement.h:
+ * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
+ (AccessibilityUIElement::elementTextLength):
+ (AccessibilityUIElement::hasContainedByFieldsetTrait):
+ (AccessibilityUIElement::fieldsetAncestorElement):
+ (AccessibilityUIElement::url):
+ * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
+ (WTR::AccessibilityUIElement::scrollPageDown):
+ (WTR::AccessibilityUIElement::scrollPageLeft):
+ (WTR::AccessibilityUIElement::scrollPageRight):
+ (WTR::AccessibilityUIElement::hasContainedByFieldsetTrait):
+ (WTR::AccessibilityUIElement::fieldsetAncestorElement):
+ * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
+ * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
+ * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
+ (WTR::AccessibilityUIElement::identifier):
+ (WTR::AccessibilityUIElement::hasContainedByFieldsetTrait):
+ (WTR::AccessibilityUIElement::fieldsetAncestorElement):
+ (WTR::AccessibilityUIElement::rowCount):
+
2015-11-13 Keith Miller <keith_mil...@apple.com>
Unreviewed, change _javascript_Core watchlist to exclude inspector things.
Modified: trunk/Tools/DumpRenderTree/AccessibilityUIElement.cpp (192455 => 192456)
--- trunk/Tools/DumpRenderTree/AccessibilityUIElement.cpp 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Tools/DumpRenderTree/AccessibilityUIElement.cpp 2015-11-14 09:39:28 UTC (rev 192456)
@@ -364,6 +364,11 @@
return JSValueMakeUndefined(context);
}
+static JSValueRef fieldsetAncestorElementCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->fieldsetAncestorElement());
+}
+
#endif
static JSValueRef childAtIndexCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
@@ -1373,8 +1378,11 @@
return JSValueMakeNumber(context, toAXElement(thisObject)->elementTextLength());
}
+static JSValueRef hasContainedByFieldsetTraitCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*)
+{
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->hasContainedByFieldsetTrait());
+}
-
#endif // PLATFORM(IOS)
#if PLATFORM(MAC) && !PLATFORM(IOS)
@@ -1631,6 +1639,7 @@
{ "elementTextPosition", getElementTextPositionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "elementTextLength", getElementTextLengthCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "stringForSelection", stringForSelectionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "hasContainedByFieldsetTrait", hasContainedByFieldsetTraitCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
#endif // PLATFORM(IOS)
#if PLATFORM(MAC) && !PLATFORM(IOS)
{ "supportedActions", supportedActionsCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -1748,6 +1757,7 @@
{ "scrollPageLeft", scrollPageLeftCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "scrollPageRight", scrollPageRightCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "assistiveTechnologySimulatedFocus", assistiveTechnologySimulatedFocusCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "fieldsetAncestorElement", fieldsetAncestorElementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
#endif
{ 0, 0, 0 }
};
Modified: trunk/Tools/DumpRenderTree/AccessibilityUIElement.h (192455 => 192456)
--- trunk/Tools/DumpRenderTree/AccessibilityUIElement.h 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Tools/DumpRenderTree/AccessibilityUIElement.h 2015-11-14 09:39:28 UTC (rev 192456)
@@ -226,6 +226,9 @@
bool scrollPageDown();
bool scrollPageLeft();
bool scrollPageRight();
+
+ bool hasContainedByFieldsetTrait();
+ AccessibilityUIElement fieldsetAncestorElement();
#endif
#if PLATFORM(GTK) || PLATFORM(EFL)
Modified: trunk/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm (192455 => 192456)
--- trunk/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm 2015-11-14 09:39:28 UTC (rev 192456)
@@ -90,6 +90,8 @@
- (NSUInteger)accessibilityARIAColumnCount;
- (NSUInteger)accessibilityARIARowIndex;
- (NSUInteger)accessibilityARIAColumnIndex;
+- (UIAccessibilityTraits)_axContainedByFieldsetTrait;
+- (id)_accessibilityFieldsetAncestor;
@end
@interface NSObject (WebAccessibilityObjectWrapperPrivate)
@@ -134,6 +136,22 @@
return range.length;
}
+bool AccessibilityUIElement::hasContainedByFieldsetTrait()
+{
+ UIAccessibilityTraits traits = [m_element accessibilityTraits];
+ return (traits & [m_element _axContainedByFieldsetTrait]) == [m_element _axContainedByFieldsetTrait];
+}
+
+AccessibilityUIElement AccessibilityUIElement::fieldsetAncestorElement()
+{
+ id ancestorElement = [m_element _accessibilityFieldsetAncestor];
+ if (ancestorElement)
+ return AccessibilityUIElement(ancestorElement);
+
+ return nullptr;
+}
+
+
JSStringRef AccessibilityUIElement::url()
{
NSURL *url = "" accessibilityURL];
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp (192455 => 192456)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp 2015-11-14 09:39:28 UTC (rev 192456)
@@ -70,6 +70,8 @@
bool AccessibilityUIElement::scrollPageDown() { return false; }
bool AccessibilityUIElement::scrollPageLeft() { return false; }
bool AccessibilityUIElement::scrollPageRight() { return false; }
+bool AccessibilityUIElement::hasContainedByFieldsetTrait() { return false; }
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::fieldsetAncestorElement() { return nullptr; }
#endif
// Unsupported methods on various platforms. As they're implemented on other platforms this list should be modified.
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h (192455 => 192456)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h 2015-11-14 09:39:28 UTC (rev 192456)
@@ -282,6 +282,10 @@
bool scrollPageLeft();
bool scrollPageRight();
+ // Fieldset
+ bool hasContainedByFieldsetTrait();
+ PassRefPtr<AccessibilityUIElement> fieldsetAncestorElement();
+
private:
AccessibilityUIElement(PlatformUIElement);
AccessibilityUIElement(const AccessibilityUIElement&);
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl (192455 => 192456)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl 2015-11-14 09:39:28 UTC (rev 192456)
@@ -223,6 +223,10 @@
// This will simulate the accessibilityDidBecomeFocused API in UIKit.
void assistiveTechnologySimulatedFocus();
+ // Fieldset
+ readonly attribute boolean hasContainedByFieldsetTrait;
+ AccessibilityUIElement fieldsetAncestorElement();
+
// Notification support.
boolean addNotificationListener(object callbackFunction);
boolean removeNotificationListener();
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm (192455 => 192456)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm 2015-11-14 05:51:27 UTC (rev 192455)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm 2015-11-14 09:39:28 UTC (rev 192456)
@@ -67,6 +67,8 @@
- (NSUInteger)accessibilityARIAColumnCount;
- (NSUInteger)accessibilityARIARowIndex;
- (NSUInteger)accessibilityARIAColumnIndex;
+- (UIAccessibilityTraits)_axContainedByFieldsetTrait;
+- (id)_accessibilityFieldsetAncestor;
@end
@interface NSObject (WebAccessibilityObjectWrapperPrivate)
@@ -672,6 +674,21 @@
return concatenateAttributeAndValue(@"AXIdentifier", [m_element accessibilityIdentifier]);
}
+bool AccessibilityUIElement::hasContainedByFieldsetTrait()
+{
+ UIAccessibilityTraits traits = [m_element accessibilityTraits];
+ return (traits & [m_element _axContainedByFieldsetTrait]) == [m_element _axContainedByFieldsetTrait];
+}
+
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::fieldsetAncestorElement()
+{
+ id ancestorElement = [m_element _accessibilityFieldsetAncestor];
+ if (ancestorElement)
+ return AccessibilityUIElement::create(ancestorElement);
+
+ return nullptr;
+}
+
int AccessibilityUIElement::rowCount()
{
return [m_element accessibilityRowCount];