Changeset 52146 in webkit
- Timestamp:
- Dec 15, 2009 2:18:15 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 deleted
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r52140 r52146 1 2009-12-15 Eric Seidel <eric@webkit.org> 2 3 No review, rolling out r52140. 4 http://trac.webkit.org/changeset/52140 5 https://bugs.webkit.org/show_bug.cgi?id=31299 6 7 The commit broke the Leopard bots and unfortunately 8 Chris wasn't around to fix them, so I'm rolling the change 9 out after 3 hours so that the bots can roll green again. :) 10 11 * platform/mac/accessibility/aria-treegrid-expected.txt: Removed. 12 * platform/mac/accessibility/aria-treegrid.html: Removed. 13 1 14 2009-12-14 Chris Fleizach <cfleizach@apple.com> 2 15 -
trunk/WebCore/ChangeLog
r52143 r52146 1 2009-12-15 Eric Seidel <eric@webkit.org> 2 3 No review, rolling out r52140. 4 http://trac.webkit.org/changeset/52140 5 https://bugs.webkit.org/show_bug.cgi?id=31299 6 7 The commit broke the Leopard bots and unfortunately 8 Chris wasn't around to fix them, so I'm rolling the change 9 out after 3 hours so that the bots can roll green again. :) 10 11 * accessibility/AXObjectCache.cpp: 12 (WebCore::AXObjectCache::getOrCreate): 13 * accessibility/AccessibilityARIAGrid.h: 14 * accessibility/AccessibilityARIAGridRow.cpp: 15 * accessibility/AccessibilityARIAGridRow.h: 16 * accessibility/AccessibilityObject.cpp: 17 (WebCore::createARIARoleMap): 18 * accessibility/AccessibilityObject.h: 19 (WebCore::): 20 * accessibility/AccessibilityRenderObject.cpp: 21 (WebCore::AccessibilityRenderObject::isMultiSelect): 22 (WebCore::AccessibilityRenderObject::setIsExpanded): 23 (WebCore::AccessibilityRenderObject::setSelectedRows): 24 (WebCore::AccessibilityRenderObject::ariaTreeSelectedRows): 25 (WebCore::AccessibilityRenderObject::ariaListboxSelectedChildren): 26 (WebCore::AccessibilityRenderObject::selectedChildren): 27 * accessibility/AccessibilityRenderObject.h: 28 * accessibility/AccessibilityTable.h: 29 * accessibility/mac/AccessibilityObjectWrapper.mm: 30 (-[AccessibilityObjectWrapper additionalAccessibilityAttributeNames]): 31 (-[AccessibilityObjectWrapper accessibilityAttributeNames]): 32 (-[AccessibilityObjectWrapper accessibilityAttributeValue:]): 33 (-[AccessibilityObjectWrapper accessibilitySetValue:forAttribute:]): 34 1 35 2009-12-14 Holger Hans Peter Freyther <zecke@selfish.org> 2 36 -
trunk/WebCore/accessibility/AXObjectCache.cpp
r52140 r52146 149 149 150 150 // aria tables 151 else if (nodeIsAriaType(node, "grid") || nodeIsAriaType(node, "treegrid"))151 else if (nodeIsAriaType(node, "grid")) 152 152 newObj = AccessibilityARIAGrid::create(renderer); 153 153 else if (nodeIsAriaType(node, "row")) -
trunk/WebCore/accessibility/AccessibilityARIAGrid.h
r52140 r52146 53 53 54 54 private: 55 // ARIA treegrids and grids support selected rows.56 virtual bool supportsSelectedRows() { return true; }57 58 55 void addChild(AccessibilityObject* object, HashSet<AccessibilityObject*>& appendedRows, unsigned& columnCount); 59 56 }; -
trunk/WebCore/accessibility/AccessibilityARIAGridRow.cpp
r52140 r52146 31 31 32 32 #include "AccessibilityObject.h" 33 #include "AccessibilityTable.h"34 33 #include "RenderObject.h" 35 34 … … 52 51 } 53 52 54 bool AccessibilityARIAGridRow::isARIATreeGridRow() const55 {56 AccessibilityObject* parent = parentTable();57 if (!parent)58 return false;59 60 return parent->ariaRoleAttribute() == TreeGridRole;61 }62 63 void AccessibilityARIAGridRow::disclosedRows(AccessibilityChildrenVector& disclosedRows)64 {65 // The contiguous disclosed rows will be the rows in the table that66 // have an aria-level of plus 1 from this row.67 AccessibilityObject* parent = parentObjectUnignored();68 if (!parent || !parent->isDataTable())69 return;70 71 // Search for rows that match the correct level.72 // Only take the subsequent rows from this one that are +1 from this row's level.73 int index = rowIndex();74 if (index < 0)75 return;76 77 unsigned level = hierarchicalLevel();78 AccessibilityChildrenVector& allRows = static_cast<AccessibilityTable*>(parent)->rows();79 int rowCount = allRows.size();80 for (int k = index + 1; k < rowCount; ++k) {81 AccessibilityObject* row = allRows[k].get();82 // Stop at the first row that doesn't match the correct level.83 if (row->hierarchicalLevel() != level + 1)84 break;85 86 disclosedRows.append(row);87 }88 }89 90 AccessibilityObject* AccessibilityARIAGridRow::disclosedByRow() const91 {92 // The row that discloses this one is the row in the table93 // that is aria-level subtract 1 from this row.94 AccessibilityObject* parent = parentObjectUnignored();95 if (!parent || !parent->isDataTable())96 return 0;97 98 // If the level is 1 or less, than nothing discloses this row.99 unsigned level = hierarchicalLevel();100 if (level <= 1)101 return 0;102 103 // Search for the previous row that matches the correct level.104 int index = rowIndex();105 AccessibilityChildrenVector& allRows = static_cast<AccessibilityTable*>(parent)->rows();106 int rowCount = allRows.size();107 if (index >= rowCount)108 return 0;109 110 for (int k = index - 1; k >= 0; --k) {111 AccessibilityObject* row = allRows[k].get();112 if (row->hierarchicalLevel() == level - 1)113 return row;114 }115 116 return 0;117 }118 119 53 AccessibilityObject* AccessibilityARIAGridRow::parentTable() const 120 54 { -
trunk/WebCore/accessibility/AccessibilityARIAGridRow.h
r52140 r52146 42 42 virtual ~AccessibilityARIAGridRow(); 43 43 44 virtual bool isARIATreeGridRow() const;45 void disclosedRows(AccessibilityChildrenVector&);46 AccessibilityObject* disclosedByRow() const;47 48 44 virtual AccessibilityObject* headerObject(); 49 45 virtual AccessibilityObject* parentTable() const; -
trunk/WebCore/accessibility/AccessibilityObject.cpp
r52140 r52146 913 913 { "tooltip", UserInterfaceTooltipRole }, 914 914 { "tree", TreeRole }, 915 { "treegrid", TreeGridRole },916 915 { "treeitem", TreeItemRole } 917 916 }; -
trunk/WebCore/accessibility/AccessibilityObject.h
r52140 r52146 166 166 TabPanelRole, 167 167 TreeRole, 168 TreeGridRole,169 168 TreeItemRole, 170 169 DirectoryRole, … … 281 280 virtual bool isFieldset() const { return false; } 282 281 virtual bool isGroup() const { return false; } 283 virtual bool isARIATreeGridRow() const { return false; }284 282 bool isTabList() const { return roleValue() == TabListRole; } 285 283 bool isTabItem() const { return roleValue() == TabRole; } -
trunk/WebCore/accessibility/AccessibilityRenderObject.cpp
r52140 r52146 376 376 } 377 377 378 bool AccessibilityRenderObject::isMultiSelect able() const378 bool AccessibilityRenderObject::isMultiSelect() const 379 379 { 380 380 ASSERT(m_renderer); 381 382 const AtomicString& ariaMultiSelectable = getAttribute(aria_multiselectableAttr);383 if (equalIgnoringCase(ariaMultiSelectable, "true"))384 return true;385 if (equalIgnoringCase(ariaMultiSelectable, "false"))386 return false;387 388 381 if (!m_renderer->isListBox()) 389 382 return false; … … 1761 1754 void AccessibilityRenderObject::setIsExpanded(bool isExpanded) 1762 1755 { 1763 // Combo boxes , tree items and rows can be expanded (in different ways on different platforms).1756 // Combo boxes and tree items can be expanded (in different ways on different platforms). 1764 1757 // That action translates into setting the aria-expanded attribute to true. 1765 1758 AccessibilityRole role = roleValue(); 1766 switch (role) { 1767 case ComboBoxRole: 1768 case TreeItemRole: 1769 case RowRole: 1770 setElementAttributeValue(aria_expandedAttr, isExpanded); 1771 break; 1772 default: 1773 break; 1774 } 1759 if (role != ComboBoxRole && role != TreeItemRole) 1760 return; 1761 1762 setElementAttributeValue(aria_expandedAttr, isExpanded); 1775 1763 } 1776 1764 … … 1897 1885 void AccessibilityRenderObject::setSelectedRows(AccessibilityChildrenVector& selectedRows) 1898 1886 { 1899 // Setting selected only makes sense in trees and tables (and tree-tables). 1900 AccessibilityRole role = roleValue(); 1901 if (role != TreeRole && role != TreeGridRole && role != TableRole) 1887 // Setting selected rows only works on trees for now. 1888 if (roleValue() != TreeRole) 1902 1889 return; 1903 1890 1904 bool isMulti = isMultiSelectable();1891 bool isMultiselectable = elementAttributeValue(aria_multiselectableAttr); 1905 1892 unsigned count = selectedRows.size(); 1906 if (count > 1 && !isMulti )1893 if (count > 1 && !isMultiselectable) 1907 1894 count = 1; 1908 1895 … … 2874 2861 } 2875 2862 2876 void AccessibilityRenderObject::aria SelectedRows(AccessibilityChildrenVector& result)2863 void AccessibilityRenderObject::ariaTreeSelectedRows(AccessibilityChildrenVector& result) 2877 2864 { 2878 2865 // Get all the rows. … … 2881 2868 2882 2869 // Determine which rows are selected. 2883 bool isMulti = isMultiSelectable();2870 bool isMultiselectable = elementAttributeValue(aria_multiselectableAttr); 2884 2871 2885 2872 // Prefer active descendant over aria-selected. 2886 2873 AccessibilityObject* activeDesc = activeDescendant(); 2887 if (activeDesc && (activeDesc->isTreeItem() || activeDesc->isTableRow())) {2874 if (activeDesc && activeDesc->isTreeItem()) { 2888 2875 result.append(activeDesc); 2889 if (!isMulti )2876 if (!isMultiselectable) 2890 2877 return; 2891 2878 } … … 2895 2882 if (allRows[k]->isSelected()) { 2896 2883 result.append(allRows[k]); 2897 if (!isMulti )2884 if (!isMultiselectable) 2898 2885 break; 2899 2886 } … … 2909 2896 return; 2910 2897 2911 bool isMulti = isMultiSelectable();2898 bool isMultiselectable = elementAttributeValue(aria_multiselectableAttr); 2912 2899 2913 2900 while (child) { … … 2923 2910 if (equalIgnoringCase(selectedAttrString, "true")) { 2924 2911 result.append(child); 2925 if (isMulti )2912 if (isMultiselectable) 2926 2913 return; 2927 2914 } … … 2940 2927 if (role == ListBoxRole) // native list boxes would be AccessibilityListBoxes, so only check for aria list boxes 2941 2928 ariaListboxSelectedChildren(result); 2942 else if (role == TreeRole || role == TreeGridRole || role == TableRole)2943 aria SelectedRows(result);2929 else if (role == TreeRole) 2930 ariaTreeSelectedRows(result); 2944 2931 } 2945 2932 -
trunk/WebCore/accessibility/AccessibilityRenderObject.h
r52140 r52146 97 97 virtual bool isIndeterminate() const; 98 98 virtual bool isLoaded() const; 99 virtual bool isMultiSelect able() const;99 virtual bool isMultiSelect() const; 100 100 virtual bool isOffScreen() const; 101 101 virtual bool isPressed() const; … … 281 281 AccessibilityObject* accessibilityParentForImageMap(HTMLMapElement* map) const; 282 282 283 void aria SelectedRows(AccessibilityChildrenVector&);283 void ariaTreeSelectedRows(AccessibilityChildrenVector&); 284 284 285 285 bool elementAttributeValue(const QualifiedName&); -
trunk/WebCore/accessibility/AccessibilityTable.h
r52140 r52146 64 64 AccessibilityChildrenVector& rows(); 65 65 66 virtual bool supportsSelectedRows() { return false; }67 66 unsigned columnCount(); 68 67 unsigned rowCount(); -
trunk/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
r52140 r52146 33 33 34 34 #import "AXObjectCache.h" 35 #import "AccessibilityARIAGridRow.h"36 35 #import "AccessibilityListBox.h" 37 36 #import "AccessibilityList.h" … … 601 600 [additional addObject:NSAccessibilityDropEffectsAttribute]; 602 601 603 if (m_object->isDataTable() && static_cast<AccessibilityTable*>(m_object)->supportsSelectedRows())604 [additional addObject:NSAccessibilitySelectedRowsAttribute];605 606 602 return additional; 607 603 } … … 868 864 if (outlineRowAttrs == nil) { 869 865 tempArray = [[NSMutableArray alloc] initWithArray:tableRowAttrs]; 866 [tempArray addObject:NSAccessibilityIndexAttribute]; 870 867 [tempArray addObject:NSAccessibilityDisclosingAttribute]; 871 868 [tempArray addObject:NSAccessibilityDisclosedByRowAttribute]; … … 892 889 else if (m_object->isDataTable()) 893 890 objectAttributes = tableAttrs; 891 else if (m_object->isTableRow()) 892 objectAttributes = tableRowAttrs; 894 893 else if (m_object->isTableColumn()) 895 894 objectAttributes = tableColAttrs; 896 895 else if (m_object->isTableCell()) 897 896 objectAttributes = tableCellAttrs; 898 else if (m_object->isTableRow()) {899 // An ARIA table row can be collapsed and expanded, so it needs the extra attributes.900 if (m_object->isARIATreeGridRow())901 objectAttributes = outlineRowAttrs;902 else903 objectAttributes = tableRowAttrs;904 }905 897 906 898 else if (m_object->isTree()) … … 1577 1569 } 1578 1570 1579 if ([attributeName isEqualToString:NSAccessibilitySelectedRowsAttribute]) {1580 AccessibilityObject::AccessibilityChildrenVector selectedChildrenCopy;1581 m_object->selectedChildren(selectedChildrenCopy);1582 return convertToNSArray(selectedChildrenCopy);1583 }1584 1585 1571 // HTML tables don't support these 1586 1572 if ([attributeName isEqualToString:NSAccessibilitySelectedColumnsAttribute] || 1573 [attributeName isEqualToString:NSAccessibilitySelectedRowsAttribute] || 1587 1574 [attributeName isEqualToString:NSAccessibilitySelectedCellsAttribute]) 1588 1575 return nil; … … 1612 1599 return convertToNSArray(cells); 1613 1600 } 1601 } 1602 1603 if (m_object->isTableRow()) { 1604 if ([attributeName isEqualToString:NSAccessibilityIndexAttribute]) 1605 return [NSNumber numberWithInt:static_cast<AccessibilityTableRow*>(m_object)->rowIndex()]; 1614 1606 } 1615 1607 … … 1661 1653 } 1662 1654 1663 if ( [attributeName isEqualToString:NSAccessibilityIndexAttribute]) {1664 if ( m_object->isTreeItem()) {1655 if (m_object->isTreeItem()) { 1656 if ([attributeName isEqualToString:NSAccessibilityIndexAttribute]) { 1665 1657 AccessibilityObject* parent = m_object->parentObject(); 1666 1658 for (; parent && !parent->isTree(); parent = parent->parentObject()) … … 1680 1672 return nil; 1681 1673 } 1682 if (m_object->isTableRow()) { 1683 if ([attributeName isEqualToString:NSAccessibilityIndexAttribute]) 1684 return [NSNumber numberWithInt:static_cast<AccessibilityTableRow*>(m_object)->rowIndex()]; 1685 } 1686 } 1687 1688 // The rows that are considered inside this row. 1689 if ([attributeName isEqualToString:NSAccessibilityDisclosedRowsAttribute]) { 1690 if (m_object->isTreeItem()) { 1674 1675 // The rows that are considered inside this row. 1676 if ([attributeName isEqualToString:NSAccessibilityDisclosedRowsAttribute]) { 1691 1677 AccessibilityObject::AccessibilityChildrenVector rowsCopy; 1692 1678 m_object->ariaTreeItemDisclosedRows(rowsCopy); 1693 1679 return convertToNSArray(rowsCopy); 1694 } else if (m_object->isARIATreeGridRow()) { 1695 AccessibilityObject::AccessibilityChildrenVector rowsCopy; 1696 static_cast<AccessibilityARIAGridRow*>(m_object)->disclosedRows(rowsCopy); 1697 return convertToNSArray(rowsCopy); 1698 } 1699 } 1700 1701 // The row that contains this row. It should be the same as the first parent that is a treeitem. 1702 if ([attributeName isEqualToString:NSAccessibilityDisclosedByRowAttribute]) { 1703 if (m_object->isTreeItem()) { 1680 } 1681 1682 // The row that contains this row. It should be the same as the first parent that is a treeitem. 1683 if ([attributeName isEqualToString:NSAccessibilityDisclosedByRowAttribute]) { 1704 1684 AccessibilityObject* parent = m_object->parentObject(); 1705 1685 while (parent) { … … 1712 1692 } 1713 1693 return nil; 1714 } else if (m_object->isARIATreeGridRow()) { 1715 AccessibilityObject* row = static_cast<AccessibilityARIAGridRow*>(m_object)->disclosedByRow(); 1716 if (!row) 1717 return nil; 1718 return row->wrapper(); 1719 } 1720 } 1721 1722 if ([attributeName isEqualToString:NSAccessibilityDisclosureLevelAttribute]) 1723 return [NSNumber numberWithInt:m_object->hierarchicalLevel()]; 1724 if ([attributeName isEqualToString:NSAccessibilityDisclosingAttribute]) 1725 return [NSNumber numberWithBool:m_object->isExpanded()]; 1694 } 1695 if ([attributeName isEqualToString:NSAccessibilityDisclosureLevelAttribute]) 1696 return [NSNumber numberWithInt:m_object->hierarchicalLevel()]; 1697 if ([attributeName isEqualToString:NSAccessibilityDisclosingAttribute]) 1698 return [NSNumber numberWithBool:m_object->isExpanded()]; 1699 } 1726 1700 1727 1701 if ((m_object->isListBox() || m_object->isList()) && [attributeName isEqualToString:NSAccessibilityOrientationAttribute]) … … 2180 2154 AccessibilityObject::AccessibilityChildrenVector selectedRows; 2181 2155 convertToVector(array, selectedRows); 2182 if (m_object->isTree() || m_object->isDataTable())2156 if (m_object->isTree()) 2183 2157 m_object->setSelectedRows(selectedRows); 2184 2158 } else if ([attributeName isEqualToString:NSAccessibilityGrabbedAttribute])
Note: See TracChangeset
for help on using the changeset viewer.