Chromium Code Reviews| 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( |