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:
Marc Mulcahy
2019-09-02 11:25:31 -07:00
committed by Facebook Github Bot
parent 0165489b8f
commit 7b35f427fd
25 changed files with 19 additions and 208 deletions
@@ -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;
@@ -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";