Diff
Modified: trunk/LayoutTests/ChangeLog (190647 => 190648)
--- trunk/LayoutTests/ChangeLog 2015-10-06 21:41:56 UTC (rev 190647)
+++ trunk/LayoutTests/ChangeLog 2015-10-06 21:46:08 UTC (rev 190648)
@@ -1,3 +1,13 @@
+2015-10-06 Nan Wang <n_w...@apple.com>
+
+ AX: ARIA 1.1: aria-orientation now defaults to undefined, supported on more elements, and role-specific defaults are defined.
+ https://bugs.webkit.org/show_bug.cgi?id=132177
+
+ Reviewed by Chris Fleizach.
+
+ * accessibility/mac/aria-orientation-expected.txt: Added.
+ * accessibility/mac/aria-orientation.html: Added.
+
2015-10-06 Simon Fraser <simon.fra...@apple.com>
Mark compositing/geometry/limit-layer-bounds-opacity-transition.html as failing
Added: trunk/LayoutTests/accessibility/mac/aria-orientation-expected.txt (0 => 190648)
--- trunk/LayoutTests/accessibility/mac/aria-orientation-expected.txt (rev 0)
+++ trunk/LayoutTests/accessibility/mac/aria-orientation-expected.txt 2015-10-06 21:46:08 UTC (rev 190648)
@@ -0,0 +1,33 @@
+Implicit defaults
+
+Option
+Menu item 1
+menubar
+item one
+tree item
+
+Authored orientation
+radio 1
+cell
+cell2
+X
+This test makes sure that aria-orientation works correctly and the implicit defaults are defined on different roles.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS slider.orientation is 'AXOrientation: AXHorizontalOrientation'
+PASS combobox.orientation is 'AXOrientation: AXVerticalOrientation'
+PASS listbox.orientation is 'AXOrientation: AXVerticalOrientation'
+PASS menu.orientation is 'AXOrientation: AXVerticalOrientation'
+PASS menubar.orientation is 'AXOrientation: AXHorizontalOrientation'
+PASS tablist.orientation is 'AXOrientation: AXHorizontalOrientation'
+PASS toolbar.orientation is 'AXOrientation: AXHorizontalOrientation'
+PASS tree.orientation is 'AXOrientation: AXVerticalOrientation'
+PASS radiogroup.orientation is 'AXOrientation: AXVerticalOrientation'
+PASS treegrid.orientation is 'AXOrientation: AXHorizontalOrientation'
+PASS slider2.orientation is 'AXOrientation: AXUnknownOrientation'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/accessibility/mac/aria-orientation.html (0 => 190648)
--- trunk/LayoutTests/accessibility/mac/aria-orientation.html (rev 0)
+++ trunk/LayoutTests/accessibility/mac/aria-orientation.html 2015-10-06 21:46:08 UTC (rev 190648)
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body id="body">
+
+<div>Implicit defaults</div>
+<input type="range" id="slider">
+<input id="combo" type="text" role="combobox" placeholder="Placeholder" value="text">
+<div id="listbox" role="listbox">
+ <div id="option1" role="option" aria-selected="true">Option</div>
+</div>
+<div id="menu" role="menu">
+ <div role="menuitem" id="item1" tabindex="0">Menu item 1</div>
+</div>
+<div id="menubar" role="menubar">menubar</div>
+<div role="tablist" id="tablist">
+<div role="toolbar" id="toolbar" aria-label="test toolbar"><li>item one</div>
+<ul id="tree" role="tree">
+ <li id="treeitem1" role="treeitem">tree item</li>
+</ul>
+
+<br>
+<div>Authored orientation</div>
+<div role="radiogroup" id="radiogroup" aria-orientation="vertical">
+ <div role="radio" aria-label="radio 1" aria-checked=false>radio 1</div>
+</div>
+<table id="treegrid" role="treegrid" aria-orientation="horizontal">
+<tbody>
+ <tr><td role="gridcell" colspan="3">cell</tr>
+ <tr><td role="gridcell" colspan="3">cell2</tr>
+</tbody>
+</table>
+<span role="slider" id="slider2" aria-orientation="undefined" aria-valuenow=5 aria-valuemin=0 aria-valuemax=10>X</span>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+ description("This test makes sure that aria-orientation works correctly and the implicit defaults are defined on different roles.");
+
+ if (window.accessibilityController) {
+ // Test implicit defaults on some roles.
+ var slider = accessibilityController.accessibleElementById("slider");
+ shouldBe("slider.orientation", "'AXOrientation: AXHorizontalOrientation'");
+
+ var combobox = accessibilityController.accessibleElementById("combo");
+ shouldBe("combobox.orientation", "'AXOrientation: AXVerticalOrientation'");
+
+ var listbox = accessibilityController.accessibleElementById("listbox");
+ shouldBe("listbox.orientation", "'AXOrientation: AXVerticalOrientation'");
+
+ var menu = accessibilityController.accessibleElementById("menu");
+ shouldBe("menu.orientation", "'AXOrientation: AXVerticalOrientation'");
+
+ var menubar = accessibilityController.accessibleElementById("menubar");
+ shouldBe("menubar.orientation", "'AXOrientation: AXHorizontalOrientation'");
+
+ var tablist = accessibilityController.accessibleElementById("tablist");
+ shouldBe("tablist.orientation", "'AXOrientation: AXHorizontalOrientation'");
+
+ var toolbar = accessibilityController.accessibleElementById("toolbar");
+ shouldBe("toolbar.orientation", "'AXOrientation: AXHorizontalOrientation'");
+
+ var tree = accessibilityController.accessibleElementById("tree");
+ shouldBe("tree.orientation", "'AXOrientation: AXVerticalOrientation'");
+
+ // Test authored aria-orientation are correct.
+ var radiogroup = accessibilityController.accessibleElementById("radiogroup");
+ shouldBe("radiogroup.orientation", "'AXOrientation: AXVerticalOrientation'");
+
+ var treegrid = accessibilityController.accessibleElementById("treegrid");
+ shouldBe("treegrid.orientation", "'AXOrientation: AXHorizontalOrientation'");
+
+ var slider2 = accessibilityController.accessibleElementById("slider2");
+ shouldBe("slider2.orientation", "'AXOrientation: AXUnknownOrientation'");
+ }
+
+</script>
+
+<script src=""
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (190647 => 190648)
--- trunk/Source/WebCore/ChangeLog 2015-10-06 21:41:56 UTC (rev 190647)
+++ trunk/Source/WebCore/ChangeLog 2015-10-06 21:46:08 UTC (rev 190648)
@@ -1,3 +1,35 @@
+2015-10-06 Nan Wang <n_w...@apple.com>
+
+ AX: ARIA 1.1: aria-orientation now defaults to undefined, supported on more elements, and role-specific defaults are defined.
+ https://bugs.webkit.org/show_bug.cgi?id=132177
+
+ Reviewed by Chris Fleizach.
+
+ Added role-specific defaults and changed general default to undefined.
+ Also added more elements to support aria-orientation on Mac.
+
+ Test: accessibility/mac/aria-orientation.html
+
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::orientation):
+ (WebCore::AccessibilityObject::isDescendantOfObject):
+ * accessibility/AccessibilityObject.h:
+ (WebCore::AccessibilityObject::isColorWell):
+ (WebCore::AccessibilityObject::isSplitter):
+ (WebCore::AccessibilityObject::isToolbar):
+ (WebCore::AccessibilityObject::isChecked):
+ (WebCore::AccessibilityObject::isEnabled):
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::orientation):
+ * accessibility/AccessibilityScrollView.cpp:
+ (WebCore::AccessibilityScrollView::scrollBar):
+ * accessibility/AccessibilityScrollbar.cpp:
+ (WebCore::AccessibilityScrollbar::orientation):
+ (WebCore::AccessibilityScrollbar::isEnabled):
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
+ (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
+
2015-10-06 Per Arne Vollan <pe...@outlook.com>
[WinCairo] GStreamer compile errors.
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (190647 => 190648)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp 2015-10-06 21:41:56 UTC (rev 190647)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp 2015-10-06 21:46:08 UTC (rev 190648)
@@ -1877,8 +1877,7 @@
if (bounds.size().height() > bounds.size().width())
return AccessibilityOrientationVertical;
- // A tie goes to horizontal.
- return AccessibilityOrientationHorizontal;
+ return AccessibilityOrientationUndefined;
}
bool AccessibilityObject::isDescendantOfObject(const AccessibilityObject* axObject) const
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.h (190647 => 190648)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.h 2015-10-06 21:41:56 UTC (rev 190647)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.h 2015-10-06 21:46:08 UTC (rev 190648)
@@ -279,6 +279,7 @@
enum AccessibilityOrientation {
AccessibilityOrientationVertical,
AccessibilityOrientationHorizontal,
+ AccessibilityOrientationUndefined,
};
enum AccessibilityObjectInclusion {
@@ -536,6 +537,8 @@
bool isColorWell() const { return roleValue() == ColorWellRole; }
bool isRangeControl() const;
bool isMeter() const;
+ bool isSplitter() const { return roleValue() == SplitterRole; }
+ bool isToolbar() const { return roleValue() == ToolbarRole; }
virtual bool isChecked() const { return false; }
virtual bool isEnabled() const { return false; }
Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (190647 => 190648)
--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2015-10-06 21:41:56 UTC (rev 190647)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2015-10-06 21:46:08 UTC (rev 190648)
@@ -2717,10 +2717,17 @@
return AccessibilityOrientationHorizontal;
if (equalIgnoringCase(ariaOrientation, "vertical"))
return AccessibilityOrientationVertical;
+ if (equalIgnoringCase(ariaOrientation, "undefined"))
+ return AccessibilityOrientationUndefined;
- if (isScrollbar())
+ // ARIA 1.1 Implicit defaults are defined on some roles.
+ // http://www.w3.org/TR/wai-aria-1.1/#aria-orientation
+ if (isScrollbar() || isComboBox() || isListBox() || isMenu() || isTree())
return AccessibilityOrientationVertical;
+ if (isMenuBar() || isSplitter() || isTabList() || isToolbar())
+ return AccessibilityOrientationHorizontal;
+
return AccessibilityObject::orientation();
}
Modified: trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp (190647 => 190648)
--- trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp 2015-10-06 21:41:56 UTC (rev 190647)
+++ trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp 2015-10-06 21:46:08 UTC (rev 190648)
@@ -64,6 +64,8 @@
updateScrollbars();
switch (orientation) {
+ // ARIA 1.1 Elements with the role scrollbar have an implicit aria-orientation value of vertical.
+ case AccessibilityOrientationUndefined:
case AccessibilityOrientationVertical:
return m_verticalScrollbar ? m_verticalScrollbar.get() : nullptr;
case AccessibilityOrientationHorizontal:
Modified: trunk/Source/WebCore/accessibility/AccessibilityScrollbar.cpp (190647 => 190648)
--- trunk/Source/WebCore/accessibility/AccessibilityScrollbar.cpp 2015-10-06 21:41:56 UTC (rev 190647)
+++ trunk/Source/WebCore/accessibility/AccessibilityScrollbar.cpp 2015-10-06 21:46:08 UTC (rev 190648)
@@ -65,15 +65,16 @@
AccessibilityOrientation AccessibilityScrollbar::orientation() const
{
+ // ARIA 1.1 Elements with the role scrollbar have an implicit aria-orientation value of vertical.
if (!m_scrollbar)
- return AccessibilityOrientationHorizontal;
+ return AccessibilityOrientationVertical;
if (m_scrollbar->orientation() == HorizontalScrollbar)
return AccessibilityOrientationHorizontal;
if (m_scrollbar->orientation() == VerticalScrollbar)
return AccessibilityOrientationVertical;
- return AccessibilityOrientationHorizontal;
+ return AccessibilityOrientationVertical;
}
bool AccessibilityScrollbar::isEnabled() const
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (190647 => 190648)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2015-10-06 21:41:56 UTC (rev 190647)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2015-10-06 21:46:08 UTC (rev 190648)
@@ -1236,7 +1236,10 @@
if (m_object->supportsExpanded())
[additional addObject:NSAccessibilityExpandedAttribute];
- if (m_object->isScrollbar())
+ if (m_object->isScrollbar()
+ || m_object->isRadioGroup()
+ || m_object->isSplitter()
+ || m_object->isToolbar())
[additional addObject:NSAccessibilityOrientationAttribute];
if (m_object->supportsARIADragging())
@@ -1439,6 +1442,7 @@
[tempArray addObject:NSAccessibilityAccessKeyAttribute];
[tempArray addObject:NSAccessibilityRequiredAttribute];
[tempArray addObject:NSAccessibilityInvalidAttribute];
+ [tempArray addObject:NSAccessibilityOrientationAttribute];
listBoxAttrs = [[NSArray alloc] initWithArray:tempArray];
[tempArray release];
}
@@ -1457,6 +1461,7 @@
[tempArray addObject:NSAccessibilitySelectedChildrenAttribute];
[tempArray addObject:NSAccessibilityVisibleChildrenAttribute];
[tempArray addObject:NSAccessibilityTitleUIElementAttribute];
+ [tempArray addObject:NSAccessibilityOrientationAttribute];
menuBarAttrs = [[NSArray alloc] initWithArray:tempArray];
[tempArray release];
}
@@ -1465,6 +1470,7 @@
[tempArray addObject:NSAccessibilitySelectedChildrenAttribute];
[tempArray addObject:NSAccessibilityVisibleChildrenAttribute];
[tempArray addObject:NSAccessibilityTitleUIElementAttribute];
+ [tempArray addObject:NSAccessibilityOrientationAttribute];
menuAttrs = [[NSArray alloc] initWithArray:tempArray];
[tempArray release];
}
@@ -1529,6 +1535,7 @@
if (comboBoxAttrs == nil) {
tempArray = [[NSMutableArray alloc] initWithArray:controlAttrs];
[tempArray addObject:NSAccessibilityExpandedAttribute];
+ [tempArray addObject:NSAccessibilityOrientationAttribute];
comboBoxAttrs = [[NSArray alloc] initWithArray:tempArray];
[tempArray release];
}
@@ -1597,6 +1604,7 @@
tempArray = [[NSMutableArray alloc] initWithArray:attributes];
[tempArray addObject:NSAccessibilityTabsAttribute];
[tempArray addObject:NSAccessibilityContentsAttribute];
+ [tempArray addObject:NSAccessibilityOrientationAttribute];
tabListAttrs = [[NSArray alloc] initWithArray:tempArray];
[tempArray release];
}
@@ -1605,6 +1613,7 @@
[tempArray addObject:NSAccessibilitySelectedRowsAttribute];
[tempArray addObject:NSAccessibilityRowsAttribute];
[tempArray addObject:NSAccessibilityColumnsAttribute];
+ [tempArray addObject:NSAccessibilityOrientationAttribute];
outlineAttrs = [[NSArray alloc] initWithArray:tempArray];
[tempArray release];
}
@@ -2927,6 +2936,8 @@
return NSAccessibilityVerticalOrientationValue;
if (elementOrientation == AccessibilityOrientationHorizontal)
return NSAccessibilityHorizontalOrientationValue;
+ if (elementOrientation == AccessibilityOrientationUndefined)
+ return NSAccessibilityUnknownOrientationValue;
return nil;
}