Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: content/browser/accessibility/browser_accessibility_cocoa.mm

Issue 1547643002: ARIA 1.1: implementation for aria-col-* and aria-row-*. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adds MODULES_EXPORT Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698