Title: [190648] trunk
Revision
190648
Author
n_w...@apple.com
Date
2015-10-06 14:46:08 -0700 (Tue, 06 Oct 2015)

Log Message

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.

Source/WebCore:

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]):

LayoutTests:

* accessibility/mac/aria-orientation-expected.txt: Added.
* accessibility/mac/aria-orientation.html: Added.

Modified Paths

Added Paths

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;
     }
     
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to