Skip to content

Commit 3d4e662

Browse files
committed
draft java configs to trigger setAccessibilityUnit
1 parent f66e914 commit 3d4e662

File tree

6 files changed

+36
-6
lines changed

6 files changed

+36
-6
lines changed

ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ public class ViewProps {
154154
public static final String ACCESSIBILITY_HINT = "accessibilityHint";
155155
public static final String ACCESSIBILITY_LIVE_REGION = "accessibilityLiveRegion";
156156
public static final String ACCESSIBILITY_ROLE = "accessibilityRole";
157+
public static final String ACCESSIBILITY_UNIT = "accessibilityUnit";
157158
public static final String ACCESSIBILITY_STATE = "accessibilityState";
158159
public static final String ACCESSIBILITY_ACTIONS = "accessibilityActions";
159160
public static final String ACCESSIBILITY_VALUE = "accessibilityValue";

ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ protected Spannable spannedFromShadowNode(
325325
protected boolean mIsBackgroundColorSet = false;
326326
protected int mBackgroundColor;
327327
protected boolean mIsAccessibilityLink = false;
328+
protected String mIsAccessibilityUnit;
328329

329330
protected int mNumberOfLines = UNSET;
330331
protected int mTextAlign = Gravity.NO_GRAVITY;

ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTtsSpan.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ public static class Builder<C extends Builder<?>> {
2828
private PersistableBundle mArgs = new PersistableBundle();
2929

3030
public Builder(String type) {
31-
mType = type;
31+
if (type == "verbatim") {
32+
mType = TYPE_VERBATIM;
33+
} else {
34+
mType = TYPE_TEXT;
35+
}
3236
}
3337

3438
public ReactTtsSpan build() {

ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.text.Layout;
1212
import android.text.TextUtils;
1313
import android.util.LayoutDirection;
14+
import android.util.Log;
1415
import android.view.Gravity;
1516
import androidx.annotation.Nullable;
1617
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
@@ -53,6 +54,7 @@ public class TextAttributeProps {
5354
public static final short TA_KEY_IS_HIGHLIGHTED = 20;
5455
public static final short TA_KEY_LAYOUT_DIRECTION = 21;
5556
public static final short TA_KEY_ACCESSIBILITY_ROLE = 22;
57+
public static final short TA_KEY_ACCESSIBILITY_UNIT = 24;
5658

5759
public static final int UNSET = -1;
5860

@@ -102,6 +104,8 @@ public class TextAttributeProps {
102104

103105
protected @Nullable ReactAccessibilityDelegate.AccessibilityRole mAccessibilityRole = null;
104106
protected boolean mIsAccessibilityRoleSet = false;
107+
protected boolean mIsAccessibilityUnitSet = false;
108+
protected String mAccessibilityUnit = null;
105109
protected boolean mIsAccessibilityLink = false;
106110

107111
protected int mFontStyle = UNSET;
@@ -143,6 +147,7 @@ public static TextAttributeProps fromMapBuffer(MapBuffer props) {
143147

144148
// TODO T83483191: Review constants that are not being set!
145149
Iterator<MapBuffer.Entry> iterator = props.iterator();
150+
Log.w("TESTING::TextAttributeProps", "props: " + (props));
146151
while (iterator.hasNext()) {
147152
MapBuffer.Entry entry = iterator.next();
148153
switch (entry.getKey()) {
@@ -205,6 +210,9 @@ public static TextAttributeProps fromMapBuffer(MapBuffer props) {
205210
case TA_KEY_ACCESSIBILITY_ROLE:
206211
result.setAccessibilityRole(entry.getStringValue());
207212
break;
213+
case TA_KEY_ACCESSIBILITY_UNIT:
214+
result.setAccessibilityUnit(entry.getStringValue());
215+
break;
208216
}
209217
}
210218

@@ -246,6 +254,7 @@ public static TextAttributeProps fromReadableMap(ReactStylesDiffMap props) {
246254
result.setTextTransform(getStringProp(props, PROP_TEXT_TRANSFORM));
247255
result.setLayoutDirection(getStringProp(props, ViewProps.LAYOUT_DIRECTION));
248256
result.setAccessibilityRole(getStringProp(props, ViewProps.ACCESSIBILITY_ROLE));
257+
result.setAccessibilityUnit(getStringProp(props, ViewProps.ACCESSIBILITY_UNIT));
249258
return result;
250259
}
251260

@@ -599,6 +608,14 @@ private void setTextTransform(@Nullable String textTransform) {
599608
}
600609
}
601610

611+
private void setAccessibilityUnit(@Nullable String accessibilityUnit) {
612+
Log.w("TESTING::TextAttributeProps", "accessibilityUnit: " + (accessibilityUnit));
613+
if (accessibilityUnit != null) {
614+
mIsAccessibilityUnitSet = true;
615+
mAccessibilityUnit = accessibilityUnit;
616+
}
617+
}
618+
602619
private void setAccessibilityRole(@Nullable String accessibilityRole) {
603620
if (accessibilityRole != null) {
604621
mIsAccessibilityRoleSet = true;

ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,23 +142,29 @@ private static void buildSpannableFromFragment(
142142
} else if (end >= start) {
143143
if (textAttributes.mIsAccessibilityLink) {
144144
ops.add(new SetSpanOperation(start, end, new ReactClickableSpan(reactTag)));
145+
// add here the span
145146
}
146147
if (textAttributes.mIsColorSet) {
147148
ops.add(
148149
new SetSpanOperation(
149150
start, end, new ReactForegroundColorSpan(textAttributes.mColor)));
150151
}
152+
if (textAttributes.mAccessibilityUnit != null) {
153+
if (Build.VERSION.SDK_INT > 21 && textAttributes.mBackgroundColor == -65536) {
154+
ops.add(new SetSpanOperation(start, end, new ReactTtsSpan.Builder("verbatim").build()));
155+
/*
156+
ops.add(
157+
new SetSpanOperation(
158+
start, end, new ReactTtsSpan.Builder(ReactTtsSpan.TYPE_VERBATIM).build()));
159+
*/
160+
}
161+
}
151162
if (textAttributes.mIsBackgroundColorSet) {
152163
/*
153164
ops.add(
154165
new SetSpanOperation(
155166
start, end, new ReactBackgroundColorSpan(textAttributes.mBackgroundColor)));
156167
*/
157-
if (Build.VERSION.SDK_INT > 21 && textAttributes.mBackgroundColor == -65536) {
158-
ops.add(
159-
new SetSpanOperation(
160-
start, end, new ReactTtsSpan.Builder(ReactTtsSpan.TYPE_VERBATIM).build()));
161-
}
162168
}
163169
if (!Float.isNaN(textAttributes.getLetterSpacing())) {
164170
ops.add(

packages/rn-tester/js/examples/Text/TextAdjustsDynamicLayoutExample.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export default function TextAdjustsDynamicLayoutExample(props: {}): React.Node {
2121
My number is{' '}
2222
<Text
2323
accessibilityRole="link"
24+
accessibilityUnit="verbatim"
2425
accessible={true}
2526
style={{backgroundColor: 'red'}}>
2627
please spell this text

0 commit comments

Comments
 (0)