From 5ee8202b2634cfba3527a4da7f30d042fa5699a6 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Mon, 9 Dec 2019 06:39:28 -0800 Subject: [PATCH] Add missing accessibilityTraits in Fabric Summary: `accessibilityTraits` was missing, this diff adds it. Also there is a name mis match, in javascript it is called `accessibilityRole`. Changelog: [Internal] Reviewed By: JoshuaGross Differential Revision: D18857668 fbshipit-source-id: 10656e8fb4e8c1d771a72c7f354b845e41cfc313 --- .../ComponentViews/View/RCTViewComponentView.mm | 5 +++++ .../view/accessibility/AccessibilityProps.cpp | 4 ++++ .../accessibility/accessibilityPropsConversions.h | 13 +++++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index 5e53470f189..c0d5eec27e1 100644 --- a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -229,6 +229,11 @@ using namespace facebook::react; self.accessibilityElement.accessibilityElementsHidden = newViewProps.accessibilityElementsHidden; } + if (oldViewProps.accessibilityTraits != newViewProps.accessibilityTraits) { + self.accessibilityElement.accessibilityTraits = + RCTUIAccessibilityTraitsFromAccessibilityTraits(newViewProps.accessibilityTraits); + } + // `accessibilityIgnoresInvertColors` if (oldViewProps.accessibilityIgnoresInvertColors != newViewProps.accessibilityIgnoresInvertColors) { #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */ diff --git a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp index 71c44e1f191..c7897a3683d 100644 --- a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp +++ b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.cpp @@ -20,6 +20,10 @@ AccessibilityProps::AccessibilityProps( RawProps const &rawProps) : accessible( convertRawProp(rawProps, "accessible", sourceProps.accessible)), + accessibilityTraits(convertRawProp( + rawProps, + "accessibilityRole", + sourceProps.accessibilityTraits)), accessibilityLabel(convertRawProp( rawProps, "accessibilityLabel", diff --git a/ReactCommon/fabric/components/view/accessibility/accessibilityPropsConversions.h b/ReactCommon/fabric/components/view/accessibility/accessibilityPropsConversions.h index cde43040f6a..a6b6b4e919d 100644 --- a/ReactCommon/fabric/components/view/accessibility/accessibilityPropsConversions.h +++ b/ReactCommon/fabric/components/view/accessibility/accessibilityPropsConversions.h @@ -38,7 +38,7 @@ inline void fromString(const std::string &string, AccessibilityTraits &result) { result = AccessibilityTraits::PlaysSound; return; } - if (string == "keyboardkey") { + if (string == "keyboardkey" || string == "key") { result = AccessibilityTraits::KeyboardKey; return; } @@ -78,7 +78,16 @@ inline void fromString(const std::string &string, AccessibilityTraits &result) { result = AccessibilityTraits::Header; return; } - abort(); + if (string == "imagebutton") { + result = AccessibilityTraits::Image | AccessibilityTraits::Button; + return; + } + if (string == "summary") { + result = AccessibilityTraits::SummaryElement; + return; + } + + result = AccessibilityTraits::None; } inline void fromRawValue(const RawValue &value, AccessibilityTraits &result) {