| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <execinfo.h> | 5 #include <execinfo.h> |
| 6 | 6 |
| 7 #import "content/browser/accessibility/browser_accessibility_cocoa.h" | 7 #import "content/browser/accessibility/browser_accessibility_cocoa.h" |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 { NSAccessibilityValueDescriptionAttribute, @"valueDescription" }, | 380 { NSAccessibilityValueDescriptionAttribute, @"valueDescription" }, |
| 381 { NSAccessibilityVisibleCharacterRangeAttribute, @"visibleCharacterRange" }, | 381 { NSAccessibilityVisibleCharacterRangeAttribute, @"visibleCharacterRange" }, |
| 382 { NSAccessibilityVisibleCellsAttribute, @"visibleCells" }, | 382 { NSAccessibilityVisibleCellsAttribute, @"visibleCells" }, |
| 383 { NSAccessibilityVisibleChildrenAttribute, @"visibleChildren" }, | 383 { NSAccessibilityVisibleChildrenAttribute, @"visibleChildren" }, |
| 384 { NSAccessibilityVisibleColumnsAttribute, @"visibleColumns" }, | 384 { NSAccessibilityVisibleColumnsAttribute, @"visibleColumns" }, |
| 385 { NSAccessibilityVisibleRowsAttribute, @"visibleRows" }, | 385 { NSAccessibilityVisibleRowsAttribute, @"visibleRows" }, |
| 386 { NSAccessibilityWindowAttribute, @"window" }, | 386 { NSAccessibilityWindowAttribute, @"window" }, |
| 387 { @"AXAccessKey", @"accessKey" }, | 387 { @"AXAccessKey", @"accessKey" }, |
| 388 { @"AXARIAAtomic", @"ariaAtomic" }, | 388 { @"AXARIAAtomic", @"ariaAtomic" }, |
| 389 { @"AXARIABusy", @"ariaBusy" }, | 389 { @"AXARIABusy", @"ariaBusy" }, |
| 390 { @"AXARIAColumnCount", @"ariaColumnCount" }, |
| 391 { @"AXARIAColumnIndex", @"ariaColumnIndex" }, |
| 390 { @"AXARIALive", @"ariaLive" }, | 392 { @"AXARIALive", @"ariaLive" }, |
| 391 { @"AXARIASetSize", @"ariaSetSize" }, | 393 { @"AXARIASetSize", @"ariaSetSize" }, |
| 392 { @"AXARIAPosInSet", @"ariaPosInSet" }, | 394 { @"AXARIAPosInSet", @"ariaPosInSet" }, |
| 393 { @"AXARIARelevant", @"ariaRelevant" }, | 395 { @"AXARIARelevant", @"ariaRelevant" }, |
| 396 { @"AXARIARowCount", @"ariaRowCount" }, |
| 397 { @"AXARIARowIndex", @"ariaRowIndex" }, |
| 394 { @"AXDropEffects", @"dropeffect" }, | 398 { @"AXDropEffects", @"dropeffect" }, |
| 395 { @"AXGrabbed", @"grabbed" }, | 399 { @"AXGrabbed", @"grabbed" }, |
| 396 { @"AXInvalid", @"invalid" }, | 400 { @"AXInvalid", @"invalid" }, |
| 397 { @"AXLoaded", @"loaded" }, | 401 { @"AXLoaded", @"loaded" }, |
| 398 { @"AXLoadingProgress", @"loadingProgress" }, | 402 { @"AXLoadingProgress", @"loadingProgress" }, |
| 399 { @"AXRequired", @"required" }, | 403 { @"AXRequired", @"required" }, |
| 400 { @"AXSortDirection", @"sortDirection" }, | 404 { @"AXSortDirection", @"sortDirection" }, |
| 401 { @"AXVisited", @"visited" }, | 405 { @"AXVisited", @"visited" }, |
| 402 }; | 406 }; |
| 403 | 407 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 434 bool boolValue = browserAccessibility_->GetBoolAttribute( | 438 bool boolValue = browserAccessibility_->GetBoolAttribute( |
| 435 ui::AX_ATTR_LIVE_ATOMIC); | 439 ui::AX_ATTR_LIVE_ATOMIC); |
| 436 return [NSNumber numberWithBool:boolValue]; | 440 return [NSNumber numberWithBool:boolValue]; |
| 437 } | 441 } |
| 438 | 442 |
| 439 - (NSNumber*)ariaBusy { | 443 - (NSNumber*)ariaBusy { |
| 440 return [NSNumber numberWithBool: | 444 return [NSNumber numberWithBool: |
| 441 GetState(browserAccessibility_, ui::AX_STATE_BUSY)]; | 445 GetState(browserAccessibility_, ui::AX_STATE_BUSY)]; |
| 442 } | 446 } |
| 443 | 447 |
| 448 - (NSNumber*)ariaColumnCount { |
| 449 if (!browserAccessibility_->IsTableOrGridOrTreeGridRole()) |
| 450 return nil; |
| 451 int count = -1; |
| 452 if (!browserAccessibility_->GetIntAttribute( |
| 453 ui::AX_ATTR_ARIA_COL_COUNT, &count)) |
| 454 return nil; |
| 455 return [NSNumber numberWithInt:count]; |
| 456 } |
| 457 |
| 458 - (NSNumber*)ariaColumnIndex { |
| 459 if (!browserAccessibility_->IsCellOrTableHeaderRole()) |
| 460 return nil; |
| 461 int index = -1; |
| 462 if (!browserAccessibility_->GetIntAttribute( |
| 463 ui::AX_ATTR_ARIA_COL_INDEX, &index)) |
| 464 return nil; |
| 465 return [NSNumber numberWithInt:index]; |
| 466 } |
| 467 |
| 444 - (NSString*)ariaLive { | 468 - (NSString*)ariaLive { |
| 445 return NSStringForStringAttribute( | 469 return NSStringForStringAttribute( |
| 446 browserAccessibility_, ui::AX_ATTR_LIVE_STATUS); | 470 browserAccessibility_, ui::AX_ATTR_LIVE_STATUS); |
| 447 } | 471 } |
| 448 | 472 |
| 449 - (NSString*)ariaRelevant { | 473 - (NSString*)ariaRelevant { |
| 450 return NSStringForStringAttribute( | 474 return NSStringForStringAttribute( |
| 451 browserAccessibility_, ui::AX_ATTR_LIVE_RELEVANT); | 475 browserAccessibility_, ui::AX_ATTR_LIVE_RELEVANT); |
| 452 } | 476 } |
| 453 | 477 |
| 478 - (NSNumber*)ariaRowCount { |
| 479 if (!browserAccessibility_->IsTableOrGridOrTreeGridRole()) |
| 480 return nil; |
| 481 int count = -1; |
| 482 if (!browserAccessibility_->GetIntAttribute( |
| 483 ui::AX_ATTR_ARIA_ROW_COUNT, &count)) |
| 484 return nil; |
| 485 return [NSNumber numberWithInt:count]; |
| 486 } |
| 487 |
| 488 - (NSNumber*)ariaRowIndex { |
| 489 if (!browserAccessibility_->IsCellOrTableHeaderRole()) |
| 490 return nil; |
| 491 int index = -1; |
| 492 if (!browserAccessibility_->GetIntAttribute( |
| 493 ui::AX_ATTR_ARIA_ROW_INDEX, &index)) |
| 494 return nil; |
| 495 return [NSNumber numberWithInt:index]; |
| 496 } |
| 497 |
| 454 - (NSNumber*)ariaPosInSet { | 498 - (NSNumber*)ariaPosInSet { |
| 455 return [NSNumber numberWithInt: | 499 return [NSNumber numberWithInt: |
| 456 browserAccessibility_->GetIntAttribute(ui::AX_ATTR_POS_IN_SET)]; | 500 browserAccessibility_->GetIntAttribute(ui::AX_ATTR_POS_IN_SET)]; |
| 457 } | 501 } |
| 458 | 502 |
| 459 - (NSNumber*)ariaSetSize { | 503 - (NSNumber*)ariaSetSize { |
| 460 return [NSNumber numberWithInt: | 504 return [NSNumber numberWithInt: |
| 461 browserAccessibility_->GetIntAttribute(ui::AX_ATTR_SET_SIZE)]; | 505 browserAccessibility_->GetIntAttribute(ui::AX_ATTR_SET_SIZE)]; |
| 462 } | 506 } |
| 463 | 507 |
| (...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1642 - (NSArray*)accessibilityParameterizedAttributeNames { | 1686 - (NSArray*)accessibilityParameterizedAttributeNames { |
| 1643 if (!browserAccessibility_) | 1687 if (!browserAccessibility_) |
| 1644 return nil; | 1688 return nil; |
| 1645 | 1689 |
| 1646 // General attributes. | 1690 // General attributes. |
| 1647 NSMutableArray* ret = [NSMutableArray arrayWithObjects: | 1691 NSMutableArray* ret = [NSMutableArray arrayWithObjects: |
| 1648 @"AXUIElementCountForSearchPredicate", | 1692 @"AXUIElementCountForSearchPredicate", |
| 1649 @"AXUIElementsForSearchPredicate", | 1693 @"AXUIElementsForSearchPredicate", |
| 1650 nil]; | 1694 nil]; |
| 1651 | 1695 |
| 1652 if ([[self role] isEqualToString:NSAccessibilityTableRole] || | 1696 if (browserAccessibility_->IsTableOrGridOrTreeGridRole()) { |
| 1653 [[self role] isEqualToString:NSAccessibilityGridRole]) { | |
| 1654 [ret addObjectsFromArray:[NSArray arrayWithObjects: | 1697 [ret addObjectsFromArray:[NSArray arrayWithObjects: |
| 1655 NSAccessibilityCellForColumnAndRowParameterizedAttribute, | 1698 NSAccessibilityCellForColumnAndRowParameterizedAttribute, |
| 1656 nil]]; | 1699 nil]]; |
| 1657 } | 1700 } |
| 1658 | 1701 |
| 1659 if (browserAccessibility_->IsEditableText()) { | 1702 if (browserAccessibility_->IsEditableText()) { |
| 1660 [ret addObjectsFromArray:[NSArray arrayWithObjects: | 1703 [ret addObjectsFromArray:[NSArray arrayWithObjects: |
| 1661 NSAccessibilityLineForIndexParameterizedAttribute, | 1704 NSAccessibilityLineForIndexParameterizedAttribute, |
| 1662 NSAccessibilityRangeForLineParameterizedAttribute, | 1705 NSAccessibilityRangeForLineParameterizedAttribute, |
| 1663 NSAccessibilityStringForRangeParameterizedAttribute, | 1706 NSAccessibilityStringForRangeParameterizedAttribute, |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1757 NSAccessibilityValueAttribute, | 1800 NSAccessibilityValueAttribute, |
| 1758 NSAccessibilityWindowAttribute, | 1801 NSAccessibilityWindowAttribute, |
| 1759 @"AXAccessKey", | 1802 @"AXAccessKey", |
| 1760 @"AXInvalid", | 1803 @"AXInvalid", |
| 1761 @"AXVisited", | 1804 @"AXVisited", |
| 1762 nil]; | 1805 nil]; |
| 1763 | 1806 |
| 1764 // Specific role attributes. | 1807 // Specific role attributes. |
| 1765 NSString* role = [self role]; | 1808 NSString* role = [self role]; |
| 1766 NSString* subrole = [self subrole]; | 1809 NSString* subrole = [self subrole]; |
| 1767 if ([role isEqualToString:NSAccessibilityTableRole] || | 1810 if (browserAccessibility_->IsTableOrGridOrTreeGridRole()) { |
| 1768 [role isEqualToString:NSAccessibilityGridRole]) { | |
| 1769 [ret addObjectsFromArray:[NSArray arrayWithObjects: | 1811 [ret addObjectsFromArray:[NSArray arrayWithObjects: |
| 1770 NSAccessibilityColumnsAttribute, | 1812 NSAccessibilityColumnsAttribute, |
| 1771 NSAccessibilityVisibleColumnsAttribute, | 1813 NSAccessibilityVisibleColumnsAttribute, |
| 1772 NSAccessibilityRowsAttribute, | 1814 NSAccessibilityRowsAttribute, |
| 1773 NSAccessibilityVisibleRowsAttribute, | 1815 NSAccessibilityVisibleRowsAttribute, |
| 1774 NSAccessibilityVisibleCellsAttribute, | 1816 NSAccessibilityVisibleCellsAttribute, |
| 1775 NSAccessibilityHeaderAttribute, | 1817 NSAccessibilityHeaderAttribute, |
| 1776 NSAccessibilityColumnHeaderUIElementsAttribute, | 1818 NSAccessibilityColumnHeaderUIElementsAttribute, |
| 1777 NSAccessibilityRowHeaderUIElementsAttribute, | 1819 NSAccessibilityRowHeaderUIElementsAttribute, |
| 1820 @"AXARIAColumnCount", |
| 1821 @"AXARIARowCount", |
| 1778 nil]]; | 1822 nil]]; |
| 1779 } else if ([role isEqualToString:NSAccessibilityColumnRole]) { | 1823 } else if ([role isEqualToString:NSAccessibilityColumnRole]) { |
| 1780 [ret addObjectsFromArray:[NSArray arrayWithObjects: | 1824 [ret addObjectsFromArray:[NSArray arrayWithObjects: |
| 1781 NSAccessibilityIndexAttribute, | 1825 NSAccessibilityIndexAttribute, |
| 1782 NSAccessibilityHeaderAttribute, | 1826 NSAccessibilityHeaderAttribute, |
| 1783 NSAccessibilityRowsAttribute, | 1827 NSAccessibilityRowsAttribute, |
| 1784 NSAccessibilityVisibleRowsAttribute, | 1828 NSAccessibilityVisibleRowsAttribute, |
| 1785 nil]]; | 1829 nil]]; |
| 1786 } else if ([role isEqualToString:NSAccessibilityCellRole]) { | 1830 } else if (browserAccessibility_->IsCellOrTableHeaderRole()) { |
| 1787 [ret addObjectsFromArray:[NSArray arrayWithObjects: | 1831 [ret addObjectsFromArray:[NSArray arrayWithObjects: |
| 1788 NSAccessibilityColumnIndexRangeAttribute, | 1832 NSAccessibilityColumnIndexRangeAttribute, |
| 1789 NSAccessibilityRowIndexRangeAttribute, | 1833 NSAccessibilityRowIndexRangeAttribute, |
| 1834 @"AXARIAColumnIndex", |
| 1835 @"AXARIARowIndex", |
| 1790 @"AXSortDirection", | 1836 @"AXSortDirection", |
| 1791 nil]]; | 1837 nil]]; |
| 1792 } else if ([role isEqualToString:@"AXWebArea"]) { | 1838 } else if ([role isEqualToString:@"AXWebArea"]) { |
| 1793 [ret addObjectsFromArray:[NSArray arrayWithObjects: | 1839 [ret addObjectsFromArray:[NSArray arrayWithObjects: |
| 1794 @"AXLoaded", | 1840 @"AXLoaded", |
| 1795 @"AXLoadingProgress", | 1841 @"AXLoadingProgress", |
| 1796 nil]]; | 1842 nil]]; |
| 1797 } else if ([role isEqualToString:NSAccessibilityTabGroupRole]) { | 1843 } else if ([role isEqualToString:NSAccessibilityTabGroupRole]) { |
| 1798 [ret addObject:NSAccessibilityTabsAttribute]; | 1844 [ret addObject:NSAccessibilityTabsAttribute]; |
| 1799 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || | 1845 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2086 if (!browserAccessibility_) | 2132 if (!browserAccessibility_) |
| 2087 return [super hash]; | 2133 return [super hash]; |
| 2088 return browserAccessibility_->GetId(); | 2134 return browserAccessibility_->GetId(); |
| 2089 } | 2135 } |
| 2090 | 2136 |
| 2091 - (BOOL)accessibilityShouldUseUniqueId { | 2137 - (BOOL)accessibilityShouldUseUniqueId { |
| 2092 return YES; | 2138 return YES; |
| 2093 } | 2139 } |
| 2094 | 2140 |
| 2095 @end | 2141 @end |
| OLD | NEW |