Mark classes of package fabric as @Nullsafe (#42725)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/42725

All these classes are NullSafe, let's mark them as NullSafe(Local) to ensure lint detect errors in the future

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D53200097

fbshipit-source-id: dad54f5bf03967b5d4126757ab0d5424534af888
This commit is contained in:
David Vacca
2024-02-02 10:22:02 -08:00
committed by Facebook GitHub Bot
parent 239f9bf7eb
commit 4e6eba7a2d
20 changed files with 40 additions and 0 deletions
@@ -9,6 +9,7 @@ package com.facebook.react.fabric;
import android.annotation.SuppressLint;
import androidx.annotation.NonNull;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.NativeMap;
@@ -20,6 +21,7 @@ import com.facebook.react.fabric.events.EventBeatManager;
import com.facebook.react.fabric.events.EventEmitterWrapper;
import com.facebook.react.uimanager.PixelUtil;
@Nullsafe(Nullsafe.Mode.LOCAL)
@DoNotStrip
@SuppressLint("MissingNativeLoadLibrary")
public class BindingImpl implements Binding {
@@ -8,9 +8,11 @@
package com.facebook.react.fabric;
import androidx.annotation.NonNull;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
@Nullsafe(Nullsafe.Mode.LOCAL)
@DoNotStrip
public class ComponentFactory {
@@ -7,9 +7,11 @@
package com.facebook.react.fabric;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
@Nullsafe(Nullsafe.Mode.LOCAL)
@DoNotStrip
public class CoreComponentsRegistry {
static {
@@ -22,6 +22,7 @@ import static com.facebook.react.bridge.ReactMarkerConstants.FABRIC_UPDATE_UI_MA
import static com.facebook.react.bridge.ReactMarkerConstants.FABRIC_UPDATE_UI_MAIN_THREAD_START;
import androidx.annotation.Nullable;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.ReactMarker;
import com.facebook.react.bridge.ReactMarkerConstants;
import java.util.ArrayList;
@@ -29,6 +30,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Nullsafe(Nullsafe.Mode.LOCAL)
public class DevToolsReactPerfLogger implements ReactMarker.FabricMarkerListener {
private final Map<Integer, FabricCommitPoint> mFabricCommitMarkers = new HashMap<>();
@@ -8,6 +8,7 @@
package com.facebook.react.fabric;
import androidx.annotation.NonNull;
import com.facebook.infer.annotation.Nullsafe;
import java.util.HashMap;
import java.util.Map;
@@ -17,6 +18,7 @@ import java.util.Map;
* <p>TODO T97384889: remove this class when the component names are unified between JS - Android -
* iOS - C++
*/
@Nullsafe(Nullsafe.Mode.LOCAL)
public class FabricComponents {
private static @NonNull final Map<String, String> sComponentNames = new HashMap<>();
@@ -9,11 +9,13 @@ package com.facebook.react.fabric;
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.ReactMarker;
import com.facebook.react.bridge.ReactMarkerConstants;
import com.facebook.soloader.SoLoader;
import com.facebook.systrace.Systrace;
@Nullsafe(Nullsafe.Mode.LOCAL)
public class FabricSoLoader {
private static volatile boolean sDidInit = false;
@@ -9,9 +9,11 @@ package com.facebook.react.fabric;
import android.view.Choreographer;
import androidx.annotation.NonNull;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.JSExceptionHandler;
import com.facebook.react.bridge.ReactContext;
@Nullsafe(Nullsafe.Mode.LOCAL)
public abstract class GuardedFrameCallback implements Choreographer.FrameCallback {
@NonNull private final JSExceptionHandler mExceptionHandler;
@@ -11,6 +11,7 @@ import android.annotation.SuppressLint;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.common.logging.FLog;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.NativeMap;
@@ -23,6 +24,7 @@ import com.facebook.react.uimanager.StateWrapper;
* This class holds reference to the C++ EventEmitter object. Instances of this class are created on
* the Bindings.cpp, where the pointer to the C++ event emitter is set.
*/
@Nullsafe(Nullsafe.Mode.LOCAL)
@SuppressLint("MissingNativeLoadLibrary")
@DoNotStrip
public class StateWrapperImpl implements StateWrapper {
@@ -11,6 +11,7 @@ import static com.facebook.react.fabric.mounting.LayoutMetricsConversions.getMax
import static com.facebook.react.fabric.mounting.LayoutMetricsConversions.getMinSize;
import androidx.annotation.IntDef;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.NativeMap;
@@ -18,6 +19,7 @@ import com.facebook.react.interfaces.fabric.SurfaceHandler;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Nullsafe(Nullsafe.Mode.LOCAL)
public class SurfaceHandlerBinding implements SurfaceHandler {
static {
FabricSoLoader.staticInit();
@@ -9,6 +9,7 @@ package com.facebook.react.fabric.events;
import android.annotation.SuppressLint;
import androidx.annotation.NonNull;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.ReactApplicationContext;
@@ -18,6 +19,7 @@ import com.facebook.react.uimanager.events.BatchEventDispatchedListener;
/**
* Class that acts as a proxy between the list of EventBeats registered in C++ and the Android side.
*/
@Nullsafe(Nullsafe.Mode.LOCAL)
@SuppressLint("MissingNativeLoadLibrary")
public final class EventBeatManager implements BatchEventDispatchedListener {
@@ -9,6 +9,7 @@ package com.facebook.react.fabric.events;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.WritableArray;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.fabric.FabricUIManager;
@@ -18,6 +19,7 @@ import com.facebook.react.uimanager.events.RCTModernEventEmitter;
import com.facebook.react.uimanager.events.TouchEvent;
import com.facebook.systrace.Systrace;
@Nullsafe(Nullsafe.Mode.LOCAL)
public class FabricEventEmitter implements RCTModernEventEmitter {
@NonNull private final FabricUIManager mUIManager;
@@ -10,9 +10,11 @@ package com.facebook.react.fabric.mounting;
import static android.view.View.MeasureSpec.EXACTLY;
import android.view.View;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.yoga.YogaMeasureMode;
@Nullsafe(Nullsafe.Mode.LOCAL)
public interface LayoutMetricsConversions {
static float getMinSize(int viewMeasureSpec) {
@@ -8,12 +8,14 @@
package com.facebook.react.fabric.mounting.mountitems;
import androidx.annotation.UiThread;
import com.facebook.infer.annotation.Nullsafe;
/**
* This is a common interface for View Command operations. Once we delete the deprecated {@link
* DispatchIntCommandMountItem}, we can delete this interface too. It provides a set of common
* operations to simplify generic operations on all types of ViewCommands.
*/
@Nullsafe(Nullsafe.Mode.LOCAL)
public abstract class DispatchCommandMountItem implements MountItem {
private int mNumRetries = 0;
@@ -9,9 +9,11 @@ package com.facebook.react.fabric.mounting.mountitems;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.fabric.mounting.MountingManager;
@Nullsafe(Nullsafe.Mode.LOCAL)
final class DispatchIntCommandMountItem extends DispatchCommandMountItem {
private final int mSurfaceId;
@@ -9,9 +9,11 @@ package com.facebook.react.fabric.mounting.mountitems;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.fabric.mounting.MountingManager;
@Nullsafe(Nullsafe.Mode.LOCAL)
final class DispatchStringCommandMountItem extends DispatchCommandMountItem {
private final int mSurfaceId;
@@ -8,6 +8,7 @@
package com.facebook.react.fabric.mounting.mountitems;
import androidx.annotation.NonNull;
import com.facebook.infer.annotation.Nullsafe;
import java.util.HashMap;
import java.util.Map;
@@ -17,6 +18,7 @@ import java.util.Map;
* <p>TODO T97384889: remove this class when the component names are unified between JS - Android -
* iOS - C++
*/
@Nullsafe(Nullsafe.Mode.LOCAL)
class FabricNameComponentMapping {
private static @NonNull final Map<String, String> sComponentNames = new HashMap<>();
@@ -9,11 +9,13 @@ package com.facebook.react.fabric.mounting.mountitems;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.fabric.events.EventEmitterWrapper;
import com.facebook.react.uimanager.StateWrapper;
/** Factory class that expose creation of {@link MountItem} */
@Nullsafe(Nullsafe.Mode.LOCAL)
public class MountItemFactory {
/** @return a {@link DispatchCommandMountItem} for commands identified by an int */
@@ -14,12 +14,14 @@ import static com.facebook.react.fabric.mounting.mountitems.FabricNameComponentM
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.common.logging.FLog;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.fabric.events.EventEmitterWrapper;
import com.facebook.react.fabric.mounting.MountingManager;
import com.facebook.react.fabric.mounting.SurfaceMountingManager;
import com.facebook.react.uimanager.StateWrapper;
/** {@link MountItem} that is used to pre-allocate views for JS components. */
@Nullsafe(Nullsafe.Mode.LOCAL)
final class PreAllocateViewMountItem implements MountItem {
private final @NonNull String mComponent;
@@ -8,10 +8,12 @@
package com.facebook.react.fabric.mounting.mountitems;
import androidx.annotation.NonNull;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.ReactSoftExceptionLogger;
import com.facebook.react.bridge.RetryableMountingLayerException;
import com.facebook.react.fabric.mounting.MountingManager;
@Nullsafe(Nullsafe.Mode.LOCAL)
class SendAccessibilityEvent implements MountItem {
private final String TAG = "Fabric.SendAccessibilityEvent";
@@ -8,10 +8,12 @@
package com.facebook.react.fabric.mounting.mountitems;
import androidx.annotation.NonNull;
import com.facebook.infer.annotation.Nullsafe;
import com.facebook.react.bridge.ReactSoftExceptionLogger;
import com.facebook.react.bridge.RetryableMountingLayerException;
import com.facebook.react.fabric.mounting.MountingManager;
@Nullsafe(Nullsafe.Mode.LOCAL)
final class SendAccessibilityEventMountItem implements MountItem {
private final String TAG = "Fabric.SendAccessibilityEvent";