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 |