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

Revert "Fixes Android text field to use hint text for accessibility" #37083

Merged
merged 1 commit into from
Oct 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 10 additions & 40 deletions shell/platform/android/io/flutter/view/AccessibilityBridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -885,8 +885,7 @@ && shouldSetCollectionInfo(semanticsNode)) {
// Scopes routes are not focusable, only need to set the content
// for non-scopes-routes semantics nodes.
if (semanticsNode.hasFlag(Flag.IS_TEXT_FIELD)) {
result.setText(semanticsNode.getValue());
result.setHintText(semanticsNode.getTextFieldHint());
result.setText(semanticsNode.getValueLabelHint());
} else if (!semanticsNode.hasFlag(Flag.SCOPES_ROUTE)) {
CharSequence content = semanticsNode.getValueLabelHint();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
Expand Down Expand Up @@ -2774,47 +2773,18 @@ private float max(float a, float b, float c, float d) {
return Math.max(a, Math.max(b, Math.max(c, d)));
}

private CharSequence getValue() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return value;
} else {
return createSpannableString(value, valueAttributes);
}
}

private CharSequence getLabel() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return label;
} else {
return createSpannableString(label, labelAttributes);
}
}

private CharSequence getHint() {
private CharSequence getValueLabelHint() {
CharSequence[] array;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return hint;
array = new CharSequence[] {value, label, hint};
} else {
return createSpannableString(hint, hintAttributes);
array =
new CharSequence[] {
createSpannableString(value, valueAttributes),
createSpannableString(label, labelAttributes),
createSpannableString(hint, hintAttributes),
};
}
}

private CharSequence getValueLabelHint() {
CharSequence[] array = new CharSequence[] {getValue(), getLabel(), getHint()};
CharSequence result = null;
for (CharSequence word : array) {
if (word != null && word.length() > 0) {
if (result == null || result.length() == 0) {
result = word;
} else {
result = TextUtils.concat(result, ", ", word);
}
}
}
return result;
}

private CharSequence getTextFieldHint() {
CharSequence[] array = new CharSequence[] {getLabel(), getHint()};
CharSequence result = null;
for (CharSequence word : array) {
if (word != null && word.length() > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,21 +77,18 @@ public void itDescribesNonTextFieldsWithAContentDescription() {
}

@Test
public void itDescribesTextFieldsWithTextAndHint() {
public void itDescribesTextFieldsWithText() {
AccessibilityBridge accessibilityBridge = setUpBridge();

TestSemanticsNode testSemanticsNode = new TestSemanticsNode();
testSemanticsNode.value = "Hello, World";
testSemanticsNode.label = "some label";
testSemanticsNode.hint = "some hint";
testSemanticsNode.label = "Hello, World";
testSemanticsNode.addFlag(AccessibilityBridge.Flag.IS_TEXT_FIELD);
TestSemanticsUpdate testSemanticsUpdate = testSemanticsNode.toUpdate();
testSemanticsUpdate.sendUpdateToBridge(accessibilityBridge);
AccessibilityNodeInfo nodeInfo = accessibilityBridge.createAccessibilityNodeInfo(0);

assertEquals(nodeInfo.getContentDescription(), null);
assertEquals(nodeInfo.getText().toString(), "Hello, World");
assertEquals(nodeInfo.getHintText().toString(), "some label, some hint");
}

@Test
Expand Down