Skip to content

Commit 8227a12

Browse files
andrewdacenkofacebook-github-bot
authored andcommitted
Add accessibilityState (facebook#53179)
Summary: Changelog: [Internal] Add accessibilityState debug prop Reviewed By: zeyap Differential Revision: D79894111
1 parent a2eb3b2 commit 8227a12

4 files changed

Lines changed: 54 additions & 11 deletions

File tree

packages/react-native/Libraries/Components/Pressable/__tests__/Pressable-itest.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ describe('<Pressable>', () => {
4545
expect(root.getRenderedOutput().toJSX()).toEqual(
4646
<rn-view
4747
accessible="true"
48+
accessibilityState="{disabled:false,selected:false,checked:None,busy:false,expanded:null}"
4849
backgroundColor="rgba(0, 0, 255, 1)"
4950
borderWidth="3.000000"
5051
height="50.000000"
@@ -68,6 +69,7 @@ describe('<Pressable>', () => {
6869
expect(root.getRenderedOutput().toJSX()).toEqual(
6970
<rn-view
7071
accessible="true"
72+
accessibilityState="{disabled:false,selected:false,checked:None,busy:false,expanded:null}"
7173
backgroundColor="rgba(128, 128, 128, 1)"
7274
/>,
7375
);
@@ -139,7 +141,9 @@ describe('<Pressable>', () => {
139141
expect(element.childNodes.length).toBe(1);
140142

141143
expect(root.getRenderedOutput().toJSX()).toEqual(
142-
<rn-view accessible="true">
144+
<rn-view
145+
accessible="true"
146+
accessibilityState="{disabled:false,selected:false,checked:None,busy:false,expanded:null}">
143147
<rn-paragraph
144148
allowFontScaling="true"
145149
ellipsizeMode="tail"

packages/react-native/Libraries/Image/__tests__/Image-itest.js

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ describe('<Image>', () => {
3535

3636
expect(root.getRenderedOutput().toJSX()).toEqual(
3737
<rn-image
38+
accessibilityState="{disabled:false,selected:false,checked:None,busy:false,expanded:null}"
3839
overflow="hidden"
40+
resizeMode="cover"
3941
source-scale="1"
4042
source-type="remote"
41-
resizeMode="cover"
4243
/>,
4344
);
4445

@@ -48,10 +49,11 @@ describe('<Image>', () => {
4849

4950
expect(root.getRenderedOutput().toJSX()).toEqual(
5051
<rn-image
52+
accessibilityState="{disabled:false,selected:false,checked:None,busy:false,expanded:null}"
5153
overflow="hidden"
54+
resizeMode="cover"
5255
source-scale="1"
5356
source-type="remote"
54-
resizeMode="cover"
5557
/>,
5658
);
5759
});
@@ -94,7 +96,11 @@ describe('<Image>', () => {
9496
root.render(<Image alt="React Native Logo" />);
9597
});
9698

97-
expect(root.getRenderedOutput({props: ['^access']}).toJSX()).toEqual(
99+
expect(
100+
root
101+
.getRenderedOutput({props: ['accessible', 'accessibilityLabel']})
102+
.toJSX(),
103+
).toEqual(
98104
<rn-image
99105
accessible="true"
100106
accessibilityLabel="React Native Logo"
@@ -114,7 +120,11 @@ describe('<Image>', () => {
114120
);
115121
});
116122

117-
expect(root.getRenderedOutput({props: ['^access']}).toJSX()).toEqual(
123+
expect(
124+
root
125+
.getRenderedOutput({props: ['accessible', 'accessibilityLabel']})
126+
.toJSX(),
127+
).toEqual(
118128
<rn-image accessible="true" accessibilityLabel="React Native" />,
119129
);
120130
});
@@ -605,15 +615,15 @@ describe('<Image>', () => {
605615
);
606616
});
607617

608-
expect(root.getRenderedOutput().toJSX()).toEqual(
618+
expect(
619+
root
620+
.getRenderedOutput({props: ['width', 'height', 'resizeMode']})
621+
.toJSX(),
622+
).toEqual(
609623
<rn-image
610624
height="100.000000"
611-
overflow="hidden"
612625
resizeMode="contain"
613626
width="100.000000"
614-
source-scale="1"
615-
source-type="remote"
616-
source-uri="https://reactnative.dev/img/tiny_logo.png"
617627
/>,
618628
);
619629
});

packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
#include <string>
1313
#include <vector>
1414

15+
#include <react/renderer/debug/DebugStringConvertible.h>
16+
1517
namespace facebook::react {
1618

1719
enum class AccessibilityTraits : uint32_t {
@@ -91,7 +93,7 @@ struct AccessibilityState {
9193
bool selected{false};
9294
bool busy{false};
9395
std::optional<bool> expanded{std::nullopt};
94-
enum { Unchecked, Checked, Mixed, None } checked{None};
96+
enum CheckedState { Unchecked, Checked, Mixed, None } checked{None};
9597
};
9698

9799
constexpr bool operator==(
@@ -108,6 +110,29 @@ constexpr bool operator!=(
108110
return !(rhs == lhs);
109111
}
110112

113+
#if RN_DEBUG_STRING_CONVERTIBLE
114+
inline std::string toString(AccessibilityState::CheckedState state) {
115+
switch (state) {
116+
case AccessibilityState::Unchecked:
117+
return "Unchecked";
118+
case AccessibilityState::Checked:
119+
return "Checked";
120+
case AccessibilityState::Mixed:
121+
return "Mixed";
122+
case AccessibilityState::None:
123+
return "None";
124+
}
125+
}
126+
127+
inline std::string toString(const AccessibilityState& accessibilityState) {
128+
return "{disabled:" + toString(accessibilityState.disabled) +
129+
",selected:" + toString(accessibilityState.selected) +
130+
",checked:" + toString(accessibilityState.checked) +
131+
",busy:" + toString(accessibilityState.busy) +
132+
",expanded:" + toString(accessibilityState.expanded) + "}";
133+
}
134+
#endif
135+
111136
struct AccessibilityLabelledBy {
112137
std::vector<std::string> value{};
113138
};

packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,10 @@ SharedDebugStringConvertibleList AccessibilityProps::getDebugProps() const {
320320
"accessibilityActions",
321321
accessibilityActions,
322322
defaultProps.accessibilityActions),
323+
debugStringConvertibleItem(
324+
"accessibilityState",
325+
accessibilityState,
326+
defaultProps.accessibilityState),
323327
debugStringConvertibleItem(
324328
"accessibilityElementsHidden",
325329
accessibilityElementsHidden,

0 commit comments

Comments
 (0)