diff options
author | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-22 02:29:18 +0000 |
---|---|---|
committer | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-22 02:29:18 +0000 |
commit | b518fa10e24b183a15b8c194ddc09527c0d07768 (patch) | |
tree | be8bd1143a322a783d9b28a02e585afa24dec4ce | |
parent | 5f6f9bce342075bea590cb69914d97eb3bdde29a (diff) | |
download | chromium_src-b518fa10e24b183a15b8c194ddc09527c0d07768.zip chromium_src-b518fa10e24b183a15b8c194ddc09527c0d07768.tar.gz chromium_src-b518fa10e24b183a15b8c194ddc09527c0d07768.tar.bz2 |
[Mac][MC] Initial accessibility pass.
This gives all the buttons appropriate roles, AXTitles, and makes accessible
more of the notification content.
BUG=238248
R=dewittj@chromium.org, dmazzoni@chromium.org, thakis@chromium.org
Review URL: https://codereview.chromium.org/17408004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207994 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ui/base/strings/ui_strings.grd | 3 | ||||
-rw-r--r-- | ui/message_center/cocoa/notification_controller.mm | 52 | ||||
-rw-r--r-- | ui/message_center/cocoa/status_item_view.mm | 13 | ||||
-rw-r--r-- | ui/message_center/cocoa/tray_view_controller.mm | 18 |
4 files changed, 84 insertions, 2 deletions
diff --git a/ui/base/strings/ui_strings.grd b/ui/base/strings/ui_strings.grd index 57b19a1..89d1320 100644 --- a/ui/base/strings/ui_strings.grd +++ b/ui/base/strings/ui_strings.grd @@ -452,6 +452,9 @@ need to be translated for each locale.--> <message name="IDS_MESSAGE_CENTER_SETTINGS_BUTTON_LABEL" desc="The button label for visiting the appropriate settings page in the footer of the message center."> Settings </message> + <message name="IDS_MESSAGE_CENTER_SETTINGS_GO_BACK_BUTTON_TOOLTIP" desc="The tooltip on back button that returns from settings to the notification list."> + Go back to notifications + </message> <message name="IDS_MESSAGE_CENTER_SETTINGS_DIALOG_DESCRIPTION" desc="The label to describe the settings dialog."> Allow notifications from the following: </message> diff --git a/ui/message_center/cocoa/notification_controller.mm b/ui/message_center/cocoa/notification_controller.mm index f599381..87b4a8f 100644 --- a/ui/message_center/cocoa/notification_controller.mm +++ b/ui/message_center/cocoa/notification_controller.mm @@ -9,8 +9,10 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "grit/ui_resources.h" +#include "grit/ui_strings.h" #include "skia/ext/skia_utils_mac.h" #import "ui/base/cocoa/hover_image_button.h" +#include "ui/base/l10n/l10n_util_mac.h" #include "ui/base/resource/resource_bundle.h" #include "ui/base/text/text_elider.h" #include "ui/message_center/message_center.h" @@ -89,6 +91,8 @@ } @end +//////////////////////////////////////////////////////////////////////////////// + @interface MCNotificationView : NSBox { @private MCNotificationController* controller_; @@ -113,8 +117,37 @@ } [controller_ notificationClicked]; } + +- (BOOL)accessibilityIsIgnored { + return NO; +} + +- (NSArray*)accessibilityActionNames { + return @[ NSAccessibilityPressAction ]; +} + +- (void)accessibilityPerformAction:(NSString*)action { + if ([action isEqualToString:NSAccessibilityPressAction]) { + [controller_ notificationClicked]; + return; + } + [super accessibilityPerformAction:action]; +} @end +//////////////////////////////////////////////////////////////////////////////// + +@interface AccessibilityIgnoredBox : NSBox +@end + +@implementation AccessibilityIgnoredBox +- (BOOL)accessibilityIsIgnored { + return YES; +} +@end + +//////////////////////////////////////////////////////////////////////////////// + @interface MCNotificationController (Private) // Returns a string with item's title in title color and item's message in // message color. @@ -155,6 +188,8 @@ maxNumberOfLines:(size_t)lines; @end +//////////////////////////////////////////////////////////////////////////////// + @implementation MCNotificationController - (id)initWithNotification:(const message_center::Notification*)notification @@ -252,6 +287,11 @@ listFrame.origin.y = 0; listFrame.size.height = 0; listItemView_.reset([[NSView alloc] initWithFrame:listFrame]); + [listItemView_ accessibilitySetOverrideValue:NSAccessibilityListRole + forAttribute:NSAccessibilityRoleAttribute]; + [listItemView_ + accessibilitySetOverrideValue:NSAccessibilityContentListSubrole + forAttribute:NSAccessibilitySubroleAttribute]; CGFloat y = 0; NSFont* font = [NSFont systemFontOfSize:message_center::kMessageFontSize]; @@ -327,7 +367,7 @@ separatorFrame.origin = NSMakePoint(0, y); separatorFrame.size.height = 1; scoped_nsobject<NSBox> separator( - [[NSBox alloc] initWithFrame:separatorFrame]); + [[AccessibilityIgnoredBox alloc] initWithFrame:separatorFrame]); [self configureCustomBox:separator]; [separator setFillColor:gfx::SkColorToCalibratedNSColor( message_center::kButtonSeparatorColor)]; @@ -441,7 +481,8 @@ NSRect imageFrame = NSMakeRect(0, 0, message_center::kNotificationIconSize, message_center::kNotificationIconSize); - scoped_nsobject<NSBox> imageBox([[NSBox alloc] initWithFrame:imageFrame]); + scoped_nsobject<NSBox> imageBox( + [[AccessibilityIgnoredBox alloc] initWithFrame:imageFrame]); [self configureCustomBox:imageBox]; [imageBox setFillColor:gfx::SkColorToCalibratedNSColor( message_center::kLegacyIconBackgroundColor)]; @@ -473,6 +514,13 @@ [closeButton_ setAutoresizingMask:NSViewMinYMargin]; [closeButton_ setTarget:self]; [closeButton_ setAction:@selector(close:)]; + [[closeButton_ cell] + accessibilitySetOverrideValue:NSAccessibilityCloseButtonSubrole + forAttribute:NSAccessibilitySubroleAttribute]; + [[closeButton_ cell] + accessibilitySetOverrideValue: + l10n_util::GetNSString(IDS_APP_ACCNAME_CLOSE) + forAttribute:NSAccessibilityTitleAttribute]; } - (void)configureTitleInFrame:(NSRect)rootFrame { diff --git a/ui/message_center/cocoa/status_item_view.mm b/ui/message_center/cocoa/status_item_view.mm index 085fa61..5e1002f 100644 --- a/ui/message_center/cocoa/status_item_view.mm +++ b/ui/message_center/cocoa/status_item_view.mm @@ -150,6 +150,19 @@ const CGFloat kUnreadCountMinY = 4; } } +- (NSArray*)accessibilityActionNames { + return @[ NSAccessibilityPressAction ]; +} + +- (void)accessibilityPerformAction:(NSString*)action { + if ([action isEqualToString:NSAccessibilityPressAction]) { + if (callback_) + callback_.get()(); + return; + } + [super accessibilityPerformAction:action]; +} + // Private ///////////////////////////////////////////////////////////////////// - (BOOL)shouldHighlight { diff --git a/ui/message_center/cocoa/tray_view_controller.mm b/ui/message_center/cocoa/tray_view_controller.mm index 78e5b7b..1a90a96 100644 --- a/ui/message_center/cocoa/tray_view_controller.mm +++ b/ui/message_center/cocoa/tray_view_controller.mm @@ -294,12 +294,16 @@ const CGFloat kTrayBottomMargin = 75; [backButton_ setHidden:NO]; [clearAllButton_ setEnabled:NO]; + [scrollView_ setHidden:YES]; + [[[self view] window] recalculateKeyViewLoop]; [self updateTrayViewAndWindow]; } - (void)hideSettings:(id)sender { + [scrollView_ setHidden:NO]; + [[settingsController_ view] removeFromSuperview]; settingsController_.reset(); @@ -413,6 +417,11 @@ const CGFloat kTrayBottomMargin = 75; configureButton(backButton_); [backButton_ setHidden:YES]; [backButton_ setKeyEquivalent:@"\e"]; + [backButton_ setToolTip:l10n_util::GetNSString( + IDS_MESSAGE_CENTER_SETTINGS_GO_BACK_BUTTON_TOOLTIP)]; + [[backButton_ cell] + accessibilitySetOverrideValue:[backButton_ toolTip] + forAttribute:NSAccessibilityDescriptionAttribute]; [[self view] addSubview:backButton_]; // Create the divider line between the control area and the notifications. @@ -451,6 +460,9 @@ const CGFloat kTrayBottomMargin = 75; rb.GetNativeImageNamed(IDR_NOTIFICATION_SETTINGS_PRESSED).ToNSImage()]; [settingsButton_ setToolTip: l10n_util::GetNSString(IDS_MESSAGE_CENTER_SETTINGS_BUTTON_LABEL)]; + [[settingsButton_ cell] + accessibilitySetOverrideValue:[settingsButton_ toolTip] + forAttribute:NSAccessibilityDescriptionAttribute]; [settingsButton_ setAction:@selector(showSettings:)]; configureButton(settingsButton_); [view addSubview:settingsButton_]; @@ -469,6 +481,9 @@ const CGFloat kTrayBottomMargin = 75; rb.GetNativeImageNamed(IDR_NOTIFICATION_CLEAR_ALL_PRESSED).ToNSImage()]; [clearAllButton_ setToolTip: l10n_util::GetNSString(IDS_MESSAGE_CENTER_CLEAR_ALL)]; + [[clearAllButton_ cell] + accessibilitySetOverrideValue:[clearAllButton_ toolTip] + forAttribute:NSAccessibilityDescriptionAttribute]; [clearAllButton_ setAction:@selector(clearAllNotifications:)]; configureButton(clearAllButton_); [view addSubview:clearAllButton_]; @@ -486,6 +501,9 @@ const CGFloat kTrayBottomMargin = 75; rb.GetNativeImageNamed(IDR_NOTIFICATION_PAUSE_PRESSED).ToNSImage()]; [pauseButton_ setToolTip: l10n_util::GetNSString(IDS_MESSAGE_CENTER_QUIET_MODE_BUTTON_TOOLTIP)]; + [[pauseButton_ cell] + accessibilitySetOverrideValue:[pauseButton_ toolTip] + forAttribute:NSAccessibilityDescriptionAttribute]; [pauseButton_ setAction:@selector(toggleQuietMode:)]; configureButton(pauseButton_); [view addSubview:pauseButton_]; |