Skip to content

Commit 46278e3

Browse files
javachefacebook-github-bot
authored andcommitted
Dedupe Accessibility enum string conversions (#53550)
Summary: Pull Request resolved: #53550 Noticed some duplication between `getDiffProps` and `accessibilityPropsConversion` Changelog: [Internal] Reviewed By: lenaic, rshest Differential Revision: D81435037 fbshipit-source-id: b2701f1aec5e647c165a0212f6180edba90fd9f9
1 parent e64dce5 commit 46278e3

File tree

4 files changed

+62
-101
lines changed

4 files changed

+62
-101
lines changed

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

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

15-
#include <react/renderer/debug/DebugStringConvertible.h>
16-
1715
namespace facebook::react {
1816

1917
enum class AccessibilityTraits : uint32_t {
@@ -55,27 +53,6 @@ struct AccessibilityAction {
5553
std::optional<std::string> label{};
5654
};
5755

58-
inline std::string toString(const AccessibilityAction& accessibilityAction) {
59-
std::string result = accessibilityAction.name;
60-
if (accessibilityAction.label.has_value()) {
61-
result += ": '" + accessibilityAction.label.value() + "'";
62-
}
63-
return result;
64-
}
65-
66-
inline std::string toString(
67-
std::vector<AccessibilityAction> accessibilityActions) {
68-
std::string result = "[";
69-
for (size_t i = 0; i < accessibilityActions.size(); i++) {
70-
result += toString(accessibilityActions[i]);
71-
if (i < accessibilityActions.size() - 1) {
72-
result += ", ";
73-
}
74-
}
75-
result += "]";
76-
return result;
77-
}
78-
7956
inline static bool operator==(
8057
const AccessibilityAction& lhs,
8158
const AccessibilityAction& rhs) {
@@ -110,29 +87,6 @@ constexpr bool operator!=(
11087
return !(rhs == lhs);
11188
}
11289

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-
13690
struct AccessibilityLabelledBy {
13791
std::vector<std::string> value{};
13892
};
@@ -182,19 +136,7 @@ enum class AccessibilityLiveRegion : uint8_t {
182136
Assertive,
183137
};
184138

185-
inline std::string toString(
186-
const AccessibilityLiveRegion& accessibilityLiveRegion) {
187-
switch (accessibilityLiveRegion) {
188-
case AccessibilityLiveRegion::None:
189-
return "none";
190-
case AccessibilityLiveRegion::Polite:
191-
return "polite";
192-
case AccessibilityLiveRegion::Assertive:
193-
return "assertive";
194-
}
195-
}
196-
197-
enum class AccessibilityRole {
139+
enum class AccessibilityRole : uint8_t {
198140
None,
199141
Button,
200142
Dropdownlist,
@@ -237,7 +179,7 @@ enum class AccessibilityRole {
237179
Iconmenu,
238180
};
239181

240-
enum class Role {
182+
enum class Role : uint8_t {
241183
Alert,
242184
Alertdialog,
243185
Application,

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

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <react/renderer/components/view/AccessibilityPrimitives.h>
1515
#include <react/renderer/core/PropsParserContext.h>
1616
#include <react/renderer/core/propsConversions.h>
17+
#include <react/renderer/debug/DebugStringConvertible.h>
1718

1819
#include <unordered_map>
1920

@@ -782,4 +783,59 @@ inline void fromRawValue(
782783
result = Role::None;
783784
}
784785

786+
inline std::string toString(AccessibilityLiveRegion accessibilityLiveRegion) {
787+
switch (accessibilityLiveRegion) {
788+
case AccessibilityLiveRegion::None:
789+
return "none";
790+
case AccessibilityLiveRegion::Polite:
791+
return "polite";
792+
case AccessibilityLiveRegion::Assertive:
793+
return "assertive";
794+
}
795+
}
796+
797+
#if RN_DEBUG_STRING_CONVERTIBLE
798+
inline std::string toString(AccessibilityState::CheckedState state) {
799+
switch (state) {
800+
case AccessibilityState::Unchecked:
801+
return "Unchecked";
802+
case AccessibilityState::Checked:
803+
return "Checked";
804+
case AccessibilityState::Mixed:
805+
return "Mixed";
806+
case AccessibilityState::None:
807+
return "None";
808+
}
809+
}
810+
811+
inline std::string toString(const AccessibilityAction& accessibilityAction) {
812+
std::string result = accessibilityAction.name;
813+
if (accessibilityAction.label.has_value()) {
814+
result += ": '" + accessibilityAction.label.value() + "'";
815+
}
816+
return result;
817+
}
818+
819+
inline std::string toString(
820+
std::vector<AccessibilityAction> accessibilityActions) {
821+
std::string result = "[";
822+
for (size_t i = 0; i < accessibilityActions.size(); i++) {
823+
result += toString(accessibilityActions[i]);
824+
if (i < accessibilityActions.size() - 1) {
825+
result += ", ";
826+
}
827+
}
828+
result += "]";
829+
return result;
830+
}
831+
832+
inline std::string toString(const AccessibilityState& accessibilityState) {
833+
return "{disabled:" + toString(accessibilityState.disabled) +
834+
",selected:" + toString(accessibilityState.selected) +
835+
",checked:" + toString(accessibilityState.checked) +
836+
",busy:" + toString(accessibilityState.busy) +
837+
",expanded:" + toString(accessibilityState.expanded) + "}";
838+
}
839+
#endif
840+
785841
} // namespace facebook::react

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,7 @@ inline void fromRawValue(
848848
react_native_expect(false);
849849
}
850850

851-
inline std::string toString(const PointerEventsMode& value) {
851+
inline std::string toString(PointerEventsMode value) {
852852
switch (value) {
853853
case PointerEventsMode::Auto:
854854
return "auto";

packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp

Lines changed: 3 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -618,21 +618,7 @@ folly::dynamic HostPlatformViewProps::getDiffProps(
618618
}
619619

620620
if (pointerEvents != oldProps->pointerEvents) {
621-
std::string value;
622-
switch (pointerEvents) {
623-
case PointerEventsMode::BoxOnly:
624-
result["pointerEvents"] = "box-only";
625-
break;
626-
case PointerEventsMode::BoxNone:
627-
result["pointerEvents"] = "box-none";
628-
break;
629-
case PointerEventsMode::None:
630-
result["pointerEvents"] = "none";
631-
break;
632-
default:
633-
result["pointerEvents"] = "auto";
634-
break;
635-
}
621+
result["pointerEvents"] = toString(pointerEvents);
636622
}
637623

638624
if (hitSlop != oldProps->hitSlop) {
@@ -917,17 +903,7 @@ folly::dynamic HostPlatformViewProps::getDiffProps(
917903
}
918904

919905
if (accessibilityLiveRegion != oldProps->accessibilityLiveRegion) {
920-
switch (accessibilityLiveRegion) {
921-
case AccessibilityLiveRegion::Assertive:
922-
result["accessibilityLiveRegion"] = "assertive";
923-
break;
924-
case AccessibilityLiveRegion::Polite:
925-
result["accessibilityLiveRegion"] = "polite";
926-
break;
927-
case AccessibilityLiveRegion::None:
928-
result["accessibilityLiveRegion"] = "none";
929-
break;
930-
}
906+
result["accessibilityLiveRegion"] = toString(accessibilityLiveRegion);
931907
}
932908

933909
if (accessibilityHint != oldProps->accessibilityHint) {
@@ -1003,20 +979,7 @@ folly::dynamic HostPlatformViewProps::getDiffProps(
1003979
}
1004980

1005981
if (importantForAccessibility != oldProps->importantForAccessibility) {
1006-
switch (importantForAccessibility) {
1007-
case ImportantForAccessibility::Auto:
1008-
result["importantForAccessibility"] = "auto";
1009-
break;
1010-
case ImportantForAccessibility::Yes:
1011-
result["importantForAccessibility"] = "yes";
1012-
break;
1013-
case ImportantForAccessibility::No:
1014-
result["importantForAccessibility"] = "no";
1015-
break;
1016-
case ImportantForAccessibility::NoHideDescendants:
1017-
result["importantForAccessibility"] = "noHideDescendants";
1018-
break;
1019-
}
982+
result["importantForAccessibility"] = toString(importantForAccessibility);
1020983
}
1021984

1022985
return result;

0 commit comments

Comments
 (0)