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

Unified Diff: chrome/browser/cocoa/browser_accessibility.mm

Issue 2951011: Readability review for Obj-C for feldstein (Closed)
Patch Set: Revert changes to other file Created 10 years, 5 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/cocoa/browser_accessibility.h ('k') | chrome/browser/cocoa/browser_accessibility_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cocoa/browser_accessibility.mm
diff --git a/chrome/browser/cocoa/browser_accessibility.mm b/chrome/browser/cocoa/browser_accessibility.mm
index 6dbf3cea0dc09f1daff72c0661138b49260fa651..cea970a45d4dcc0bea1f30a3467156d47b3164ad 100644
--- a/chrome/browser/cocoa/browser_accessibility.mm
+++ b/chrome/browser/cocoa/browser_accessibility.mm
@@ -4,9 +4,10 @@
#include <execinfo.h>
+#import "chrome/browser/cocoa/browser_accessibility.h"
+
#include "base/string16.h"
#include "base/sys_string_conversions.h"
-#include "chrome/browser/cocoa/browser_accessibility.h"
#include "chrome/browser/renderer_host/render_widget_host_view_mac.h"
#include "third_party/WebKit/WebKit/chromium/public/WebRect.h"
@@ -16,9 +17,9 @@ namespace {
// Returns an autoreleased copy of the WebAccessibility's attribute.
NSString* NSStringForWebAccessibilityAttribute(
- std::map<int32, string16>& attributes,
+ const std::map<int32, string16>& attributes,
WebAccessibility::Attribute attribute) {
- std::map<int32, string16>::iterator iter =
+ std::map<int32, string16>::const_iterator iter =
attributes.find(attribute);
NSString* returnValue = @"";
if (iter != attributes.end()) {
@@ -54,15 +55,17 @@ static const RoleEntry roles[] = {
{ WebAccessibility::ROLE_WEBCORE_LINK, NSAccessibilityLinkRole},
};
+// GetState checks the bitmask used in webaccessibility.h to check
+// if the given state was set on the accessibility object.
bool GetState(WebAccessibility accessibility, int state) {
return ((accessibility.state >> state) & 1);
}
-} // anonymous namespace
+} // namespace
@implementation BrowserAccessibility
-- (id)initWithObject:(const WebAccessibility)accessibility
+- (id)initWithObject:(const WebAccessibility&)accessibility
delegate:(id<BrowserAccessibilityDelegate>)delegate
parent:(id)parent {
if ((self = [super init])) {
@@ -73,6 +76,8 @@ bool GetState(WebAccessibility accessibility, int state) {
return self;
}
+// Returns an array of BrowserAccessibility objects, representing the
+// accessibility children of this object.
- (NSArray*)children {
if (!children_.get()) {
const std::vector<WebAccessibility>& accessibilityChildren =
@@ -83,28 +88,33 @@ bool GetState(WebAccessibility accessibility, int state) {
std::vector<WebAccessibility>::const_iterator iterator;
for (iterator = accessibilityChildren.begin();
iterator != accessibilityChildren.end();
- iterator++) {
- BrowserAccessibility* child =
+ ++iterator) {
+ scoped_nsobject<BrowserAccessibility> child(
[[BrowserAccessibility alloc]
initWithObject:*iterator
delegate:delegate_
- parent:self];
- [child autorelease];
+ parent:self]);
[children_ addObject:child];
}
}
return children_;
}
+// Returns whether or not this node should be ignored in the
+// accessibility tree.
- (BOOL)isIgnored {
return webAccessibility_.role == WebAccessibility::ROLE_IGNORED;
}
+// The origin of this accessibility object in the page's document.
+// This is relative to webkit's top-left origin, not Cocoa's
+// bottom-left origin.
- (NSPoint)origin {
return NSMakePoint(webAccessibility_.location.x,
webAccessibility_.location.y);
}
+// Returns a string indicating the role of this object.
- (NSString*)role {
NSString* role = NSAccessibilityUnknownRole;
WebAccessibility::Role value = webAccessibility_.role;
@@ -118,46 +128,59 @@ bool GetState(WebAccessibility accessibility, int state) {
return role;
}
+// Returns the size of this object.
- (NSSize)size {
return NSMakeSize(webAccessibility_.location.width,
webAccessibility_.location.height);
}
-- (id)accessibilityAttributeValue:(NSString *)attribute {
+// Returns the accessibility value for the given attribute. If the value isn't
+// supported this will return nil.
+- (id)accessibilityAttributeValue:(NSString*)attribute {
if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) {
return [self role];
- } else if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute]) {
return NSStringForWebAccessibilityAttribute(webAccessibility_.attributes,
WebAccessibility::ATTR_DESCRIPTION);
- } else if ([attribute isEqualToString:NSAccessibilityPositionAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityPositionAttribute]) {
return [NSValue valueWithPoint:[delegate_ accessibilityPointInScreen:self]];
- } else if ([attribute isEqualToString:NSAccessibilitySizeAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilitySizeAttribute]) {
return [NSValue valueWithSize:[self size]];
- } else if (
- [attribute isEqualToString:NSAccessibilityTopLevelUIElementAttribute] ||
+ }
+ if ([attribute isEqualToString:NSAccessibilityTopLevelUIElementAttribute] ||
[attribute isEqualToString:NSAccessibilityWindowAttribute]) {
return [delegate_ window];
- } else if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
return [self children];
- } else if ([attribute isEqualToString:NSAccessibilityParentAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityParentAttribute]) {
if (parent_) {
return NSAccessibilityUnignoredAncestor(parent_);
}
- } else if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) {
return base::SysUTF16ToNSString(webAccessibility_.name);
- } else if ([attribute isEqualToString:NSAccessibilityHelpAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityHelpAttribute]) {
return NSStringForWebAccessibilityAttribute(webAccessibility_.attributes,
WebAccessibility::ATTR_HELP);
- } else if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
return base::SysUTF16ToNSString(webAccessibility_.value);
- } else if (
- [attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
return NSAccessibilityRoleDescription([self role], nil);
- } else if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
+ }
+ if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
NSNumber* ret = [NSNumber numberWithBool:
GetState(webAccessibility_, WebAccessibility::STATE_FOCUSED)];
return ret;
- } else if ([attribute isEqualToString:NSAccessibilityEnabledAttribute] ||
+ }
+ if ([attribute isEqualToString:NSAccessibilityEnabledAttribute] ||
[attribute isEqualToString:@"AXVisited"] ||
[attribute isEqualToString:@"AXLoaded"]) {
return [NSNumber numberWithBool:YES];
@@ -165,14 +188,21 @@ bool GetState(WebAccessibility accessibility, int state) {
return nil;
}
-- (NSArray *)accessibilityActionNames {
+// Returns an array of action names that this object will respond to.
+- (NSArray*)accessibilityActionNames {
return [NSArray arrayWithObjects:
NSAccessibilityPressAction, NSAccessibilityShowMenuAction, nil];
}
-- (NSArray *)accessibilityArrayAttributeValues:(NSString *)attribute
- index:(NSUInteger)index
- maxCount:(NSUInteger)maxCount {
+// Returns a sub-array of values for the given attribute value, starting at
+// index, with up to maxCount items. If the given index is out of bounds,
+// or there are no values for the given attribute, it will return nil.
+// This method is used for querying subsets of values, without having to
+// return a large set of data, such as elements with a large number of
+// children.
+- (NSArray*)accessibilityArrayAttributeValues:(NSString*)attribute
+ index:(NSUInteger)index
+ maxCount:(NSUInteger)maxCount {
NSArray* fullArray = [self accessibilityAttributeValue:attribute];
if (!fullArray)
return nil;
@@ -188,34 +218,39 @@ bool GetState(WebAccessibility accessibility, int state) {
return [fullArray subarrayWithRange:subRange];
}
-- (NSUInteger)accessibilityArrayAttributeCount:(NSString *)attribute {
+// Returns the count of the specified accessibility array attribute.
+- (NSUInteger)accessibilityArrayAttributeCount:(NSString*)attribute {
NSArray* fullArray = [self accessibilityAttributeValue:attribute];
return [fullArray count];
}
-- (NSArray *)accessibilityAttributeNames {
+// Returns the list of accessibility attributes that this object supports.
+- (NSArray*)accessibilityAttributeNames {
return [NSArray arrayWithObjects:
- NSAccessibilityRoleAttribute,
- NSAccessibilityRoleDescriptionAttribute,
NSAccessibilityChildrenAttribute,
+ NSAccessibilityDescriptionAttribute,
+ NSAccessibilityEnabledAttribute,
+ NSAccessibilityFocusedAttribute,
NSAccessibilityHelpAttribute,
NSAccessibilityParentAttribute,
NSAccessibilityPositionAttribute,
+ NSAccessibilityRoleAttribute,
+ NSAccessibilityRoleDescriptionAttribute,
NSAccessibilitySizeAttribute,
NSAccessibilityTitleAttribute,
- NSAccessibilityDescriptionAttribute,
+ NSAccessibilityTopLevelUIElementAttribute,
NSAccessibilityValueAttribute,
- NSAccessibilityFocusedAttribute,
- NSAccessibilityEnabledAttribute,
NSAccessibilityWindowAttribute,
- NSAccessibilityTopLevelUIElementAttribute,
nil];
}
+// Returns the deepest child that has user focus.
+// TODO(feldstein): This does not work yet.
- (id)accessibilityFocusedUIElement {
return self;
}
+// Returns the index of the child in this objects array of children.
- (NSUInteger)accessibilityIndexOfChild:(id)child {
NSUInteger index = 0;
for (BrowserAccessibility* childToCheck in [self children]) {
@@ -227,34 +262,43 @@ bool GetState(WebAccessibility accessibility, int state) {
return NSNotFound;
}
-- (BOOL)accessibilityIsAttributeSettable:(NSString *)attribute {
- if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
+// Returns whether or not the specified attribute can be set by the
+// accessibility API via |accessibilitySetValue:forAttribute:|.
+- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute {
+ if ([attribute isEqualToString:NSAccessibilityFocusedAttribute])
return GetState(webAccessibility_, WebAccessibility::STATE_FOCUSABLE);
- } else if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
+ if ([attribute isEqualToString:NSAccessibilityValueAttribute])
return !GetState(webAccessibility_, WebAccessibility::STATE_READONLY);
- }
return NO;
}
+// Returns whether or not this object should be ignored in the accessibilty
+// tree.
- (BOOL)accessibilityIsIgnored {
return [self isIgnored];
}
-- (void)accessibilityPerformAction:(NSString *)action {
+// Performs the given accessibilty action on the webkit accessibility object
+// that backs this object.
+- (void)accessibilityPerformAction:(NSString*)action {
// TODO(feldstein): Support more actions.
[delegate_ doDefaultAction:webAccessibility_.id];
}
+// Returns the description of the given action.
- (NSString*)accessibilityActionDescription:(NSString*)action {
return NSAccessibilityActionDescription(action);
}
+// Sets an override value for a specific accessibility attribute.
+// This class does not support this.
- (BOOL)accessibilitySetOverrideValue:(id)value
- forAttribute:(NSString *)attribute {
+ forAttribute:(NSString*)attribute {
return NO;
}
-- (void)accessibilitySetValue:(id)value forAttribute:(NSString *)attribute {
+// Sets the value for an accessibility attribute via the accessibility API.
+- (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute {
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
NSNumber* focusedNumber = value;
BOOL focused = [focusedNumber intValue];
@@ -263,6 +307,9 @@ bool GetState(WebAccessibility accessibility, int state) {
}
}
+// Returns the deepest accessibility child that should not be ignored.
+// It is assumed that the hit test has been narrowed down to this object
+// or one of its children, so this will never return nil.
- (id)accessibilityHitTest:(NSPoint)point {
id hit = self;
for (id child in [self children]) {
« no previous file with comments | « chrome/browser/cocoa/browser_accessibility.h ('k') | chrome/browser/cocoa/browser_accessibility_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698