Skip to content

Commit

Permalink
Update Android view state when accessibility states are changed. (#24678
Browse files Browse the repository at this point in the history
)

Summary:
In #24095, we removed the code that changes the underlying Android view's enabled state to false when "disabled" is included in the accessibility states, which seems correct. The Android view's state shouldn't mirror the accessibility state, it should be the other way round-- the accessibility state should represent the state of the view.

It seems that the existing test is brokenly setting the disabled state in the Javascript object, and then querying the Android view's enabled state to confirm the change. If the Button implementation is actually the culprit, then IMHO, the correct fix would be to have the Button implementation manipulate the Android View's enabled state, not the accessibilityStates code.

[android] [fix] - Fix internal test case around disabled state of buttons
Pull Request resolved: #24678

Differential Revision: D15237590

Pulled By: cpojer

fbshipit-source-id: d7ebefbcba9d4d9425da4285175302e4b6435df7
  • Loading branch information
Marc Mulcahy authored and facebook-github-bot committed May 7, 2019
1 parent 2becfab commit 70e2ab2
Showing 1 changed file with 12 additions and 1 deletion.
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -146,11 +146,22 @@ public void setViewStates(@Nonnull T view, @Nullable ReadableArray accessibility
return; return;
} }
view.setTag(R.id.accessibility_states, accessibilityStates); view.setTag(R.id.accessibility_states, accessibilityStates);
view.setSelected(false);
view.setEnabled(true);
boolean shouldUpdateContentDescription = false;
for (int i = 0; i < accessibilityStates.size(); i++) { for (int i = 0; i < accessibilityStates.size(); i++) {
String state = accessibilityStates.getString(i); String state = accessibilityStates.getString(i);
if (sStateDescription.containsKey(state)) { if (sStateDescription.containsKey(state)) {
updateViewContentDescription(view); shouldUpdateContentDescription = true;
} }
if (state.equals("selected")) {
view.setSelected(true);
} else if (state.equals("disabled")) {
view.setEnabled(false);
}
}
if (shouldUpdateContentDescription) {
updateViewContentDescription(view);
} }
} }


Expand Down

0 comments on commit 70e2ab2

Please sign in to comment.