Skip to content

Commit

Permalink
ax_mac_merge: merge AXAccessKey and AXAutocompleteValue implementations
Browse files Browse the repository at this point in the history
Change-Id: Ib2a483f5e9a8d8f75ebfef8303fde8028b2c8cea
Bug: 1237915
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3223163
Reviewed-by: Nektarios Paisios <nektar@chromium.org>
Commit-Queue: Alexander Surkov <asurkov@igalia.com>
Cr-Commit-Position: refs/heads/main@{#932041}
  • Loading branch information
asurkov authored and Chromium LUCI CQ committed Oct 15, 2021
1 parent 7e5092e commit 7ad4b2d
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,6 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker);
// Internally-used property.
@property(nonatomic, readonly) NSPoint origin;

@property(nonatomic, readonly) NSString* accessKey;
@property(nonatomic, readonly) NSNumber* ariaPosInSet;
@property(nonatomic, readonly) NSNumber* ariaSetSize;
@property(nonatomic, readonly) NSArray* children;
Expand Down
22 changes: 0 additions & 22 deletions content/browser/accessibility/browser_accessibility_cocoa.mm
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,6 @@
NSString* const NSAccessibilityARIARowCountAttribute = @"AXARIARowCount";
NSString* const NSAccessibilityARIARowIndexAttribute = @"AXARIARowIndex";
NSString* const NSAccessibilityARIASetSizeAttribute = @"AXARIASetSize";
NSString* const NSAccessibilityAccessKeyAttribute = @"AXAccessKey";
NSString* const NSAccessibilityAutocompleteValueAttribute =
@"AXAutocompleteValue";
NSString* const NSAccessibilityBlockQuoteLevelAttribute = @"AXBlockQuoteLevel";
NSString* const NSAccessibilityDetailsElementsAttribute = @"AXDetailsElements";
NSString* const NSAccessibilityDOMClassList = @"AXDOMClassList";
Expand Down Expand Up @@ -807,8 +804,6 @@ + (void)initialize {
{NSAccessibilityARIARowCountAttribute, @"ariaRowCount"},
{NSAccessibilityARIARowIndexAttribute, @"ariaRowIndex"},
{NSAccessibilityARIASetSizeAttribute, @"ariaSetSize"},
{NSAccessibilityAccessKeyAttribute, @"accessKey"},
{NSAccessibilityAutocompleteValueAttribute, @"autocompleteValue"},
{NSAccessibilityBlockQuoteLevelAttribute, @"blockQuoteLevel"},
{NSAccessibilityChildrenAttribute, @"children"},
{NSAccessibilityIdentifierChromeAttribute, @"internalId"},
Expand Down Expand Up @@ -925,13 +920,6 @@ - (void)detach {
[super detach];
}

- (NSString*)accessKey {
if (![self instanceActive])
return nil;
return NSStringForStringAttribute(_owner,
ax::mojom::StringAttribute::kAccessKey);
}

- (NSNumber*)ariaColumnCount {
if (![self instanceActive])
return nil;
Expand Down Expand Up @@ -986,13 +974,6 @@ - (NSNumber*)ariaSetSize {
return @(*setSize);
}

- (NSString*)autocompleteValue {
if (![self instanceActive])
return nil;
return NSStringForStringAttribute(_owner,
ax::mojom::StringAttribute::kAutoComplete);
}

- (id)blockQuoteLevel {
if (![self instanceActive])
return nil;
Expand Down Expand Up @@ -3624,7 +3605,6 @@ - (NSArray*)accessibilityAttributeNames {
_owner->HasIntAttribute(ax::mojom::IntAttribute::kInvalidState) ||
_owner->HasState(ax::mojom::State::kFocusable)) {
[ret addObjectsFromArray:@[
NSAccessibilityAccessKeyAttribute,
NSAccessibilityInvalidAttribute,
@"AXRequired",
]];
Expand Down Expand Up @@ -3655,8 +3635,6 @@ - (NSArray*)accessibilityAttributeNames {
.empty()) {
[ret addObject:NSAccessibilityDetailsElementsAttribute];
}
if (_owner->HasStringAttribute(ax::mojom::StringAttribute::kAutoComplete))
[ret addObject:NSAccessibilityAutocompleteValueAttribute];

if ([self shouldExposeTitleUIElement])
[ret addObject:NSAccessibilityTitleUIElementAttribute];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,10 @@ IN_PROC_BROWSER_TEST_P(DumpAccessibilityScriptTest, AXPressButton) {
RunMacActionTest(FILE_PATH_LITERAL("ax-press-button.html"));
}

IN_PROC_BROWSER_TEST_P(DumpAccessibilityScriptTest, AXAccessKey) {
RunMacAttributesTest(FILE_PATH_LITERAL("ax-access-key.html"));
}

IN_PROC_BROWSER_TEST_P(DumpAccessibilityScriptTest, AXARIAAtomic) {
RunMacAttributesTest(FILE_PATH_LITERAL("ax-aria-atomic.html"));
}
Expand All @@ -197,6 +201,10 @@ IN_PROC_BROWSER_TEST_P(DumpAccessibilityScriptTest, AXARIARelevant) {
RunMacAttributesTest(FILE_PATH_LITERAL("ax-aria-relevant.html"));
}

IN_PROC_BROWSER_TEST_P(DumpAccessibilityScriptTest, AXAutocompleteValue) {
RunMacAttributesTest(FILE_PATH_LITERAL("ax-autocomplete-value.html"));
}

IN_PROC_BROWSER_TEST_P(DumpAccessibilityScriptTest, SelectAllTextarea) {
RunMacSelectionTest(FILE_PATH_LITERAL("selectall-textarea.html"));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
focusable.AXAccessKey='s'
restriction.AXAccessKey='s'
invalid.AXAccessKey='s'
not_applicable.AXAccessKey=ERROR:FAILED_TO_PARSE
12 changes: 12 additions & 0 deletions content/test/data/accessibility/mac/attributes/ax-access-key.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!--
@MAC-SCRIPT:
focusable.AXAccessKey
restriction.AXAccessKey
invalid.AXAccessKey
not_applicable.AXAccessKey
-->
<!DOCTYPE html>
<input id="focusable" accesskey="s">
<input id="restriction" readonly accesskey="s">
<div id="invalid" aria-invalid="true" accesskey="s">
<div id="not_applicable" accesskey="s">
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
autocomplete.AXAutocompleteValue='list'
not_applicable.AXAutocompleteValue=ERROR:FAILED_TO_PARSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<!--
@MAC-SCRIPT:
autocomplete.AXAutocompleteValue
not_applicable.AXAutocompleteValue
-->
<!DOCTYPE html>
<input id="autocomplete" aria-autocomplete="list">
<div id="not_applicable"></div>
29 changes: 29 additions & 0 deletions ui/accessibility/platform/ax_platform_node_cocoa.mm
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,14 @@
namespace {

// Private WebKit accessibility attributes.
NSString* const NSAccessibilityAccessKeyAttribute = @"AXAccessKey";
NSString* const NSAccessibilityARIAAtomicAttribute = @"AXARIAAtomic";
NSString* const NSAccessibilityARIABusyAttribute = @"AXARIABusy";
NSString* const NSAccessibilityARIACurrentAttribute = @"AXARIACurrent";
NSString* const NSAccessibilityARIALiveAttribute = @"AXARIALive";
NSString* const NSAccessibilityARIARelevantAttribute = @"AXARIARelevant";
NSString* const NSAccessibilityAutocompleteValueAttribute =
@"AXAutocompleteValue";

// Same length as web content/WebKit.
static int kLiveRegionDebounceMillis = 20;
Expand Down Expand Up @@ -663,6 +666,18 @@ - (NSArray*)accessibilityAttributeNames {
if (_node->HasIntAttribute(ax::mojom::IntAttribute::kAriaCurrentState))
[axAttributes addObject:NSAccessibilityARIACurrentAttribute];

// Focusable element or a control element.
if (_node->HasIntAttribute(ax::mojom::IntAttribute::kRestriction) ||
_node->HasIntAttribute(ax::mojom::IntAttribute::kInvalidState) ||
_node->HasState(ax::mojom::State::kFocusable)) {
[axAttributes addObjectsFromArray:@[
NSAccessibilityAccessKeyAttribute,
]];
}

if (_node->HasStringAttribute(ax::mojom::StringAttribute::kAutoComplete))
[axAttributes addObject:NSAccessibilityAutocompleteValueAttribute];

return axAttributes.autorelease();
}

Expand Down Expand Up @@ -714,6 +729,13 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
// NSAccessibility attributes. Order them according to
// NSAccessibilityConstants.h, or see https://crbug.com/678898.

- (NSString*)AXAccessKey {
if (![self instanceActive])
return nil;

return [self getStringAttribute:ax::mojom::StringAttribute::kAccessKey];
}

- (NSNumber*)AXARIAAtomic {
if (![self instanceActive])
return nil;
Expand Down Expand Up @@ -775,6 +797,13 @@ - (NSString*)AXARIARelevant {
return [self getStringAttribute:ax::mojom::StringAttribute::kLiveRelevant];
}

- (NSString*)AXAutocompleteValue {
if (![self instanceActive])
return nil;

return [self getStringAttribute:ax::mojom::StringAttribute::kAutoComplete];
}

- (NSString*)AXRole {
if (!_node)
return nil;
Expand Down

0 comments on commit 7ad4b2d

Please sign in to comment.