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

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

Issue 2539503003: ARIA 1.1: implementation for aria-col-* and aria-row-*. (Closed)
Patch Set: Created 4 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 #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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698