mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Add static text trait to plain semantics object with label in iOS (flutter/engine#22811)
* Add static text trait to plain semantics object with label in iOS * update * format
This commit is contained in:
parent
fab16364f9
commit
7c9c91cf02
@ -530,6 +530,11 @@ flutter::SemanticsAction GetSemanticsActionForScrollDirection(
|
||||
if ([self node].HasFlag(flutter::SemanticsFlags::kIsLink)) {
|
||||
traits |= UIAccessibilityTraitLink;
|
||||
}
|
||||
if (traits == UIAccessibilityTraitNone && ![self hasChildren] &&
|
||||
[[self accessibilityLabel] length] != 0 &&
|
||||
![self node].HasFlag(flutter::SemanticsFlags::kIsTextField)) {
|
||||
traits = UIAccessibilityTraitStaticText;
|
||||
}
|
||||
return traits;
|
||||
}
|
||||
|
||||
|
||||
@ -89,6 +89,54 @@ class MockAccessibilityBridge : public AccessibilityBridgeIos {
|
||||
XCTAssertEqualObjects(parent.children, @[ child2 ]);
|
||||
}
|
||||
|
||||
- (void)testPlainSemanticsObjectWithLabelHasStaticTextTrait {
|
||||
fml::WeakPtrFactory<flutter::AccessibilityBridgeIos> factory(
|
||||
new flutter::MockAccessibilityBridge());
|
||||
fml::WeakPtr<flutter::AccessibilityBridgeIos> bridge = factory.GetWeakPtr();
|
||||
flutter::SemanticsNode node;
|
||||
node.label = "foo";
|
||||
FlutterSemanticsObject* object = [[FlutterSemanticsObject alloc] initWithBridge:bridge uid:0];
|
||||
[object setSemanticsNode:&node];
|
||||
XCTAssertEqual([object accessibilityTraits], UIAccessibilityTraitStaticText);
|
||||
}
|
||||
|
||||
- (void)testIntresetingSemanticsObjectWithLabelHasStaticTextTrait {
|
||||
fml::WeakPtrFactory<flutter::AccessibilityBridgeIos> factory(
|
||||
new flutter::MockAccessibilityBridge());
|
||||
fml::WeakPtr<flutter::AccessibilityBridgeIos> bridge = factory.GetWeakPtr();
|
||||
flutter::SemanticsNode node;
|
||||
node.label = "foo";
|
||||
FlutterSemanticsObject* object = [[FlutterSemanticsObject alloc] initWithBridge:bridge uid:0];
|
||||
SemanticsObject* child1 = [[SemanticsObject alloc] initWithBridge:bridge uid:1];
|
||||
object.children = @[ child1 ];
|
||||
[object setSemanticsNode:&node];
|
||||
XCTAssertEqual([object accessibilityTraits], UIAccessibilityTraitNone);
|
||||
}
|
||||
|
||||
- (void)testIntresetingSemanticsObjectWithLabelHasStaticTextTrait1 {
|
||||
fml::WeakPtrFactory<flutter::AccessibilityBridgeIos> factory(
|
||||
new flutter::MockAccessibilityBridge());
|
||||
fml::WeakPtr<flutter::AccessibilityBridgeIos> bridge = factory.GetWeakPtr();
|
||||
flutter::SemanticsNode node;
|
||||
node.label = "foo";
|
||||
node.flags = static_cast<int32_t>(flutter::SemanticsFlags::kIsTextField);
|
||||
FlutterSemanticsObject* object = [[FlutterSemanticsObject alloc] initWithBridge:bridge uid:0];
|
||||
[object setSemanticsNode:&node];
|
||||
XCTAssertEqual([object accessibilityTraits], UIAccessibilityTraitNone);
|
||||
}
|
||||
|
||||
- (void)testIntresetingSemanticsObjectWithLabelHasStaticTextTrait2 {
|
||||
fml::WeakPtrFactory<flutter::AccessibilityBridgeIos> factory(
|
||||
new flutter::MockAccessibilityBridge());
|
||||
fml::WeakPtr<flutter::AccessibilityBridgeIos> bridge = factory.GetWeakPtr();
|
||||
flutter::SemanticsNode node;
|
||||
node.label = "foo";
|
||||
node.flags = static_cast<int32_t>(flutter::SemanticsFlags::kIsButton);
|
||||
FlutterSemanticsObject* object = [[FlutterSemanticsObject alloc] initWithBridge:bridge uid:0];
|
||||
[object setSemanticsNode:&node];
|
||||
XCTAssertEqual([object accessibilityTraits], UIAccessibilityTraitButton);
|
||||
}
|
||||
|
||||
- (void)testShouldTriggerAnnouncement {
|
||||
fml::WeakPtrFactory<flutter::AccessibilityBridgeIos> factory(
|
||||
new flutter::MockAccessibilityBridge());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user