| 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 #include <stddef.h> | 6 #include <stddef.h> |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #import "content/browser/accessibility/browser_accessibility_cocoa.h" | 9 #import "content/browser/accessibility/browser_accessibility_cocoa.h" |
| 10 | 10 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 using ui::AXNodeData; | 37 using ui::AXNodeData; |
| 38 using StringAttribute = ui::AXStringAttribute; | 38 using StringAttribute = ui::AXStringAttribute; |
| 39 using AXTextMarkerRef = CFTypeRef; | 39 using AXTextMarkerRef = CFTypeRef; |
| 40 using AXTextMarkerRangeRef = CFTypeRef; | 40 using AXTextMarkerRangeRef = CFTypeRef; |
| 41 | 41 |
| 42 namespace { | 42 namespace { |
| 43 | 43 |
| 44 // Private WebKit accessibility attributes. | 44 // Private WebKit accessibility attributes. |
| 45 NSString* const NSAccessibilityARIAAtomicAttribute = @"AXARIAAtomic"; | 45 NSString* const NSAccessibilityARIAAtomicAttribute = @"AXARIAAtomic"; |
| 46 NSString* const NSAccessibilityARIABusyAttribute = @"AXARIABusy"; | 46 NSString* const NSAccessibilityARIABusyAttribute = @"AXARIABusy"; |
| 47 NSString* const NSAccessibilityARIAColumnCountAttribute = @"AXARIAColumnCount"; |
| 48 NSString* const NSAccessibilityARIAColumnIndexAttribute = @"AXARIAColumnIndex"; |
| 47 NSString* const NSAccessibilityARIALiveAttribute = @"AXARIALive"; | 49 NSString* const NSAccessibilityARIALiveAttribute = @"AXARIALive"; |
| 48 NSString* const NSAccessibilityARIAPosInSetAttribute = @"AXARIAPosInSet"; | 50 NSString* const NSAccessibilityARIAPosInSetAttribute = @"AXARIAPosInSet"; |
| 49 NSString* const NSAccessibilityARIARelevantAttribute = @"AXARIARelevant"; | 51 NSString* const NSAccessibilityARIARelevantAttribute = @"AXARIARelevant"; |
| 52 NSString* const NSAccessibilityARIARowCountAttribute = @"AXARIARowCount"; |
| 53 NSString* const NSAccessibilityARIARowIndexAttribute = @"AXARIARowIndex"; |
| 50 NSString* const NSAccessibilityARIASetSizeAttribute = @"AXARIASetSize"; | 54 NSString* const NSAccessibilityARIASetSizeAttribute = @"AXARIASetSize"; |
| 51 NSString* const NSAccessibilityAccessKeyAttribute = @"AXAccessKey"; | 55 NSString* const NSAccessibilityAccessKeyAttribute = @"AXAccessKey"; |
| 52 NSString* const NSAccessibilityDropEffectsAttribute = @"AXDropEffects"; | 56 NSString* const NSAccessibilityDropEffectsAttribute = @"AXDropEffects"; |
| 53 NSString* const NSAccessibilityGrabbedAttribute = @"AXGrabbed"; | 57 NSString* const NSAccessibilityGrabbedAttribute = @"AXGrabbed"; |
| 54 NSString* const NSAccessibilityInvalidAttribute = @"AXInvalid"; | 58 NSString* const NSAccessibilityInvalidAttribute = @"AXInvalid"; |
| 55 NSString* const NSAccessibilityIsMultiSelectableAttribute = | 59 NSString* const NSAccessibilityIsMultiSelectableAttribute = |
| 56 @"AXIsMultiSelectable"; | 60 @"AXIsMultiSelectable"; |
| 57 NSString* const NSAccessibilityLoadingProgressAttribute = @"AXLoadingProgress"; | 61 NSString* const NSAccessibilityLoadingProgressAttribute = @"AXLoadingProgress"; |
| 58 NSString* const | 62 NSString* const |
| 59 NSAccessibilityUIElementCountForSearchPredicateParameterizedAttribute = | 63 NSAccessibilityUIElementCountForSearchPredicateParameterizedAttribute = |
| (...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 | 510 |
| 507 @implementation BrowserAccessibilityCocoa | 511 @implementation BrowserAccessibilityCocoa |
| 508 | 512 |
| 509 + (void)initialize { | 513 + (void)initialize { |
| 510 const struct { | 514 const struct { |
| 511 NSString* attribute; | 515 NSString* attribute; |
| 512 NSString* methodName; | 516 NSString* methodName; |
| 513 } attributeToMethodNameContainer[] = { | 517 } attributeToMethodNameContainer[] = { |
| 514 {NSAccessibilityARIAAtomicAttribute, @"ariaAtomic"}, | 518 {NSAccessibilityARIAAtomicAttribute, @"ariaAtomic"}, |
| 515 {NSAccessibilityARIABusyAttribute, @"ariaBusy"}, | 519 {NSAccessibilityARIABusyAttribute, @"ariaBusy"}, |
| 520 {NSAccessibilityARIAColumnCountAttribute, @"ariaColumnCount"}, |
| 521 {NSAccessibilityARIAColumnIndexAttribute, @"ariaColumnIndex"}, |
| 516 {NSAccessibilityARIALiveAttribute, @"ariaLive"}, | 522 {NSAccessibilityARIALiveAttribute, @"ariaLive"}, |
| 517 {NSAccessibilityARIAPosInSetAttribute, @"ariaPosInSet"}, | 523 {NSAccessibilityARIAPosInSetAttribute, @"ariaPosInSet"}, |
| 518 {NSAccessibilityARIARelevantAttribute, @"ariaRelevant"}, | 524 {NSAccessibilityARIARelevantAttribute, @"ariaRelevant"}, |
| 525 {NSAccessibilityARIARowCountAttribute, @"ariaRowCount"}, |
| 526 {NSAccessibilityARIARowIndexAttribute, @"ariaRowIndex"}, |
| 519 {NSAccessibilityARIASetSizeAttribute, @"ariaSetSize"}, | 527 {NSAccessibilityARIASetSizeAttribute, @"ariaSetSize"}, |
| 520 {NSAccessibilityAccessKeyAttribute, @"accessKey"}, | 528 {NSAccessibilityAccessKeyAttribute, @"accessKey"}, |
| 521 {NSAccessibilityChildrenAttribute, @"children"}, | 529 {NSAccessibilityChildrenAttribute, @"children"}, |
| 522 {NSAccessibilityColumnsAttribute, @"columns"}, | 530 {NSAccessibilityColumnsAttribute, @"columns"}, |
| 523 {NSAccessibilityColumnHeaderUIElementsAttribute, @"columnHeaders"}, | 531 {NSAccessibilityColumnHeaderUIElementsAttribute, @"columnHeaders"}, |
| 524 {NSAccessibilityColumnIndexRangeAttribute, @"columnIndexRange"}, | 532 {NSAccessibilityColumnIndexRangeAttribute, @"columnIndexRange"}, |
| 525 {NSAccessibilityContentsAttribute, @"contents"}, | 533 {NSAccessibilityContentsAttribute, @"contents"}, |
| 526 {NSAccessibilityDescriptionAttribute, @"description"}, | 534 {NSAccessibilityDescriptionAttribute, @"description"}, |
| 527 {NSAccessibilityDisclosingAttribute, @"disclosing"}, | 535 {NSAccessibilityDisclosingAttribute, @"disclosing"}, |
| 528 {NSAccessibilityDisclosedByRowAttribute, @"disclosedByRow"}, | 536 {NSAccessibilityDisclosedByRowAttribute, @"disclosedByRow"}, |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 return [NSNumber numberWithBool:boolValue]; | 633 return [NSNumber numberWithBool:boolValue]; |
| 626 } | 634 } |
| 627 | 635 |
| 628 - (NSNumber*)ariaBusy { | 636 - (NSNumber*)ariaBusy { |
| 629 if (![self instanceActive]) | 637 if (![self instanceActive]) |
| 630 return nil; | 638 return nil; |
| 631 return [NSNumber numberWithBool: | 639 return [NSNumber numberWithBool: |
| 632 GetState(browserAccessibility_, ui::AX_STATE_BUSY)]; | 640 GetState(browserAccessibility_, ui::AX_STATE_BUSY)]; |
| 633 } | 641 } |
| 634 | 642 |
| 643 - (NSNumber*)ariaColumnCount { |
| 644 if (!browserAccessibility_->IsTableOrGridOrTreeGridRole()) |
| 645 return nil; |
| 646 int count = -1; |
| 647 if (!browserAccessibility_->GetIntAttribute( |
| 648 ui::AX_ATTR_ARIA_COL_COUNT, &count)) |
| 649 return nil; |
| 650 return [NSNumber numberWithInt:count]; |
| 651 } |
| 652 |
| 653 - (NSNumber*)ariaColumnIndex { |
| 654 if (!browserAccessibility_->IsCellOrTableHeaderRole()) |
| 655 return nil; |
| 656 int index = -1; |
| 657 if (!browserAccessibility_->GetIntAttribute( |
| 658 ui::AX_ATTR_ARIA_COL_INDEX, &index)) |
| 659 return nil; |
| 660 return [NSNumber numberWithInt:index]; |
| 661 } |
| 662 |
| 635 - (NSString*)ariaLive { | 663 - (NSString*)ariaLive { |
| 636 if (![self instanceActive]) | 664 if (![self instanceActive]) |
| 637 return nil; | 665 return nil; |
| 638 return NSStringForStringAttribute( | 666 return NSStringForStringAttribute( |
| 639 browserAccessibility_, ui::AX_ATTR_LIVE_STATUS); | 667 browserAccessibility_, ui::AX_ATTR_LIVE_STATUS); |
| 640 } | 668 } |
| 641 | 669 |
| 642 - (NSNumber*)ariaPosInSet { | 670 - (NSNumber*)ariaPosInSet { |
| 643 if (![self instanceActive]) | 671 if (![self instanceActive]) |
| 644 return nil; | 672 return nil; |
| 645 return [NSNumber numberWithInt: | 673 return [NSNumber numberWithInt: |
| 646 browserAccessibility_->GetIntAttribute(ui::AX_ATTR_POS_IN_SET)]; | 674 browserAccessibility_->GetIntAttribute(ui::AX_ATTR_POS_IN_SET)]; |
| 647 } | 675 } |
| 648 | 676 |
| 649 - (NSString*)ariaRelevant { | 677 - (NSString*)ariaRelevant { |
| 650 if (![self instanceActive]) | 678 if (![self instanceActive]) |
| 651 return nil; | 679 return nil; |
| 652 return NSStringForStringAttribute(browserAccessibility_, | 680 return NSStringForStringAttribute(browserAccessibility_, |
| 653 ui::AX_ATTR_LIVE_RELEVANT); | 681 ui::AX_ATTR_LIVE_RELEVANT); |
| 654 } | 682 } |
| 655 | 683 |
| 684 - (NSNumber*)ariaRowCount { |
| 685 if (!browserAccessibility_->IsTableOrGridOrTreeGridRole()) |
| 686 return nil; |
| 687 int count = -1; |
| 688 if (!browserAccessibility_->GetIntAttribute( |
| 689 ui::AX_ATTR_ARIA_ROW_COUNT, &count)) |
| 690 return nil; |
| 691 return [NSNumber numberWithInt:count]; |
| 692 } |
| 693 |
| 694 - (NSNumber*)ariaRowIndex { |
| 695 if (!browserAccessibility_->IsCellOrTableHeaderRole()) |
| 696 return nil; |
| 697 int index = -1; |
| 698 if (!browserAccessibility_->GetIntAttribute( |
| 699 ui::AX_ATTR_ARIA_ROW_INDEX, &index)) |
| 700 return nil; |
| 701 return [NSNumber numberWithInt:index]; |
| 702 } |
| 703 |
| 656 - (NSNumber*)ariaSetSize { | 704 - (NSNumber*)ariaSetSize { |
| 657 if (![self instanceActive]) | 705 if (![self instanceActive]) |
| 658 return nil; | 706 return nil; |
| 659 return [NSNumber numberWithInt: | 707 return [NSNumber numberWithInt: |
| 660 browserAccessibility_->GetIntAttribute(ui::AX_ATTR_SET_SIZE)]; | 708 browserAccessibility_->GetIntAttribute(ui::AX_ATTR_SET_SIZE)]; |
| 661 } | 709 } |
| 662 | 710 |
| 663 // Returns an array of BrowserAccessibilityCocoa objects, representing the | 711 // Returns an array of BrowserAccessibilityCocoa objects, representing the |
| 664 // accessibility children of this object. | 712 // accessibility children of this object. |
| 665 - (NSArray*)children { | 713 - (NSArray*)children { |
| (...skipping 2206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2872 } | 2920 } |
| 2873 | 2921 |
| 2874 - (BOOL)accessibilityNotifiesWhenDestroyed { | 2922 - (BOOL)accessibilityNotifiesWhenDestroyed { |
| 2875 // Indicate that BrowserAccessibilityCocoa will post a notification when it's | 2923 // Indicate that BrowserAccessibilityCocoa will post a notification when it's |
| 2876 // destroyed (see -detach). This allows VoiceOver to do some internal things | 2924 // destroyed (see -detach). This allows VoiceOver to do some internal things |
| 2877 // more efficiently. | 2925 // more efficiently. |
| 2878 return YES; | 2926 return YES; |
| 2879 } | 2927 } |
| 2880 | 2928 |
| 2881 @end | 2929 @end |
| OLD | NEW |