From 8bd428f7a156e80247a0ddc2c1d9a2892d97db64 Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Tue, 20 Aug 2024 16:54:59 -0700 Subject: [PATCH 1/7] Add Tests --- .../Button/ButtonExample.windows.js | 1 + .../Switch/SwitchExample.windows.js | 3 + .../ActivityIndicatorExample.windows.js | 1 + .../js/examples/Image/ImageExample.windows.js | 2 + .../Pressable/PressableExample.windows.js | 6 +- .../js/examples/Text/TextExample.windows.js | 3 +- .../TextInput/TextInputExample.windows.js | 3 + .../Touchable/TouchableExample.windows.js | 6 +- .../js/examples/View/ViewExample.windows.js | 1 + .../RNTesterApp-Fabric/RNTesterApp-Fabric.cpp | 23 +++ packages/playground/Samples/simple.tsx | 25 ++- .../packages.lock.json | 180 ++---------------- .../CompositionDynamicAutomationProvider.cpp | 5 + .../CompositionViewComponentView.cpp | 3 + .../Fabric/Composition/UiaHelpers.cpp | 12 ++ .../Fabric/Composition/UiaHelpers.h | 1 + .../components/view/HostPlatformViewProps.cpp | 7 +- .../components/view/HostPlatformViewProps.h | 1 + .../Microsoft.ReactNative/packages.lock.json | 19 +- 19 files changed, 111 insertions(+), 191 deletions(-) diff --git a/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js b/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js index fcf7662f5a0..04c9672e011 100644 --- a/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js @@ -221,6 +221,7 @@ exports.examples = [ accessibilityHint="Submit Button" accessibilityPosInSet={1} accessibilitySetSize={1} + accessibilityLiveRegion='assertive' /> ); }} diff --git a/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js b/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js index f1409281ab9..7503b9aeb22 100644 --- a/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js @@ -303,6 +303,7 @@ class AccessibilitySwitchExample extends React.Component< accessibilityHint="Switch" accessibilityPosInSet={2} accessibilitySetSize={4} + accessibilityLiveRegion='none' // focusable={false} onValueChange={value => this.setState({noFocusableValue: value})} value={this.state.noFocusableValue} @@ -314,6 +315,7 @@ class AccessibilitySwitchExample extends React.Component< accessibilityHint="Switch" accessibilityPosInSet={3} accessibilitySetSize={4} + accessibilityLiveRegion='polite' // accessible={false} onValueChange={value => this.setState({noAccessibleValue: value})} value={this.state.noAccessibleValue} @@ -323,6 +325,7 @@ class AccessibilitySwitchExample extends React.Component< accessibilityHint="Switch" accessibilityPosInSet={4} accessibilitySetSize={4} + accessibilityLiveRegion='assertive' // focusable={false} // accessible={false} onValueChange={value => this.setState({noFocusValue: value})} diff --git a/packages/@react-native-windows/tester/src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js index 7f17782abe3..81d732dabb1 100644 --- a/packages/@react-native-windows/tester/src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js @@ -79,6 +79,7 @@ exports.examples = [ accessibilityLabel="Wait for content to load!" accessibilityPosInSet={1} accessibilitySetSize={1} + accessibilityLiveRegion='polite' accessible /> ); diff --git a/packages/@react-native-windows/tester/src/js/examples/Image/ImageExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Image/ImageExample.windows.js index e6dc8961610..83b02651d64 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Image/ImageExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Image/ImageExample.windows.js @@ -1584,6 +1584,7 @@ exports.examples = [ accessible accessibilityPosInSet={1} accessibilitySetSize={2} + accessibilityLiveRegion='polite' /> ); diff --git a/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js index 5308d63f22a..a9fe6c6aa02 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js @@ -1046,15 +1046,15 @@ const examples = [ return ( {}} accessibilityPosInSet={1} accessibilitySetSize={3}> + onPress={() => {}} accessibilityPosInSet={1} accessibilitySetSize={3} accessibilityLiveRegion='none'> Pressable 1 of 3 {}} accessibilityPosInSet={2} accessibilitySetSize={3}> + onPress={() => {}} accessibilityPosInSet={2} accessibilitySetSize={3} accessibilityLiveRegion='polite'> Pressable 2 of 3 {}} accessibilityPosInSet={3} accessibilitySetSize={3}> + onPress={() => {}} accessibilityPosInSet={3} accessibilitySetSize={3} accessibilityLiveRegion='assertive'> Pressable 3 of 3 diff --git a/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js index 101f09cb81c..40518aa696f 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js @@ -1552,7 +1552,8 @@ const examples = [ accessibilityLabel="This text has customized accessibility" accessibilityHint="Text" accessibilityPosInSet={1} - accessibilitySetSize={1}> + accessibilitySetSize={1} + accessibilityLiveRegion='polite'> This text has customized accessibility. diff --git a/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js index 4571755fd07..ad23651b1e1 100644 --- a/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js @@ -810,18 +810,21 @@ const examples: Array = [ placeholder='TextInput 1 in Set of 3' accessibilityPosInSet={1} accessibilitySetSize={3} + accessibilityLiveRegion='none' /> ); diff --git a/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js index 28951e896db..b913f3080a4 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js @@ -581,15 +581,15 @@ function TouchableOnFocus>() { function TouchableSet>() { return ( - {}} accessibilityPosInSet={1} accessibilitySetSize={3}> + {}} accessibilityPosInSet={1} accessibilitySetSize={3} accessibilityLiveRegion='none'> Touchable Highlight (Control 1 in Set of 3) - {}} accessibilityPosInSet={2} accessibilitySetSize={3}> + {}} accessibilityPosInSet={2} accessibilitySetSize={3} accessibilityLiveRegion='polite'> Touchable Opacity (Control 2 in Set of 3) - {}} accessibilityPosInSet={3} accessibilitySetSize={3}> + {}} accessibilityPosInSet={3} accessibilitySetSize={3} accessibilityLiveRegion='assertive'> TouchableWithoutFeedback (Control 3 in Set of 3) diff --git a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js index bd571201f36..de03b1d461c 100644 --- a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js @@ -479,6 +479,7 @@ class AccessibilityExample extends React.Component< ]} accessibilityPosInSet={1} accessibilitySetSize={1} + accessibilityLiveRegion='polite' testID="accessibility" accessible focusable diff --git a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/RNTesterApp-Fabric.cpp b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/RNTesterApp-Fabric.cpp index d474ae36081..eaf5e8a9058 100644 --- a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/RNTesterApp-Fabric.cpp +++ b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/RNTesterApp-Fabric.cpp @@ -247,6 +247,26 @@ void InsertBooleanValueIfNotDefault( } } +void InsertLiveSettingValueIfNotDefault( + const winrt::Windows::Data::Json::JsonObject &obj, + winrt::hstring name, + LiveSetting value, + LiveSetting defaultValue = LiveSetting::Off) { + if (value != defaultValue) { + switch (value) { + case 0: + obj.Insert(name, winrt::Windows::Data::Json::JsonValue::CreateStringValue(L"Off")); + break; + case 1: + obj.Insert(name, winrt::Windows::Data::Json::JsonValue::CreateStringValue(L"Polite")); + break; + case 2: + obj.Insert(name, winrt::Windows::Data::Json::JsonValue::CreateStringValue(L"Assertive")); + break; + } + } +} + void InsertSizeValue( const winrt::Windows::Data::Json::JsonObject &obj, winrt::hstring name, @@ -304,6 +324,7 @@ winrt::Windows::Data::Json::JsonObject DumpUIATreeRecurse( BSTR name; int positionInSet; int sizeOfSet; + LiveSetting liveSetting; pTarget->get_CurrentAutomationId(&automationId); pTarget->get_CurrentControlType(&controlType); @@ -317,6 +338,7 @@ winrt::Windows::Data::Json::JsonObject DumpUIATreeRecurse( if (SUCCEEDED(hr) && pTarget4) { pTarget4->get_CurrentPositionInSet(&positionInSet); pTarget4->get_CurrentSizeOfSet(&sizeOfSet); + pTarget4->get_CurrentLiveSetting(&liveSetting); pTarget4->Release(); } result.Insert(L"AutomationId", winrt::Windows::Data::Json::JsonValue::CreateStringValue(automationId)); @@ -329,6 +351,7 @@ winrt::Windows::Data::Json::JsonObject DumpUIATreeRecurse( InsertStringValueIfNotEmpty(result, L"Name", name); InsertIntValueIfNotDefault(result, L"PositionInSet", positionInSet); InsertIntValueIfNotDefault(result, L"SizeofSet", sizeOfSet); + InsertLiveSettingValueIfNotDefault(result, L"LiveSetting", liveSetting); IUIAutomationElement *pChild; IUIAutomationElement *pSibling; diff --git a/packages/playground/Samples/simple.tsx b/packages/playground/Samples/simple.tsx index 8304290492f..763bd4c0df2 100644 --- a/packages/playground/Samples/simple.tsx +++ b/packages/playground/Samples/simple.tsx @@ -4,15 +4,30 @@ * @format */ import React from 'react'; -import {AppRegistry, View} from 'react-native'; +import {AppRegistry, View, Text} from 'react-native'; export default class Bootstrap extends React.Component { render() { return ( - - + + + Polite Accessibility + + + None Accessibility + + + Assertive Accessibility + ); } diff --git a/packages/playground/windows/playground-composition.Package/packages.lock.json b/packages/playground/windows/playground-composition.Package/packages.lock.json index b10fcd50f7e..c22ea4fc107 100644 --- a/packages/playground/windows/playground-composition.Package/packages.lock.json +++ b/packages/playground/windows/playground-composition.Package/packages.lock.json @@ -2,58 +2,8 @@ "version": 1, "dependencies": { "UAP,Version=v10.0.17763": { - "boost": { - "type": "Transitive", - "resolved": "1.83.0", - "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.JavaScript.Hermes": { - "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.22621.756", - "contentHash": "7ZL2sFSioYm1Ry067Kw1hg0SCcW5kuVezC2SwjGbcPE61Nn+gTbH86T73G3LcEOVj0S3IZzNuE/29gZvOLS7VA==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.5.240227000", - "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - }, "common": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )" - } + "type": "Project" }, "fmt": { "type": "Project" @@ -61,7 +11,6 @@ "folly": { "type": "Project", "dependencies": { - "boost": "[1.83.0, )", "fmt": "[1.0.0, )" } }, @@ -70,135 +19,28 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", - "Microsoft.SourceLink.GitHub": "[1.1.1, )", - "Microsoft.WindowsAppSDK": "[1.5.240227000, )", - "ReactCommon": "[1.0.0, )", - "boost": "[1.83.0, )" + "ReactCommon": "[1.0.0, )" } }, "playground-composition": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.1.23, )", - "Microsoft.ReactNative": "[1.0.0, )", - "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", - "Microsoft.WindowsAppSDK": "[1.5.240227000, )", - "boost": "[1.83.0, )" + "Microsoft.ReactNative": "[1.0.0, )" } }, "reactcommon": { "type": "Project", "dependencies": { - "Folly": "[1.0.0, )", - "boost": "[1.83.0, )" + "Folly": "[1.0.0, )" } } }, - "UAP,Version=v10.0.17763/win10-arm": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.5.240227000", - "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-arm-aot": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.5.240227000", - "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-arm64-aot": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.5.240227000", - "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-x64": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.5.240227000", - "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-x64-aot": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.5.240227000", - "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-x86": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.5.240227000", - "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-x86-aot": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.5.240227000", - "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - } + "UAP,Version=v10.0.17763/win10-arm": {}, + "UAP,Version=v10.0.17763/win10-arm-aot": {}, + "UAP,Version=v10.0.17763/win10-arm64-aot": {}, + "UAP,Version=v10.0.17763/win10-x64": {}, + "UAP,Version=v10.0.17763/win10-x64-aot": {}, + "UAP,Version=v10.0.17763/win10-x86": {}, + "UAP,Version=v10.0.17763/win10-x86-aot": {} } } \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp index cffc7ee7b7f..886e2cc2d75 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp @@ -323,6 +323,11 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPropertyValue(PROPERT pRetVal->lVal = props->accessibilitySetSize; break; } + case UIA_LiveSettingPropertyId: { + pRetVal->vt = VT_I4; + pRetVal->lVal = GetLiveSetting(props->accessibilityLiveRegion); + break; + } } return hr; diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp index 7a969d91da2..2bcebdaf376 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp @@ -1332,6 +1332,9 @@ void ComponentView::updateAccessibilityProps( winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty( m_uiaProvider, UIA_SizeOfSetPropertyId, oldViewProps.accessibilitySetSize, newViewProps.accessibilitySetSize); + + winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty( + m_uiaProvider, UIA_LiveSettingPropertyId, oldViewProps.accessibilityLiveRegion, newViewProps.accessibilityLiveRegion); } std::optional ComponentView::getAcccessiblityValue() noexcept { diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp index c2187cf114a..689b61588b3 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp @@ -162,4 +162,16 @@ void UpdateUiaProperty( spProviderSimple.get(), propId, CComVariant(oldValue.c_str()), CComVariant(newValue.c_str())); } +long GetLiveSetting(const std::string &liveRegion) noexcept { + if (liveRegion == "none"){ + return LiveSetting::Off; + }else if (liveRegion == "polite"){ + return LiveSetting::Polite; + }else if (liveRegion == "assertive"){ + return LiveSetting::Assertive; + } + //assert(false); // TO-DO: swap to a RedBox error + return LiveSetting::Off; +} + } // namespace winrt::Microsoft::ReactNative::implementation diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h b/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h index 2350b164bee..de62742644b 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h @@ -29,4 +29,5 @@ void UpdateUiaProperty( const std::string &oldValue, const std::string &newValue) noexcept; +long GetLiveSetting(const std::string &liveRegion) noexcept; } // namespace winrt::Microsoft::ReactNative::implementation diff --git a/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp b/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp index 6110bddceb8..01b14378353 100644 --- a/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp @@ -34,7 +34,11 @@ HostPlatformViewProps::HostPlatformViewProps( accessibilitySetSize( CoreFeatures::enablePropIteratorSetter ? sourceProps.accessibilitySetSize - : convertRawProp(context, rawProps, "accessibilitySetSize", sourceProps.accessibilitySetSize, 0)) {} + : convertRawProp(context, rawProps, "accessibilitySetSize", sourceProps.accessibilitySetSize, 0)), + accessibilityLiveRegion( + CoreFeatures::enablePropIteratorSetter + ? sourceProps.accessibilityLiveRegion + : convertRawProp(context, rawProps, "accessibilityLiveRegion", sourceProps.accessibilityLiveRegion, "none")) {} #define WINDOWS_VIEW_EVENT_CASE(eventType) \ case CONSTEXPR_RAW_PROPS_KEY_HASH("on" #eventType): { \ @@ -71,6 +75,7 @@ void HostPlatformViewProps::setProp( RAW_SET_PROP_SWITCH_CASE_BASIC(focusable); RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityPosInSet); RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilitySetSize); + RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityLiveRegion); RAW_SET_PROP_SWITCH_CASE_BASIC(keyDownEvents); RAW_SET_PROP_SWITCH_CASE_BASIC(keyUpEvents); } diff --git a/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h b/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h index 4ab0b547f43..b2fce99065b 100644 --- a/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +++ b/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h @@ -26,6 +26,7 @@ class HostPlatformViewProps : public BaseViewProps { bool focusable{false}; int accessibilityPosInSet{0}; int accessibilitySetSize{0}; + std::string accessibilityLiveRegion{"none"}; // std::optional overflowAnchor{}; // std::optional tooltip{}; diff --git a/vnext/Microsoft.ReactNative/packages.lock.json b/vnext/Microsoft.ReactNative/packages.lock.json index 1ef56f2aba0..f9bdebebf19 100644 --- a/vnext/Microsoft.ReactNative/packages.lock.json +++ b/vnext/Microsoft.ReactNative/packages.lock.json @@ -24,15 +24,6 @@ "Microsoft.SourceLink.Common": "1.1.1" } }, - "Microsoft.UI.Xaml": { - "type": "Direct", - "requested": "[2.8.0, )", - "resolved": "2.8.0", - "contentHash": "vxdHxTr63s5KVtNddMFpgvjBjUH50z7seq/5jLWmmSuf8poxg+sXrywkofUdE8ZstbpO9y3FL/IXXUcPYbeesA==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.1264.42" - } - }, "Microsoft.Windows.CppWinRT": { "type": "Direct", "requested": "[2.0.230706.1, )", @@ -48,6 +39,16 @@ "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" } }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" + }, "Microsoft.Windows.SDK.BuildTools": { "type": "Transitive", "resolved": "10.0.22621.756", From bc35875988667360b5e13319ba813e14fbd51720 Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Tue, 20 Aug 2024 17:10:25 -0700 Subject: [PATCH 2/7] Change files --- ...ative-windows-2f3ac2ef-b7c1-4ca2-b10d-ec0d29508646.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 change/react-native-windows-2f3ac2ef-b7c1-4ca2-b10d-ec0d29508646.json diff --git a/change/react-native-windows-2f3ac2ef-b7c1-4ca2-b10d-ec0d29508646.json b/change/react-native-windows-2f3ac2ef-b7c1-4ca2-b10d-ec0d29508646.json new file mode 100644 index 00000000000..f9f5099429c --- /dev/null +++ b/change/react-native-windows-2f3ac2ef-b7c1-4ca2-b10d-ec0d29508646.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Add Tests", + "packageName": "react-native-windows", + "email": "34109996+chiaramooney@users.noreply.github.com", + "dependentChangeType": "patch" +} From 2329f40f791e59695eae6aff7fbf9e1a98b63a14 Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:48:08 -0700 Subject: [PATCH 3/7] Fix Error --- .../AutomationChannel/packages.lock.json | 110 +++++++++++------- .../RNTesterApp-Fabric/RNTesterApp-Fabric.cpp | 2 +- packages/playground/Samples/simple.tsx | 25 +--- 3 files changed, 75 insertions(+), 62 deletions(-) diff --git a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json index 79233b0d618..5434d1bc638 100644 --- a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json +++ b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json @@ -2,21 +2,21 @@ "version": 1, "dependencies": { "native,Version=v0.0": { - "Microsoft.UI.Xaml": { - "type": "Direct", - "requested": "[2.8.0, )", - "resolved": "2.8.0", - "contentHash": "vxdHxTr63s5KVtNddMFpgvjBjUH50z7seq/5jLWmmSuf8poxg+sXrywkofUdE8ZstbpO9y3FL/IXXUcPYbeesA==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.1264.42" - } - }, "Microsoft.Windows.CppWinRT": { "type": "Direct", "requested": "[2.0.230706.1, )", "resolved": "2.0.230706.1", "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" }, + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.5.240227000, )", + "resolved": "1.5.240227000", + "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } + }, "boost": { "type": "Transitive", "resolved": "1.83.0", @@ -46,10 +46,10 @@ "Microsoft.SourceLink.Common": "1.1.1" } }, - "Microsoft.Web.WebView2": { + "Microsoft.Windows.SDK.BuildTools": { "type": "Transitive", - "resolved": "1.0.1264.42", - "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + "resolved": "10.0.22621.756", + "contentHash": "7ZL2sFSioYm1Ry067Kw1hg0SCcW5kuVezC2SwjGbcPE61Nn+gTbH86T73G3LcEOVj0S3IZzNuE/29gZvOLS7VA==" }, "common": { "type": "Project", @@ -74,7 +74,7 @@ "Folly": "[1.0.0, )", "Microsoft.JavaScript.Hermes": "[0.1.23, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", - "Microsoft.UI.Xaml": "[2.8.0, )", + "Microsoft.WindowsAppSDK": "[1.5.240227000, )", "ReactCommon": "[1.0.0, )", "boost": "[1.83.0, )" } @@ -88,52 +88,80 @@ } }, "native,Version=v0.0/win10-arm": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.1264.42", - "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.5.240227000, )", + "resolved": "1.5.240227000", + "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } } }, "native,Version=v0.0/win10-arm-aot": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.1264.42", - "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.5.240227000, )", + "resolved": "1.5.240227000", + "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } } }, "native,Version=v0.0/win10-arm64-aot": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.1264.42", - "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.5.240227000, )", + "resolved": "1.5.240227000", + "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } } }, "native,Version=v0.0/win10-x64": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.1264.42", - "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.5.240227000, )", + "resolved": "1.5.240227000", + "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } } }, "native,Version=v0.0/win10-x64-aot": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.1264.42", - "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.5.240227000, )", + "resolved": "1.5.240227000", + "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } } }, "native,Version=v0.0/win10-x86": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.1264.42", - "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.5.240227000, )", + "resolved": "1.5.240227000", + "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } } }, "native,Version=v0.0/win10-x86-aot": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.1264.42", - "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.5.240227000, )", + "resolved": "1.5.240227000", + "contentHash": "6rESOsREi8534J7IDpNfFYPvxQaSleXKt4A7ZYPeQyckNMQ0o1W0jZ420bJbEMz9Cw/S/8IbpPftLLZ9w/GTCQ==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } } } } diff --git a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/RNTesterApp-Fabric.cpp b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/RNTesterApp-Fabric.cpp index d2dccee98fd..06d084471ee 100644 --- a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/RNTesterApp-Fabric.cpp +++ b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/RNTesterApp-Fabric.cpp @@ -328,7 +328,7 @@ winrt::Windows::Data::Json::JsonObject DumpUIATreeRecurse( int sizeOfSet = 0; BSTR value; BOOL isReadOnly; - LiveSetting liveSetting; + LiveSetting liveSetting = LiveSetting::Off; pTarget->get_CurrentAutomationId(&automationId); pTarget->get_CurrentControlType(&controlType); diff --git a/packages/playground/Samples/simple.tsx b/packages/playground/Samples/simple.tsx index 763bd4c0df2..8304290492f 100644 --- a/packages/playground/Samples/simple.tsx +++ b/packages/playground/Samples/simple.tsx @@ -4,30 +4,15 @@ * @format */ import React from 'react'; -import {AppRegistry, View, Text} from 'react-native'; +import {AppRegistry, View} from 'react-native'; export default class Bootstrap extends React.Component { render() { return ( - - - Polite Accessibility - - - None Accessibility - - - Assertive Accessibility - + + ); } From 9ff293bc82541b9bf7fc7a47a807ac9393135373 Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Fri, 23 Aug 2024 10:44:48 -0700 Subject: [PATCH 4/7] Change files --- ...ation-channel-e3e061a4-0e5e-4c70-9158-8b61d0eebe2a.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 change/@react-native-windows-automation-channel-e3e061a4-0e5e-4c70-9158-8b61d0eebe2a.json diff --git a/change/@react-native-windows-automation-channel-e3e061a4-0e5e-4c70-9158-8b61d0eebe2a.json b/change/@react-native-windows-automation-channel-e3e061a4-0e5e-4c70-9158-8b61d0eebe2a.json new file mode 100644 index 00000000000..3cb7684cf91 --- /dev/null +++ b/change/@react-native-windows-automation-channel-e3e061a4-0e5e-4c70-9158-8b61d0eebe2a.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Add Tests", + "packageName": "@react-native-windows/automation-channel", + "email": "34109996+chiaramooney@users.noreply.github.com", + "dependentChangeType": "patch" +} From 5154a3cb2d2ac218fa8b83eacf7d9ec0e9ac24ed Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Fri, 23 Aug 2024 11:17:19 -0700 Subject: [PATCH 5/7] Format --- .../Composition/CompositionViewComponentView.cpp | 5 ++++- .../Fabric/Composition/UiaHelpers.cpp | 8 ++++---- .../renderer/components/view/HostPlatformViewProps.cpp | 10 +++++++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp index 2d2ba8dda67..a41b4482045 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp @@ -1334,7 +1334,10 @@ void ComponentView::updateAccessibilityProps( m_uiaProvider, UIA_SizeOfSetPropertyId, oldViewProps.accessibilitySetSize, newViewProps.accessibilitySetSize); winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty( - m_uiaProvider, UIA_LiveSettingPropertyId, oldViewProps.accessibilityLiveRegion, newViewProps.accessibilityLiveRegion); + m_uiaProvider, + UIA_LiveSettingPropertyId, + oldViewProps.accessibilityLiveRegion, + newViewProps.accessibilityLiveRegion); } std::optional ComponentView::getAccessiblityValue() noexcept { diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp index f765b4c6a96..9a64658cb59 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp @@ -164,14 +164,14 @@ void UpdateUiaProperty( } long GetLiveSetting(const std::string &liveRegion) noexcept { - if (liveRegion == "none"){ + if (liveRegion == "none") { return LiveSetting::Off; - }else if (liveRegion == "polite"){ + } else if (liveRegion == "polite") { return LiveSetting::Polite; - }else if (liveRegion == "assertive"){ + } else if (liveRegion == "assertive") { return LiveSetting::Assertive; } - //assert(false); // TO-DO: swap to a RedBox error + // assert(false); // TO-DO: swap to a RedBox error return LiveSetting::Off; } diff --git a/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp b/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp index 01b14378353..7e4638224cc 100644 --- a/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp @@ -36,9 +36,13 @@ HostPlatformViewProps::HostPlatformViewProps( ? sourceProps.accessibilitySetSize : convertRawProp(context, rawProps, "accessibilitySetSize", sourceProps.accessibilitySetSize, 0)), accessibilityLiveRegion( - CoreFeatures::enablePropIteratorSetter - ? sourceProps.accessibilityLiveRegion - : convertRawProp(context, rawProps, "accessibilityLiveRegion", sourceProps.accessibilityLiveRegion, "none")) {} + CoreFeatures::enablePropIteratorSetter ? sourceProps.accessibilityLiveRegion + : convertRawProp( + context, + rawProps, + "accessibilityLiveRegion", + sourceProps.accessibilityLiveRegion, + "none")) {} #define WINDOWS_VIEW_EVENT_CASE(eventType) \ case CONSTEXPR_RAW_PROPS_KEY_HASH("on" #eventType): { \ From a7e8bc9fbb6d16d77814f1100ad0ad0157f0cb4e Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Fri, 23 Aug 2024 12:34:21 -0700 Subject: [PATCH 6/7] Update Snapshots --- .../ActivityIndicatorComponentTest.test.ts.snap | 1 + .../__snapshots__/ImageComponentTest.test.ts.snap | 2 ++ .../PressableComponentTest.test.ts.snap | 2 ++ .../SwitchComponentTest.test.ts.snap | 2 ++ .../TextInputComponentTest.test.ts.snap | 2 ++ .../TouchableComponentTest.test.ts.snap | 2 ++ .../__snapshots__/ViewComponentTest.test.ts.snap | 1 + .../test/__snapshots__/snapshotPages.test.js.snap | 15 +++++++++++++++ 8 files changed, 27 insertions(+) diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/ActivityIndicatorComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/ActivityIndicatorComponentTest.test.ts.snap index 04da1893677..3b66569cbf9 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/ActivityIndicatorComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/ActivityIndicatorComponentTest.test.ts.snap @@ -509,6 +509,7 @@ exports[`ActivityIndicator Tests An ActivityIndicator can render 1`] = ` "Automation Tree": { "AutomationId": "default_activity_indicator", "ControlType": 50012, + "LiveSetting": "Polite", "LocalizedControlType": "progress bar", "Name": "Wait for content to load!", "PositionInSet": 1, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/ImageComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/ImageComponentTest.test.ts.snap index 218bcc43545..2881f7173d3 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/ImageComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/ImageComponentTest.test.ts.snap @@ -3243,6 +3243,7 @@ exports[`Image Tests Images can be defined as a set using accessibilityPosInSet { "AutomationId": "", "ControlType": 50006, + "LiveSetting": "Polite", "LocalizedControlType": "image", "PositionInSet": 1, "SizeofSet": 2, @@ -3250,6 +3251,7 @@ exports[`Image Tests Images can be defined as a set using accessibilityPosInSet { "AutomationId": "", "ControlType": 50006, + "LiveSetting": "Assertive", "LocalizedControlType": "image", "PositionInSet": 2, "SizeofSet": 2, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/PressableComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/PressableComponentTest.test.ts.snap index 702acb0fb44..b31675c1ac8 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/PressableComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/PressableComponentTest.test.ts.snap @@ -27,6 +27,7 @@ exports[`Pressable Tests Pressables can be defined as a set using accessibilityP "AutomationId": "", "ControlType": 50026, "IsKeyboardFocusable": true, + "LiveSetting": "Polite", "LocalizedControlType": "group", "PositionInSet": 2, "SizeofSet": 3, @@ -43,6 +44,7 @@ exports[`Pressable Tests Pressables can be defined as a set using accessibilityP "AutomationId": "", "ControlType": 50026, "IsKeyboardFocusable": true, + "LiveSetting": "Assertive", "LocalizedControlType": "group", "PositionInSet": 3, "SizeofSet": 3, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/SwitchComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/SwitchComponentTest.test.ts.snap index 097b2534938..3cde4a9c1e8 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/SwitchComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/SwitchComponentTest.test.ts.snap @@ -439,6 +439,7 @@ exports[`SwitchTests Switches can have customized accessibility 1`] = ` "ControlType": 50000, "HelpText": "Switch", "IsKeyboardFocusable": true, + "LiveSetting": "Polite", "LocalizedControlType": "button", "Name": "This is a Switch with accessible set to false", "PositionInSet": 3, @@ -449,6 +450,7 @@ exports[`SwitchTests Switches can have customized accessibility 1`] = ` "ControlType": 50000, "HelpText": "Switch", "IsKeyboardFocusable": true, + "LiveSetting": "Assertive", "LocalizedControlType": "button", "Name": "This is a Switch with focusable and accessible set to false", "PositionInSet": 4, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/TextInputComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/TextInputComponentTest.test.ts.snap index 3cc9c5f997a..a3c6d200aac 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/TextInputComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/TextInputComponentTest.test.ts.snap @@ -1105,6 +1105,7 @@ exports[`TextInput Tests TextInputs can be defined as a set using accessibilityP "ControlType": 50004, "HelpText": "TextInput 2 in Set of 3", "IsKeyboardFocusable": true, + "LiveSetting": "Polite", "LocalizedControlType": "edit", "Name": "TextInput 2 in Set of 3", "PositionInSet": 2, @@ -1116,6 +1117,7 @@ exports[`TextInput Tests TextInputs can be defined as a set using accessibilityP "ControlType": 50004, "HelpText": "TextInput 3 in Set of 3", "IsKeyboardFocusable": true, + "LiveSetting": "Assertive", "LocalizedControlType": "edit", "Name": "TextInput 3 in Set of 3", "PositionInSet": 3, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/TouchableComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/TouchableComponentTest.test.ts.snap index 19702b93e46..cba06ad9b0b 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/TouchableComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/TouchableComponentTest.test.ts.snap @@ -106,6 +106,7 @@ exports[`Touchable Tests Touchables can be defined in a set using accessibilityP "AutomationId": "", "ControlType": 50026, "IsKeyboardFocusable": true, + "LiveSetting": "Polite", "LocalizedControlType": "group", "PositionInSet": 2, "SizeofSet": 3, @@ -122,6 +123,7 @@ exports[`Touchable Tests Touchables can be defined in a set using accessibilityP "AutomationId": "", "ControlType": 50020, "IsKeyboardFocusable": true, + "LiveSetting": "Assertive", "LocalizedControlType": "text", "Name": "TouchableWithoutFeedback (Control 3 in Set of 3)", "PositionInSet": 3, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap index cadb2233726..1cb3315b5f0 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap @@ -1096,6 +1096,7 @@ exports[`View Tests Views can have customized accessibility 1`] = ` "ControlType": 50000, "HelpText": "Accessibility Hint", "IsKeyboardFocusable": true, + "LiveSetting": "Polite", "LocalizedControlType": "button", "Name": "A View with accessibility values", "PositionInSet": 1, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap b/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap index ffa59f5deb4..736aa7271d7 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap @@ -1033,6 +1033,7 @@ exports[`snapshotAllPages Accessibility Windows 5`] = ` exports[`snapshotAllPages ActivityIndicator 1`] = ` Date: Mon, 26 Aug 2024 10:18:08 -0700 Subject: [PATCH 7/7] Default to None --- .../Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp index 9a64658cb59..76a9fa7676d 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp @@ -164,14 +164,11 @@ void UpdateUiaProperty( } long GetLiveSetting(const std::string &liveRegion) noexcept { - if (liveRegion == "none") { - return LiveSetting::Off; - } else if (liveRegion == "polite") { + if (liveRegion == "polite") { return LiveSetting::Polite; } else if (liveRegion == "assertive") { return LiveSetting::Assertive; } - // assert(false); // TO-DO: swap to a RedBox error return LiveSetting::Off; }