Index: chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm |
diff --git a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm |
index 4a8b03442b2746f06f7a76856450d117dd339318..58416b0d9794ad5880866f226464573164c666b1 100644 |
--- a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm |
+++ b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm |
@@ -486,6 +486,32 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
// Hide the button until the image is hovered over. |
[changePhotoButton_ setHidden:YES]; |
} |
+ |
+ // Set the image cell's accessibility strings to be the same as the |
+ // button's strings. |
+ [[self cell] accessibilitySetOverrideValue:l10n_util::GetNSString( |
+ editingAllowed ? |
+ IDS_PROFILES_NEW_AVATAR_MENU_CHANGE_PHOTO_ACCESSIBLE_NAME : |
+ IDS_PROFILES_NEW_AVATAR_MENU_PHOTO_ACCESSIBLE_NAME) |
+ forAttribute:NSAccessibilityTitleAttribute]; |
+ [[self cell] accessibilitySetOverrideValue: |
+ editingAllowed ? NSAccessibilityButtonRole : NSAccessibilityImageRole |
+ forAttribute:NSAccessibilityRoleAttribute]; |
+ [[self cell] accessibilitySetOverrideValue: |
+ NSAccessibilityRoleDescription(NSAccessibilityButtonRole, nil) |
+ forAttribute:NSAccessibilityRoleDescriptionAttribute]; |
+ |
+ // The button and the cell should read the same thing. |
+ [self accessibilitySetOverrideValue:l10n_util::GetNSString( |
+ editingAllowed ? |
+ IDS_PROFILES_NEW_AVATAR_MENU_CHANGE_PHOTO_ACCESSIBLE_NAME : |
+ IDS_PROFILES_NEW_AVATAR_MENU_PHOTO_ACCESSIBLE_NAME) |
+ forAttribute:NSAccessibilityTitleAttribute]; |
+ [self accessibilitySetOverrideValue:NSAccessibilityButtonRole |
+ forAttribute:NSAccessibilityRoleAttribute]; |
+ [self accessibilitySetOverrideValue: |
+ NSAccessibilityRoleDescription(NSAccessibilityButtonRole, nil) |
+ forAttribute:NSAccessibilityRoleDescriptionAttribute]; |
} |
return self; |
} |
@@ -517,6 +543,28 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
[changePhotoButton_ setHidden:YES]; |
} |
+// Make sure the element is focusable for accessibility. |
+- (BOOL)canBecomeKeyView { |
+ return YES; |
+} |
+ |
+- (BOOL)accessibilityIsIgnored { |
+ return NO; |
+} |
+ |
+- (NSArray*)accessibilityActionNames { |
+ NSArray* parentActions = [super accessibilityActionNames]; |
+ return [parentActions arrayByAddingObject:NSAccessibilityPressAction]; |
+} |
+ |
+- (void)accessibilityPerformAction:(NSString*)action { |
+ if ([action isEqualToString:NSAccessibilityPressAction]) { |
+ avatarMenu_->EditProfile(avatarMenu_->GetActiveProfileIndex()); |
+ } |
+ |
+ [super accessibilityPerformAction:action]; |
+} |
+ |
- (TransparentBackgroundButton*)changePhotoButtonWithRect:(NSRect)rect { |
TransparentBackgroundButton* button = |
[[TransparentBackgroundButton alloc] initWithFrame:rect]; |
@@ -609,6 +657,12 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
[profileNameTextField_ setHidden:YES]; |
} |
+ [[self cell] accessibilitySetOverrideValue:NSAccessibilityButtonRole |
+ forAttribute:NSAccessibilityRoleAttribute]; |
+ [[self cell] accessibilitySetOverrideValue: |
+ NSAccessibilityRoleDescription(NSAccessibilityButtonRole, nil) |
+ forAttribute:NSAccessibilityRoleDescriptionAttribute]; |
+ |
[self setBordered:NO]; |
[self setFont:[NSFont labelFontOfSize:kTitleFontSize]]; |
[self setAlignment:NSCenterTextAlignment]; |
@@ -994,6 +1048,13 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
viewMode_ = profiles::BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT; |
} |
+ [window accessibilitySetOverrideValue: |
+ l10n_util::GetNSString(IDS_PROFILES_NEW_AVATAR_MENU_ACCESSIBLE_NAME) |
+ forAttribute:NSAccessibilityTitleAttribute]; |
+ [window accessibilitySetOverrideValue: |
+ l10n_util::GetNSString(IDS_PROFILES_NEW_AVATAR_MENU_ACCESSIBLE_NAME) |
+ forAttribute:NSAccessibilityHelpAttribute]; |
+ |
[[self bubble] setAlignment:info_bubble::kAlignRightEdgeToAnchorEdge]; |
[[self bubble] setArrowLocation:info_bubble::kNoArrow]; |
[[self bubble] setBackgroundColor:GetDialogBackgroundColor()]; |
@@ -1409,6 +1470,11 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
[link setTarget:self]; |
[link setAction:@selector(showAccountReauthenticationView:)]; |
[link setTag:kPrimaryProfileTag]; |
+ [[link cell] |
+ accessibilitySetOverrideValue:l10n_util::GetNSStringF( |
+ IDS_PROFILES_ACCOUNT_BUTTON_AUTH_ERROR_ACCESSIBLE_NAME, |
+ item.sync_state) |
+ forAttribute:NSAccessibilityTitleAttribute]; |
} else { |
[link setEnabled:NO]; |
} |
@@ -1532,6 +1598,7 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
} |
if ([self shouldShowGoIncognito]) { |
+ // TODO(noms): Use the correct incognito icon when it's available. |
groby-ooo-7-16
2014/08/15 19:52:07
nit: Pleaze to be filing a bug?
noms (inactive)
2014/08/15 20:00:00
Gah, sorry, bad rebase. Right icon is already in u
|
NSButton* goIncognitoButton = |
[self hoverButtonWithRect:viewRect |
text:l10n_util::GetNSString( |