mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Remove deprecated accessibilityStates property. (#26168)
Summary: We added the accessibilityState property as a more semantically rich way for components to describe information about their state to accessibility services. This PR removes the old accessibilityStates property. <!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? --> ## Changelog [General] [Change] - Remove accessibilityStates property. Pull Request resolved: https://github.com/facebook/react-native/pull/26168 Test Plan: Ensure that RNTester accessibility examples function properly on both iOS and Android. Differential Revision: D17152891 Pulled By: cpojer fbshipit-source-id: d71d3cf0f2e0846979d2ba104b6c69e4e5725252
This commit is contained in:
committed by
Facebook Github Bot
parent
0165489b8f
commit
7b35f427fd
@@ -136,31 +136,6 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
view.setTag(R.id.accessibility_role, AccessibilityRole.fromValue(accessibilityRole));
|
||||
}
|
||||
|
||||
@ReactProp(name = ViewProps.ACCESSIBILITY_STATES)
|
||||
public void setViewStates(@NonNull T view, @Nullable ReadableArray accessibilityStates) {
|
||||
boolean shouldUpdateContentDescription =
|
||||
view.getTag(R.id.accessibility_states) != null && accessibilityStates == null;
|
||||
view.setTag(R.id.accessibility_states, accessibilityStates);
|
||||
view.setSelected(false);
|
||||
view.setEnabled(true);
|
||||
if (accessibilityStates != null) {
|
||||
for (int i = 0; i < accessibilityStates.size(); i++) {
|
||||
String state = accessibilityStates.getString(i);
|
||||
if (sStateDescription.containsKey(state)) {
|
||||
shouldUpdateContentDescription = true;
|
||||
}
|
||||
if ("selected".equals(state)) {
|
||||
view.setSelected(true);
|
||||
} else if ("disabled".equals(state)) {
|
||||
view.setEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shouldUpdateContentDescription) {
|
||||
updateViewContentDescription(view);
|
||||
}
|
||||
}
|
||||
|
||||
@ReactProp(name = ViewProps.ACCESSIBILITY_STATE)
|
||||
public void setViewState(@NonNull T view, @Nullable ReadableMap accessibilityState) {
|
||||
if (accessibilityState == null) {
|
||||
@@ -189,22 +164,12 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
|
||||
private void updateViewContentDescription(@NonNull T view) {
|
||||
final String accessibilityLabel = (String) view.getTag(R.id.accessibility_label);
|
||||
final ReadableArray accessibilityStates =
|
||||
(ReadableArray) view.getTag(R.id.accessibility_states);
|
||||
final ReadableMap accessibilityState = (ReadableMap) view.getTag(R.id.accessibility_state);
|
||||
final String accessibilityHint = (String) view.getTag(R.id.accessibility_hint);
|
||||
final List<String> contentDescription = new ArrayList<>();
|
||||
if (accessibilityLabel != null) {
|
||||
contentDescription.add(accessibilityLabel);
|
||||
}
|
||||
if (accessibilityStates != null) {
|
||||
for (int i = 0; i < accessibilityStates.size(); i++) {
|
||||
final String state = accessibilityStates.getString(i);
|
||||
if (sStateDescription.containsKey(state)) {
|
||||
contentDescription.add(view.getContext().getString(sStateDescription.get(state)));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (accessibilityState != null) {
|
||||
final ReadableMapKeySetIterator i = accessibilityState.keySetIterator();
|
||||
while (i.hasNextKey()) {
|
||||
|
||||
@@ -40,9 +40,6 @@ public abstract class BaseViewManagerDelegate<
|
||||
case ViewProps.ACCESSIBILITY_STATE:
|
||||
mViewManager.setViewState(view, (ReadableMap) value);
|
||||
break;
|
||||
case ViewProps.ACCESSIBILITY_STATES:
|
||||
mViewManager.setViewStates(view, (ReadableArray) value);
|
||||
break;
|
||||
case ViewProps.BACKGROUND_COLOR:
|
||||
mViewManager.setBackgroundColor(view, value == null ? 0 : ((Double) value).intValue());
|
||||
break;
|
||||
|
||||
+1
-36
@@ -159,13 +159,8 @@ public class ReactAccessibilityDelegate extends AccessibilityDelegateCompat {
|
||||
setRole(info, accessibilityRole, host.getContext());
|
||||
}
|
||||
|
||||
// states are changeable.
|
||||
final ReadableArray accessibilityStates =
|
||||
(ReadableArray) host.getTag(R.id.accessibility_states);
|
||||
// state is changeable.
|
||||
final ReadableMap accessibilityState = (ReadableMap) host.getTag(R.id.accessibility_state);
|
||||
if (accessibilityStates != null) {
|
||||
setStates(info, accessibilityStates, host.getContext());
|
||||
}
|
||||
if (accessibilityState != null) {
|
||||
setState(info, accessibilityState, host.getContext());
|
||||
}
|
||||
@@ -206,35 +201,6 @@ public class ReactAccessibilityDelegate extends AccessibilityDelegateCompat {
|
||||
return super.performAccessibilityAction(host, action, args);
|
||||
}
|
||||
|
||||
private static void setStates(
|
||||
AccessibilityNodeInfoCompat info, ReadableArray accessibilityStates, Context context) {
|
||||
for (int i = 0; i < accessibilityStates.size(); i++) {
|
||||
String state = accessibilityStates.getString(i);
|
||||
switch (state) {
|
||||
case "selected":
|
||||
info.setSelected(true);
|
||||
break;
|
||||
case "disabled":
|
||||
info.setEnabled(false);
|
||||
break;
|
||||
case "checked":
|
||||
info.setCheckable(true);
|
||||
info.setChecked(true);
|
||||
if (info.getClassName().equals(AccessibilityRole.getValue(AccessibilityRole.SWITCH))) {
|
||||
info.setText(context.getString(R.string.state_on_description));
|
||||
}
|
||||
break;
|
||||
case "unchecked":
|
||||
info.setCheckable(true);
|
||||
info.setChecked(false);
|
||||
if (info.getClassName().equals(AccessibilityRole.getValue(AccessibilityRole.SWITCH))) {
|
||||
info.setText(context.getString(R.string.state_off_description));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void setState(
|
||||
AccessibilityNodeInfoCompat info, ReadableMap accessibilityState, Context context) {
|
||||
Log.d(TAG, "setState " + accessibilityState);
|
||||
@@ -335,7 +301,6 @@ public class ReactAccessibilityDelegate extends AccessibilityDelegateCompat {
|
||||
// so leave it alone.
|
||||
if (!ViewCompat.hasAccessibilityDelegate(view)
|
||||
&& (view.getTag(R.id.accessibility_role) != null
|
||||
|| view.getTag(R.id.accessibility_states) != null
|
||||
|| view.getTag(R.id.accessibility_state) != null
|
||||
|| view.getTag(R.id.accessibility_actions) != null)) {
|
||||
ViewCompat.setAccessibilityDelegate(view, new ReactAccessibilityDelegate());
|
||||
|
||||
@@ -139,7 +139,6 @@ public class ViewProps {
|
||||
public static final String ACCESSIBILITY_HINT = "accessibilityHint";
|
||||
public static final String ACCESSIBILITY_LIVE_REGION = "accessibilityLiveRegion";
|
||||
public static final String ACCESSIBILITY_ROLE = "accessibilityRole";
|
||||
public static final String ACCESSIBILITY_STATES = "accessibilityStates";
|
||||
public static final String ACCESSIBILITY_STATE = "accessibilityState";
|
||||
public static final String ACCESSIBILITY_ACTIONS = "accessibilityActions";
|
||||
public static final String IMPORTANT_FOR_ACCESSIBILITY = "importantForAccessibility";
|
||||
|
||||
Reference in New Issue
Block a user