Dedupe Accessibility enum string conversions (#53550)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53550

Noticed some duplication between `getDiffProps` and `accessibilityPropsConversion`

Changelog: [Internal]

Reviewed By: lenaic, rshest

Differential Revision: D81435037

fbshipit-source-id: b2701f1aec5e647c165a0212f6180edba90fd9f9
This commit is contained in:
Pieter De Baets
2025-09-01 08:38:27 -07:00
committed by Facebook GitHub Bot
parent e64dce582a
commit 46278e30e3
4 changed files with 62 additions and 101 deletions
@@ -12,8 +12,6 @@
#include <string>
#include <vector>
#include <react/renderer/debug/DebugStringConvertible.h>
namespace facebook::react {
enum class AccessibilityTraits : uint32_t {
@@ -55,27 +53,6 @@ struct AccessibilityAction {
std::optional<std::string> label{};
};
inline std::string toString(const AccessibilityAction& accessibilityAction) {
std::string result = accessibilityAction.name;
if (accessibilityAction.label.has_value()) {
result += ": '" + accessibilityAction.label.value() + "'";
}
return result;
}
inline std::string toString(
std::vector<AccessibilityAction> accessibilityActions) {
std::string result = "[";
for (size_t i = 0; i < accessibilityActions.size(); i++) {
result += toString(accessibilityActions[i]);
if (i < accessibilityActions.size() - 1) {
result += ", ";
}
}
result += "]";
return result;
}
inline static bool operator==(
const AccessibilityAction& lhs,
const AccessibilityAction& rhs) {
@@ -110,29 +87,6 @@ constexpr bool operator!=(
return !(rhs == lhs);
}
#if RN_DEBUG_STRING_CONVERTIBLE
inline std::string toString(AccessibilityState::CheckedState state) {
switch (state) {
case AccessibilityState::Unchecked:
return "Unchecked";
case AccessibilityState::Checked:
return "Checked";
case AccessibilityState::Mixed:
return "Mixed";
case AccessibilityState::None:
return "None";
}
}
inline std::string toString(const AccessibilityState& accessibilityState) {
return "{disabled:" + toString(accessibilityState.disabled) +
",selected:" + toString(accessibilityState.selected) +
",checked:" + toString(accessibilityState.checked) +
",busy:" + toString(accessibilityState.busy) +
",expanded:" + toString(accessibilityState.expanded) + "}";
}
#endif
struct AccessibilityLabelledBy {
std::vector<std::string> value{};
};
@@ -182,19 +136,7 @@ enum class AccessibilityLiveRegion : uint8_t {
Assertive,
};
inline std::string toString(
const AccessibilityLiveRegion& accessibilityLiveRegion) {
switch (accessibilityLiveRegion) {
case AccessibilityLiveRegion::None:
return "none";
case AccessibilityLiveRegion::Polite:
return "polite";
case AccessibilityLiveRegion::Assertive:
return "assertive";
}
}
enum class AccessibilityRole {
enum class AccessibilityRole : uint8_t {
None,
Button,
Dropdownlist,
@@ -237,7 +179,7 @@ enum class AccessibilityRole {
Iconmenu,
};
enum class Role {
enum class Role : uint8_t {
Alert,
Alertdialog,
Application,
@@ -14,6 +14,7 @@
#include <react/renderer/components/view/AccessibilityPrimitives.h>
#include <react/renderer/core/PropsParserContext.h>
#include <react/renderer/core/propsConversions.h>
#include <react/renderer/debug/DebugStringConvertible.h>
#include <unordered_map>
@@ -782,4 +783,59 @@ inline void fromRawValue(
result = Role::None;
}
inline std::string toString(AccessibilityLiveRegion accessibilityLiveRegion) {
switch (accessibilityLiveRegion) {
case AccessibilityLiveRegion::None:
return "none";
case AccessibilityLiveRegion::Polite:
return "polite";
case AccessibilityLiveRegion::Assertive:
return "assertive";
}
}
#if RN_DEBUG_STRING_CONVERTIBLE
inline std::string toString(AccessibilityState::CheckedState state) {
switch (state) {
case AccessibilityState::Unchecked:
return "Unchecked";
case AccessibilityState::Checked:
return "Checked";
case AccessibilityState::Mixed:
return "Mixed";
case AccessibilityState::None:
return "None";
}
}
inline std::string toString(const AccessibilityAction& accessibilityAction) {
std::string result = accessibilityAction.name;
if (accessibilityAction.label.has_value()) {
result += ": '" + accessibilityAction.label.value() + "'";
}
return result;
}
inline std::string toString(
std::vector<AccessibilityAction> accessibilityActions) {
std::string result = "[";
for (size_t i = 0; i < accessibilityActions.size(); i++) {
result += toString(accessibilityActions[i]);
if (i < accessibilityActions.size() - 1) {
result += ", ";
}
}
result += "]";
return result;
}
inline std::string toString(const AccessibilityState& accessibilityState) {
return "{disabled:" + toString(accessibilityState.disabled) +
",selected:" + toString(accessibilityState.selected) +
",checked:" + toString(accessibilityState.checked) +
",busy:" + toString(accessibilityState.busy) +
",expanded:" + toString(accessibilityState.expanded) + "}";
}
#endif
} // namespace facebook::react
@@ -848,7 +848,7 @@ inline void fromRawValue(
react_native_expect(false);
}
inline std::string toString(const PointerEventsMode& value) {
inline std::string toString(PointerEventsMode value) {
switch (value) {
case PointerEventsMode::Auto:
return "auto";
@@ -618,21 +618,7 @@ folly::dynamic HostPlatformViewProps::getDiffProps(
}
if (pointerEvents != oldProps->pointerEvents) {
std::string value;
switch (pointerEvents) {
case PointerEventsMode::BoxOnly:
result["pointerEvents"] = "box-only";
break;
case PointerEventsMode::BoxNone:
result["pointerEvents"] = "box-none";
break;
case PointerEventsMode::None:
result["pointerEvents"] = "none";
break;
default:
result["pointerEvents"] = "auto";
break;
}
result["pointerEvents"] = toString(pointerEvents);
}
if (hitSlop != oldProps->hitSlop) {
@@ -917,17 +903,7 @@ folly::dynamic HostPlatformViewProps::getDiffProps(
}
if (accessibilityLiveRegion != oldProps->accessibilityLiveRegion) {
switch (accessibilityLiveRegion) {
case AccessibilityLiveRegion::Assertive:
result["accessibilityLiveRegion"] = "assertive";
break;
case AccessibilityLiveRegion::Polite:
result["accessibilityLiveRegion"] = "polite";
break;
case AccessibilityLiveRegion::None:
result["accessibilityLiveRegion"] = "none";
break;
}
result["accessibilityLiveRegion"] = toString(accessibilityLiveRegion);
}
if (accessibilityHint != oldProps->accessibilityHint) {
@@ -1003,20 +979,7 @@ folly::dynamic HostPlatformViewProps::getDiffProps(
}
if (importantForAccessibility != oldProps->importantForAccessibility) {
switch (importantForAccessibility) {
case ImportantForAccessibility::Auto:
result["importantForAccessibility"] = "auto";
break;
case ImportantForAccessibility::Yes:
result["importantForAccessibility"] = "yes";
break;
case ImportantForAccessibility::No:
result["importantForAccessibility"] = "no";
break;
case ImportantForAccessibility::NoHideDescendants:
result["importantForAccessibility"] = "noHideDescendants";
break;
}
result["importantForAccessibility"] = toString(importantForAccessibility);
}
return result;