diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLetterSpacingSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLetterSpacingSpan.java index 6de79326400..c62df01777b 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLetterSpacingSpan.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLetterSpacingSpan.java @@ -9,6 +9,7 @@ package com.facebook.react.views.text.internal.span; import android.text.TextPaint; import android.text.style.MetricAffectingSpan; +import com.facebook.infer.annotation.Nullsafe; /** * A {@link MetricAffectingSpan} that allows to set the letter spacing on the selected text span. @@ -16,6 +17,7 @@ import android.text.style.MetricAffectingSpan; *
The letter spacing is specified in pixels, which are converted to ems at paint time; this span
* must therefore be applied after any spans affecting font size.
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class CustomLetterSpacingSpan extends MetricAffectingSpan implements ReactSpan {
private final float mLetterSpacing;
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.java
index 59c7847a58c..f9b63f0f461 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.java
@@ -9,11 +9,13 @@ package com.facebook.react.views.text.internal.span;
import android.graphics.Paint;
import android.text.style.LineHeightSpan;
+import com.facebook.infer.annotation.Nullsafe;
/**
* We use a custom {@link LineHeightSpan}, because `lineSpacingExtra` is broken. Details here:
* https://github.com/facebook/react-native/issues/7546
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class CustomLineHeightSpan implements LineHeightSpan, ReactSpan {
private final int mHeight;
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactAbsoluteSizeSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactAbsoluteSizeSpan.java
index 460bcd20c6a..b39e89dda92 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactAbsoluteSizeSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactAbsoluteSizeSpan.java
@@ -8,10 +8,12 @@
package com.facebook.react.views.text.internal.span;
import android.text.style.AbsoluteSizeSpan;
+import com.facebook.infer.annotation.Nullsafe;
/*
* Wraps {@link AbsoluteSizeSpan} as a {@link ReactSpan}.
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class ReactAbsoluteSizeSpan extends AbsoluteSizeSpan implements ReactSpan {
public ReactAbsoluteSizeSpan(int size) {
super(size);
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactBackgroundColorSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactBackgroundColorSpan.java
index a04f2439dff..9eb94d3df76 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactBackgroundColorSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactBackgroundColorSpan.java
@@ -8,10 +8,12 @@
package com.facebook.react.views.text.internal.span;
import android.text.style.BackgroundColorSpan;
+import com.facebook.infer.annotation.Nullsafe;
/*
* Wraps {@link BackgroundColorSpan} as a {@link ReactSpan}.
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class ReactBackgroundColorSpan extends BackgroundColorSpan implements ReactSpan {
public ReactBackgroundColorSpan(int color) {
super(color);
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactClickableSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactClickableSpan.java
index 8aba070b1d2..17bb4dd4308 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactClickableSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactClickableSpan.java
@@ -11,6 +11,7 @@ import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.view.View;
import androidx.annotation.NonNull;
+import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.uimanager.UIManagerHelper;
import com.facebook.react.uimanager.events.EventDispatcher;
@@ -38,6 +39,7 @@ import com.facebook.react.views.view.ViewGroupClickEvent;
* accessible (TalkBack announces that the text has links available, and the links are exposed in
* the context menu).
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class ReactClickableSpan extends ClickableSpan implements ReactSpan {
private final int mReactTag;
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactForegroundColorSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactForegroundColorSpan.java
index 0a7b489b923..b348f1af3e6 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactForegroundColorSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactForegroundColorSpan.java
@@ -8,10 +8,12 @@
package com.facebook.react.views.text.internal.span;
import android.text.style.ForegroundColorSpan;
+import com.facebook.infer.annotation.Nullsafe;
/*
* Wraps {@link ForegroundColorSpan} as a {@link ReactSpan}.
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class ReactForegroundColorSpan extends ForegroundColorSpan implements ReactSpan {
public ReactForegroundColorSpan(int color) {
super(color);
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactSpan.java
index 1b47e63d19b..4d0bdc212d0 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactSpan.java
@@ -7,8 +7,11 @@
package com.facebook.react.views.text.internal.span;
+import com.facebook.infer.annotation.Nullsafe;
+
/*
* Enables us to distinguish between spans that were added by React Native and spans that were
* added by something else. All spans that React Native adds should implement this interface.
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public interface ReactSpan {}
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactStrikethroughSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactStrikethroughSpan.java
index d2164156b18..1263f679dd7 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactStrikethroughSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactStrikethroughSpan.java
@@ -8,8 +8,10 @@
package com.facebook.react.views.text.internal.span;
import android.text.style.StrikethroughSpan;
+import com.facebook.infer.annotation.Nullsafe;
/*
* Wraps {@link StrikethroughSpan} as a {@link ReactSpan}.
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class ReactStrikethroughSpan extends StrikethroughSpan implements ReactSpan {}
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactTagSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactTagSpan.java
index 04497ba1995..965035f98b2 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactTagSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactTagSpan.java
@@ -7,10 +7,13 @@
package com.facebook.react.views.text.internal.span;
+import com.facebook.infer.annotation.Nullsafe;
+
/**
* Instances of this class are used to place reactTag information of nested text react nodes into
* spannable text rendered by single {@link TextView}
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class ReactTagSpan implements ReactSpan {
private final int mReactTag;
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactUnderlineSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactUnderlineSpan.java
index 7676230f0b6..4b40239aeed 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactUnderlineSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactUnderlineSpan.java
@@ -8,8 +8,10 @@
package com.facebook.react.views.text.internal.span;
import android.text.style.UnderlineSpan;
+import com.facebook.infer.annotation.Nullsafe;
/*
* Wraps {@link UnderlineSpan} as a {@link ReactSpan}.
*/
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class ReactUnderlineSpan extends UnderlineSpan implements ReactSpan {}
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.java
index 40b523268cc..03a84fa11a3 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.java
@@ -11,7 +11,9 @@ import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import com.facebook.common.logging.FLog;
+import com.facebook.infer.annotation.Nullsafe;
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class SetSpanOperation {
private static final String TAG = "SetSpanOperation";
static final int SPAN_MAX_PRIORITY = Spanned.SPAN_PRIORITY >> Spanned.SPAN_PRIORITY_SHIFT;
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.java
index 63325f32638..2e0eb235308 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.java
@@ -9,7 +9,9 @@ package com.facebook.react.views.text.internal.span;
import android.text.TextPaint;
import android.text.style.CharacterStyle;
+import com.facebook.infer.annotation.Nullsafe;
+@Nullsafe(Nullsafe.Mode.LOCAL)
public class ShadowStyleSpan extends CharacterStyle implements ReactSpan {
private final float mDx, mDy, mRadius;
private final int mColor;
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineImageSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineImageSpan.java
index 34638cefd1d..8bdc0e9e020 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineImageSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineImageSpan.java
@@ -13,8 +13,10 @@ import android.text.style.ReplacementSpan;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.Nullable;
+import com.facebook.infer.annotation.Nullsafe;
/** Base class for inline image spans. */
+@Nullsafe(Nullsafe.Mode.LOCAL)
public abstract class TextInlineImageSpan extends ReplacementSpan implements ReactSpan {
/**
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineViewPlaceholderSpan.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineViewPlaceholderSpan.java
index acb9c93c63b..5ecfc969854 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineViewPlaceholderSpan.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextInlineViewPlaceholderSpan.java
@@ -10,11 +10,13 @@ package com.facebook.react.views.text.internal.span;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.text.style.ReplacementSpan;
+import com.facebook.infer.annotation.Nullsafe;
/**
* TextInlineViewPlaceholderSpan is a span for inlined views that are inside