Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit c660860

Browse files
authored
Add support for exposing accessibility identifier as accessibilityIdentifier on iOS (#48858)
This PR is a sibling of #47961 but for iOS
1 parent d001419 commit c660860

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

shell/platform/darwin/ios/framework/Source/SemanticsObject.mm

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,17 @@ - (BOOL)onCustomAccessibilityAction:(FlutterCustomAccessibilityAction*)action {
524524
return YES;
525525
}
526526

527+
- (NSString*)accessibilityIdentifier {
528+
if (![self isAccessibilityBridgeAlive]) {
529+
return nil;
530+
}
531+
532+
if ([self node].identifier.empty()) {
533+
return nil;
534+
}
535+
return @([self node].identifier.data());
536+
}
537+
527538
- (NSString*)accessibilityLabel {
528539
if (![self isAccessibilityBridgeAlive]) {
529540
return nil;

shell/platform/darwin/ios/framework/Source/SemanticsObjectTest.mm

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,20 @@ - (void)testFlutterScrollableSemanticsObjectIsHiddenWhenVoiceOverIsRunning {
508508
XCTAssertFalse(scrollView.isAccessibilityElement);
509509
}
510510

511+
- (void)testFlutterSemanticsObjectHasIdentifier {
512+
flutter::testing::MockAccessibilityBridge* mock = new flutter::testing::MockAccessibilityBridge();
513+
mock->isVoiceOverRunningValue = true;
514+
fml::WeakPtrFactory<flutter::AccessibilityBridgeIos> factory(mock);
515+
fml::WeakPtr<flutter::AccessibilityBridgeIos> bridge = factory.GetWeakPtr();
516+
517+
flutter::SemanticsNode node;
518+
node.identifier = "identifier";
519+
520+
FlutterSemanticsObject* object = [[FlutterSemanticsObject alloc] initWithBridge:bridge uid:0];
521+
[object setSemanticsNode:&node];
522+
XCTAssertTrue([object.accessibilityIdentifier isEqualToString:@"identifier"]);
523+
}
524+
511525
- (void)testFlutterScrollableSemanticsObjectWithLabelValueHintIsNotHiddenWhenVoiceOverIsRunning {
512526
flutter::testing::MockAccessibilityBridge* mock = new flutter::testing::MockAccessibilityBridge();
513527
mock->isVoiceOverRunningValue = true;

0 commit comments

Comments
 (0)