Add importantForAccessibility to AccessibilityProps and wire with FormsStakingContext

Summary:
Changelog:
[iOS][Added] - Add `importantForAccessibility` to `AccessibilityProps`

Reviewed By: shergin

Differential Revision: D22490327

fbshipit-source-id: aec7ff64ea6ddfe29bad085b87d09906fa8ee029
This commit is contained in:
Jiayan Zhuang
2020-07-14 09:29:13 -07:00
committed by Facebook GitHub Bot
parent e5a8f4270e
commit fd660fd0c5
5 changed files with 53 additions and 1 deletions
@@ -48,7 +48,8 @@ void ViewShadowNode::initialize() noexcept {
viewProps.yogaStyle.positionType() == YGPositionTypeAbsolute) ||
viewProps.yogaStyle.display() == YGDisplayNone ||
viewProps.getClipsContentToBounds() ||
isColorMeaningful(viewProps.shadowColor);
isColorMeaningful(viewProps.shadowColor) ||
viewProps.importantForAccessibility != ImportantForAccessibility::Auto;
bool formsView = isColorMeaningful(viewProps.backgroundColor) ||
isColorMeaningful(viewProps.foregroundColor) ||
@@ -61,5 +61,12 @@ constexpr bool operator!=(
return !(rhs == lhs);
}
enum class ImportantForAccessibility {
Auto,
Yes,
No,
NoHideDescendants,
};
} // namespace react
} // namespace facebook
@@ -83,6 +83,11 @@ AccessibilityProps::AccessibilityProps(
"onAccessibilityAction",
sourceProps.onAccessibilityAction,
{})),
importantForAccessibility(convertRawProp(
rawProps,
"importantForAccessibility",
sourceProps.importantForAccessibility,
ImportantForAccessibility::Auto)),
testId(convertRawProp(rawProps, "testId", sourceProps.testId, "")) {}
#pragma mark - DebugStringConvertible
@@ -37,6 +37,8 @@ class AccessibilityProps {
bool onAccessibilityMagicTap{};
bool onAccessibilityEscape{};
bool onAccessibilityAction{};
ImportantForAccessibility importantForAccessibility{
ImportantForAccessibility::Auto};
std::string testId{""};
#pragma mark - DebugStringConvertible
@@ -122,5 +122,42 @@ inline void fromRawValue(const RawValue &value, AccessibilityState &result) {
}
}
inline std::string toString(
const ImportantForAccessibility &importantForAccessibility) {
switch (importantForAccessibility) {
case ImportantForAccessibility::Auto:
return "auto";
case ImportantForAccessibility::Yes:
return "yes";
case ImportantForAccessibility::No:
return "no";
case ImportantForAccessibility::NoHideDescendants:
return "no-hide-descendants";
}
}
inline void fromRawValue(
const RawValue &value,
ImportantForAccessibility &result) {
auto string = (std::string)value;
if (string == "auto") {
result = ImportantForAccessibility::Auto;
return;
}
if (string == "yes") {
result = ImportantForAccessibility::Yes;
return;
}
if (string == "no") {
result = ImportantForAccessibility::No;
return;
}
if (string == "no-hide-descendants") {
result = ImportantForAccessibility::NoHideDescendants;
return;
}
abort();
}
} // namespace react
} // namespace facebook