Skip to content

Commit 7e4b122

Browse files
committed
Review Changes
1 parent d8ba035 commit 7e4b122

File tree

9 files changed

+39
-20
lines changed

9 files changed

+39
-20
lines changed

vnext/Microsoft.ReactNative/Fabric/Composition/CompositionAnnotationProvider.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ HRESULT __stdcall CompositionAnnotationProvider::get_AnnotationTypeId(int *retVa
2626
if (props == nullptr)
2727
return UIA_E_ELEMENTNOTAVAILABLE;
2828

29-
if (!props->accessibilityAnnotation.typeID.has_value() || props->accessibilityAnnotation.typeID.value().empty()) {
29+
if (props->accessibilityAnnotation.value().typeID.empty()) {
3030
return E_FAIL;
3131
}
32-
*retVal = static_cast<int>(GetAnnotationTypeId(props->accessibilityAnnotation.typeID.value()));
32+
*retVal = static_cast<int>(GetAnnotationTypeId(props->accessibilityAnnotation.value().typeID));
3333
return S_OK;
3434
}
3535
HRESULT __stdcall CompositionAnnotationProvider::get_AnnotationTypeName(BSTR *retVal) {
@@ -45,10 +45,10 @@ HRESULT __stdcall CompositionAnnotationProvider::get_AnnotationTypeName(BSTR *re
4545
if (props == nullptr)
4646
return UIA_E_ELEMENTNOTAVAILABLE;
4747

48-
if (!props->accessibilityAnnotation.typeName.has_value() || props->accessibilityAnnotation.typeName.value().empty()) {
48+
if (props->accessibilityAnnotation.value().typeName.empty()) {
4949
return E_FAIL;
5050
}
51-
auto typeName = ::Microsoft::Common::Unicode::Utf8ToUtf16(props->accessibilityAnnotation.typeName.value());
51+
auto typeName = ::Microsoft::Common::Unicode::Utf8ToUtf16(props->accessibilityAnnotation.value().typeName);
5252
*retVal = SysAllocString(typeName.c_str());
5353
return S_OK;
5454
}
@@ -65,10 +65,10 @@ HRESULT __stdcall CompositionAnnotationProvider::get_Author(BSTR *retVal) {
6565
if (props == nullptr)
6666
return UIA_E_ELEMENTNOTAVAILABLE;
6767

68-
if (!props->accessibilityAnnotation.author.has_value() || props->accessibilityAnnotation.author.value().empty()) {
68+
if (props->accessibilityAnnotation.value().author.empty()) {
6969
return E_FAIL;
7070
}
71-
auto author = ::Microsoft::Common::Unicode::Utf8ToUtf16(props->accessibilityAnnotation.author.value());
71+
auto author = ::Microsoft::Common::Unicode::Utf8ToUtf16(props->accessibilityAnnotation.value().author);
7272
*retVal = SysAllocString(author.c_str());
7373
return S_OK;
7474
}
@@ -85,14 +85,16 @@ HRESULT __stdcall CompositionAnnotationProvider::get_DateTime(BSTR *retVal) {
8585
if (props == nullptr)
8686
return UIA_E_ELEMENTNOTAVAILABLE;
8787

88-
if (!props->accessibilityAnnotation.dateTime.has_value() || props->accessibilityAnnotation.author.value().empty()) {
88+
if (props->accessibilityAnnotation.value().dateTime.empty()) {
8989
return E_FAIL;
9090
}
91-
auto dateTime = ::Microsoft::Common::Unicode::Utf8ToUtf16(props->accessibilityAnnotation.dateTime.value());
91+
auto dateTime = ::Microsoft::Common::Unicode::Utf8ToUtf16(props->accessibilityAnnotation.value().dateTime);
9292
*retVal = SysAllocString(dateTime.c_str());
9393
return S_OK;
9494
}
95+
9596
HRESULT __stdcall CompositionAnnotationProvider::get_Target(IRawElementProviderSimple **retVal) {
97+
// no-opt
9698
return E_NOTIMPL;
9799
}
98100
} // namespace winrt::Microsoft::ReactNative::implementation

vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,8 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTE
290290
m_textProvider.as<IUnknown>().copy_to(pRetVal);
291291
}
292292
if (patternId == UIA_AnnotationPatternId &&
293-
strongView.try_as<winrt::Microsoft::ReactNative::Composition::implementation::ViewComponentView>()) {
293+
strongView.try_as<winrt::Microsoft::ReactNative::Composition::implementation::ViewComponentView>() &&
294+
accessibilityAnnotationHasValue(props->accessibilityAnnotation)) {
294295
m_annotationProvider.as<IUnknown>().copy_to(pRetVal);
295296
}
296297

vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,13 @@ long GetAnnotationTypeId(const std::string &annotationType) noexcept {
240240
return AnnotationType_Unknown;
241241
}
242242

243+
bool accessibilityAnnotationHasValue(
244+
const std::optional<facebook::react::AccessibilityAnnotation> &annotation) noexcept {
245+
return annotation.has_value() &&
246+
!(annotation.value().typeID.empty() && annotation.value().typeName.empty() && annotation.value().author.empty() &&
247+
annotation.value().dateTime.empty() && annotation.value().target.empty());
248+
}
249+
243250
void DispatchAccessibilityAction(::Microsoft::ReactNative::ReactTaggedView &view, const std::string &action) noexcept {
244251
auto strongView = view.view();
245252

vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ long GetLiveSetting(const std::string &liveRegion) noexcept;
3535

3636
long GetAnnotationTypeId(const std::string &annotationType) noexcept;
3737

38+
bool accessibilityAnnotationHasValue(
39+
const std::optional<facebook::react::AccessibilityAnnotation> &annotation) noexcept;
40+
3841
void DispatchAccessibilityAction(::Microsoft::ReactNative::ReactTaggedView &view, const std::string &action) noexcept;
3942

4043
ExpandCollapseState GetExpandCollapseState(const bool &expanded) noexcept;

vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/CompositionAccessibilityProps.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010

1111
namespace facebook::react {
1212
struct AccessibilityAnnotation {
13-
std::optional<std::string> typeID{};
14-
std::optional<std::string> typeName{};
15-
std::optional<std::string> author{};
16-
std::optional<std::string> dateTime{};
17-
std::optional<std::string> target{};
13+
std::string typeID{};
14+
std::string typeName{};
15+
std::string author{};
16+
std::string dateTime{};
17+
std::string target{};
1818
};
1919

2020
constexpr bool operator==(const AccessibilityAnnotation &lhs, const AccessibilityAnnotation &rhs) {

vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class HostPlatformViewProps : public BaseViewProps {
2929
int accessibilitySetSize{0};
3030
std::string accessibilityLiveRegion{"none"};
3131
int accessibilityLevel{0};
32-
AccessibilityAnnotation accessibilityAnnotation{};
32+
std::optional<AccessibilityAnnotation> accessibilityAnnotation{};
3333

3434
// std::optional<std::string> overflowAnchor{};
3535
std::optional<std::string> tooltip{};

vnext/src-win/Libraries/Components/View/View.windows.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ const View: component(
6767
accessibilityLabel,
6868
accessibilityLabelledBy,
6969
accessibilityLevel, // Windows
70+
accessibilityAnnotation, //Windows
7071
accessibilityLiveRegion,
7172
accessibilityPosInSet, // Windows
7273
accessibilitySetSize, // Windows
@@ -250,6 +251,7 @@ const View: component(
250251
}
251252
accessibilityLabel={ariaLabel ?? accessibilityLabel}
252253
accessibilityLevel={ariaLevel ?? accessibilityLevel}
254+
accessibilityAnnotation={accessibilityAnnotation}
253255
accessibilityPosInSet={ariaPosinset ?? accessibilityPosInSet}
254256
accessibilitySetSize={ariaSetsize ?? accessibilitySetSize}
255257
focusable={_focusable}
@@ -303,6 +305,7 @@ const View: component(
303305
}
304306
accessibilityLabel={ariaLabel ?? accessibilityLabel}
305307
accessibilityLevel={ariaLevel ?? accessibilityLevel}
308+
accessibilityAnnotation={accessibilityAnnotation}
306309
accessibilityPosInSet={ariaPosinset ?? accessibilityPosInSet}
307310
accessibilitySetSize={ariaSetsize ?? accessibilitySetSize}
308311
focusable={_focusable}

vnext/src-win/Libraries/Components/View/ViewAccessibility.d.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -288,11 +288,11 @@ export type AnnotationType =
288288

289289
// [Windows]
290290
export type AccessibilityAnnotationInfo = Readonly<{
291-
typeID: AnnotationType | undefined;
292-
typeName?: string | undefined;
293-
author?: string | undefined;
294-
dateTime?: string | undefined;
295-
target?: string | undefined;
291+
typeID: AnnotationType;
292+
typeName?: string;
293+
author?: string;
294+
dateTime?: string;
295+
target?: string;
296296
}>;
297297
export interface AccessibilityPropsWindows {
298298
/**

vnext/src-win/Libraries/Components/View/ViewPropTypes.windows.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import type {
2828
AccessibilityRole,
2929
AccessibilityState,
3030
AccessibilityValue,
31+
AccessibilityAnnotationInfo, // [Windows]
3132
Role,
3233
} from './ViewAccessibility';
3334
import type {Node} from 'react';
@@ -529,6 +530,8 @@ type WindowsViewProps = $ReadOnly<{|
529530
onBlur?: ?(event: FocusEvent) => mixed,
530531
onMouseLeave?: ?(event: MouseEvent) => mixed,
531532
onMouseEnter?: ?(event: MouseEvent) => mixed,
533+
534+
accessibilityAnnotation?: ?AccessibilityAnnotationInfo,
532535
|}>;
533536
// Windows]
534537

0 commit comments

Comments
 (0)