Skip to content

Commit

Permalink
Change the order of setter in onInitializeAccessibilityNodeInfo and e…
Browse files Browse the repository at this point in the history
…nsure the getTalkbackDescription return the correct order of text for TalkBack by returning the talkbackSegments at once instead of keep checking twice
  • Loading branch information
dnhan1707 committed Oct 26, 2024
1 parent 4f47439 commit 9829291
Showing 1 changed file with 30 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,22 @@ public void handleMessage(Message msg) {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);

final Object accessibilityLabelledBy = host.getTag(R.id.labelled_by);
if (accessibilityLabelledBy != null) {
mAccessibilityLabelledBy =
ReactFindViewUtil.findView(host.getRootView(), (String) accessibilityLabelledBy);
if (mAccessibilityLabelledBy != null) {
info.setLabeledBy(mAccessibilityLabelledBy);
}
}

// state is changeable.
final ReadableMap accessibilityState = (ReadableMap) host.getTag(R.id.accessibility_state);
if (accessibilityState != null) {
setState(info, accessibilityState, host.getContext());
}

if (host.getTag(R.id.accessibility_state_expanded) != null) {
final boolean accessibilityStateExpanded =
(boolean) host.getTag(R.id.accessibility_state_expanded);
Expand All @@ -421,6 +437,7 @@ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCo
? AccessibilityNodeInfoCompat.ACTION_COLLAPSE
: AccessibilityNodeInfoCompat.ACTION_EXPAND);
}

final AccessibilityRole accessibilityRole = AccessibilityRole.fromViewTag(host);
final String accessibilityHint = (String) host.getTag(R.id.accessibility_hint);
if (accessibilityRole != null) {
Expand All @@ -431,20 +448,6 @@ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCo
info.setTooltipText(accessibilityHint);
}

final Object accessibilityLabelledBy = host.getTag(R.id.labelled_by);
if (accessibilityLabelledBy != null) {
mAccessibilityLabelledBy =
ReactFindViewUtil.findView(host.getRootView(), (String) accessibilityLabelledBy);
if (mAccessibilityLabelledBy != null) {
info.setLabeledBy(mAccessibilityLabelledBy);
}
}

// state is changeable.
final ReadableMap accessibilityState = (ReadableMap) host.getTag(R.id.accessibility_state);
if (accessibilityState != null) {
setState(info, accessibilityState, host.getContext());
}
final ReadableArray accessibilityActions =
(ReadableArray) host.getTag(R.id.accessibility_actions);

Expand Down Expand Up @@ -1188,22 +1191,28 @@ public static CharSequence getTalkbackDescription(

StringBuilder talkbackSegments = new StringBuilder();

// EditText's prioritize their own text content over a contentDescription so skip this
if (!TextUtils.isEmpty(contentDescription) && (!isEditText || !hasNodeText)) {
// next add content description
talkbackSegments.append(contentDescription);
return talkbackSegments;
}

// EditText
//Prioritize their own text
if (hasNodeText) {
// skipped status checks above for EditText

// description
talkbackSegments.append(nodeText);
if (!TextUtils.isEmpty(contentDescription) && !isEditText) {
// next add content description
talkbackSegments.append(contentDescription);
}

return talkbackSegments;
}

// EditText's prioritize their own text content over a contentDescription so skip this
// if (!TextUtils.isEmpty(contentDescription) && !isEditText) {
// // next add content description
// talkbackSegments.append(contentDescription);
// return talkbackSegments;
// }

// If there are child views and no contentDescription the text of all non-focusable children,
// comma separated, becomes the description.
if (view instanceof ViewGroup) {
Expand Down

0 comments on commit 9829291

Please sign in to comment.