From 239f9bf7eba6122ffacab2e1cdc3525bcb4174e4 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Fri, 2 Feb 2024 10:22:02 -0800 Subject: [PATCH] Mark classes of package devSupport as @Nullsafe (#42723) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/42723 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: D53200099 fbshipit-source-id: a5b244da401fb23c9579728c7261312ab200d623 --- .../react/devsupport/DefaultDevSupportManagerFactory.java | 2 ++ .../com/facebook/react/devsupport/DevInternalSettings.java | 2 ++ .../com/facebook/react/devsupport/DevSettingsActivity.java | 2 ++ .../com/facebook/react/devsupport/DevSupportSoLoader.java | 2 ++ .../facebook/react/devsupport/DoubleTapReloadRecognizer.java | 2 ++ .../java/com/facebook/react/devsupport/InspectorFlags.java | 2 ++ .../main/java/com/facebook/react/devsupport/LogBoxDialog.java | 2 ++ .../main/java/com/facebook/react/devsupport/LogBoxModule.java | 2 ++ .../com/facebook/react/devsupport/PackagerStatusCheck.java | 2 ++ .../facebook/react/devsupport/PerftestDevSupportManager.java | 2 ++ .../com/facebook/react/devsupport/WindowOverlayCompat.java | 4 +++- .../com/facebook/react/devsupport/interfaces/ErrorType.java | 3 +++ 12 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java index 0a9a2338ceb..a18b78a8127 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java @@ -9,6 +9,7 @@ package com.facebook.react.devsupport; import android.content.Context; import androidx.annotation.Nullable; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.react.common.SurfaceDelegateFactory; import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener; import com.facebook.react.devsupport.interfaces.DevLoadingViewManager; @@ -24,6 +25,7 @@ import java.util.Map; * class and its dependencies in release builds. If the class isn't found, {@link * DisabledDevSupportManager} is returned instead. */ +@Nullsafe(Nullsafe.Mode.LOCAL) public class DefaultDevSupportManagerFactory implements DevSupportManagerFactory { private static final String DEVSUPPORT_IMPL_PACKAGE = "com.facebook.react.devsupport"; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java index c465e63cb3d..32ff198161f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java @@ -10,6 +10,7 @@ package com.facebook.react.devsupport; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.react.common.build.ReactBuildConfig; import com.facebook.react.modules.debug.interfaces.DeveloperSettings; import com.facebook.react.packagerconnection.PackagerConnectionSettings; @@ -19,6 +20,7 @@ import com.facebook.react.packagerconnection.PackagerConnectionSettings; * {@link com.facebook.react.devsupport}. For accessing some of the settings by external modules * this class implements an external interface {@link DeveloperSettings}. */ +@Nullsafe(Nullsafe.Mode.LOCAL) class DevInternalSettings implements DeveloperSettings, SharedPreferences.OnSharedPreferenceChangeListener { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSettingsActivity.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSettingsActivity.java index caa555f76b0..d6a5b314c54 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSettingsActivity.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSettingsActivity.java @@ -9,12 +9,14 @@ package com.facebook.react.devsupport; import android.os.Bundle; import android.preference.PreferenceActivity; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.react.R; /** * Activity that display developers settings. Should be added to the debug manifest of the app. Can * be triggered through the developers option menu displayed by {@link DevSupportManager}. */ +@Nullsafe(Nullsafe.Mode.LOCAL) public class DevSettingsActivity extends PreferenceActivity { @Override diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportSoLoader.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportSoLoader.java index 4f04fc2f492..31d47c82341 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportSoLoader.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportSoLoader.java @@ -7,8 +7,10 @@ package com.facebook.react.devsupport; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.soloader.SoLoader; +@Nullsafe(Nullsafe.Mode.LOCAL) class DevSupportSoLoader { private static volatile boolean sDidInit = false; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DoubleTapReloadRecognizer.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DoubleTapReloadRecognizer.java index c54335e9720..791943dc43c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DoubleTapReloadRecognizer.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DoubleTapReloadRecognizer.java @@ -11,11 +11,13 @@ import android.os.Handler; import android.view.KeyEvent; import android.view.View; import android.widget.EditText; +import com.facebook.infer.annotation.Nullsafe; /** * A class allows recognizing double key tap of "R", used to reload JS in {@link * AbstractReactActivity}, {@link RedBoxDialogSurfaceDelegate} and {@link ReactActivity}. */ +@Nullsafe(Nullsafe.Mode.LOCAL) public class DoubleTapReloadRecognizer { private boolean mDoRefresh = false; private static final long DOUBLE_TAP_DELAY = 200; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.java index c227f1c82ff..05480fb58bf 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.java @@ -7,9 +7,11 @@ package com.facebook.react.devsupport; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.proguard.annotations.DoNotStrip; /** JNI wrapper for `jsinspector_modern::InspectorFlags`. */ +@Nullsafe(Nullsafe.Mode.LOCAL) @DoNotStrip public class InspectorFlags { static { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialog.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialog.java index f138df18d09..990b1455880 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialog.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialog.java @@ -11,9 +11,11 @@ import android.app.Activity; import android.app.Dialog; import android.view.View; import android.view.Window; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.react.R; /** Dialog for displaying JS errors in LogBox. */ +@Nullsafe(Nullsafe.Mode.LOCAL) class LogBoxDialog extends Dialog { public LogBoxDialog(Activity context, View reactRootView) { super(context, R.style.Theme_Catalyst_LogBox); diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java index ec410c3644a..dccfd327972 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java @@ -9,12 +9,14 @@ package com.facebook.react.devsupport; import androidx.annotation.Nullable; import com.facebook.fbreact.specs.NativeLogBoxSpec; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.SurfaceDelegate; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.module.annotations.ReactModule; +@Nullsafe(Nullsafe.Mode.LOCAL) @ReactModule(name = NativeLogBoxSpec.NAME) public class LogBoxModule extends NativeLogBoxSpec { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java index 0814a12dea9..3e8a55d3c29 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java @@ -8,6 +8,7 @@ package com.facebook.react.devsupport; import com.facebook.common.logging.FLog; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.react.common.ReactConstants; import com.facebook.react.devsupport.interfaces.PackagerStatusCallback; import java.io.IOException; @@ -21,6 +22,7 @@ import okhttp3.Response; import okhttp3.ResponseBody; /** Use this class to check if the JavaScript packager is running on the provided host. */ +@Nullsafe(Nullsafe.Mode.LOCAL) public class PackagerStatusCheck { private static final String PACKAGER_OK_STATUS = "packager-status:running"; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java index 44bfd45e2cd..3c4b45642ed 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java @@ -8,11 +8,13 @@ package com.facebook.react.devsupport; import android.content.Context; +import com.facebook.infer.annotation.Nullsafe; /** * Interface for accessing and interacting with development features related to performance testing. * Communication is enabled via the Inspector, but everything else is disabled. */ +@Nullsafe(Nullsafe.Mode.LOCAL) public final class PerftestDevSupportManager extends DisabledDevSupportManager { private final DevServerHelper mDevServerHelper; private final DevInternalSettings mDevSettings; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/WindowOverlayCompat.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/WindowOverlayCompat.java index 1223f7ffb9e..804e0a6cd1f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/WindowOverlayCompat.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/WindowOverlayCompat.java @@ -9,12 +9,14 @@ package com.facebook.react.devsupport; import android.os.Build; import android.view.WindowManager; +import com.facebook.infer.annotation.Nullsafe; /** * Compatibility wrapper for apps targeting API level 26 or later. See * https://developer.android.com/about/versions/oreo/android-8.0-changes.html#cwt */ -/* package */ class WindowOverlayCompat { +/* package */ @Nullsafe(Nullsafe.Mode.LOCAL) +class WindowOverlayCompat { private static final int TYPE_APPLICATION_OVERLAY = 2038; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java index 6569931ed9c..8b8800cf066 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java @@ -7,6 +7,9 @@ package com.facebook.react.devsupport.interfaces; +import com.facebook.infer.annotation.Nullsafe; + +@Nullsafe(Nullsafe.Mode.LOCAL) public enum ErrorType { JS("JS"), NATIVE("Native");