Commit de3aaaa8 authored by Elly Fong-Jones's avatar Elly Fong-Jones Committed by Commit Bot

views_bridge_mac: migrate off deprecated NSAccessibility API

This change is pretty simple because there are no uses of these APIs
and only two overrides of deprecated methods:

* BridgedContentView now supports accessibilityChildren directly
* NativeWidgetMacNSWindow now supports accessibilityTitle directly

In informal testing, browser windows and controls seem to still be
navigable using VoiceOver.

Bug: 386671
Change-Id: I46593b863603a4c2155cfd19859ea09401182c1a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1528470
Auto-Submit: Elly Fong-Jones <ellyjones@chromium.org>
Commit-Queue: ccameron <ccameron@chromium.org>
Reviewed-by: default avatarccameron <ccameron@chromium.org>
Cr-Commit-Position: refs/heads/master@{#641679}
parent 83ef1761
......@@ -1432,17 +1432,16 @@ ui::TextEditCommand GetTextEditCommandForMenuAction(SEL action) {
client->EndDrag();
}
// NSAccessibility informal protocol implementation.
// NSAccessibility formal protocol implementation:
- (id)accessibilityAttributeValue:(NSString*)attribute {
if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
if (id accessible = bridge_->host_helper()->GetNativeViewAccessible())
return @[ accessible ];
}
return [super accessibilityAttributeValue:attribute];
- (NSArray*)accessibilityChildren {
if (id accessible = bridge_->host_helper()->GetNativeViewAccessible())
return @[ accessible ];
return [super accessibilityChildren];
}
// NSAccessibility informal protocol implementation:
- (id)accessibilityHitTest:(NSPoint)point {
return [bridge_->host_helper()->GetNativeViewAccessible()
accessibilityHitTest:point];
......
......@@ -27,7 +27,7 @@
@interface NativeWidgetMacNSWindow ()
- (ViewsNSWindowDelegate*)viewsNSWindowDelegate;
- (BOOL)hasViewsMenuActive;
- (id)rootAccessibilityObject;
- (id<NSAccessibility>)rootAccessibilityObject;
// Private API on NSWindow, determines whether the title is drawn on the title
// bar. The title is still visible in menus, Expose, etc.
......@@ -141,9 +141,11 @@
return hasMenuController;
}
- (id)rootAccessibilityObject {
return bridgeImpl_ ? bridgeImpl_->host_helper()->GetNativeViewAccessible()
: nullptr;
- (id<NSAccessibility>)rootAccessibilityObject {
id<NSAccessibility> obj =
bridgeImpl_ ? bridgeImpl_->host_helper()->GetNativeViewAccessible() : nil;
DCHECK([obj conformsToProtocol:@protocol(NSAccessibility)]);
return obj;
}
// NSWindow overrides.
......@@ -342,18 +344,13 @@
return bridgeImpl_->host_helper()->GetNativeViewAccessible();
}
- (id)accessibilityAttributeValue:(NSString*)attribute {
- (NSString*)accessibilityTitle {
// Check when NSWindow is asked for its title to provide the title given by
// the views::RootView (and WidgetDelegate::GetAccessibleWindowTitle()). For
// all other attributes, use what NSWindow provides by default since diverging
// from NSWindow's behavior can easily break VoiceOver integration.
if (![attribute isEqualToString:NSAccessibilityTitleAttribute])
return [super accessibilityAttributeValue:attribute];
id viewsValue =
[[self rootAccessibilityObject] accessibilityAttributeValue:attribute];
return viewsValue ? viewsValue
: [super accessibilityAttributeValue:attribute];
NSString* viewsValue = self.rootAccessibilityObject.accessibilityTitle;
return viewsValue ? viewsValue : [super accessibilityTitle];
}
@end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment