From 020db409a2c05a99748523db2f3df08051bcc3af Mon Sep 17 00:00:00 2001 From: Gijs Weterings Date: Thu, 3 Apr 2025 08:01:59 -0700 Subject: [PATCH] Fix Nullsafe FIXMEs for BlobProvider.java and mark nullsafe (#50363) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/50363 Gone trough all the FIXMEs added in the previous diff by the nullsafe tool, marked the class as nullsafe and ensured no remaining violations. Changelog: [Android][Fixed] Made BlobProvider.java nullsafe Reviewed By: cortinico Differential Revision: D71979597 fbshipit-source-id: a6fba0d83f3558b3bed21de484b59ee6b17bb643 --- .../java/com/facebook/react/modules/blob/BlobProvider.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java index aa21a7562fd..52e67fbcd85 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java @@ -14,6 +14,7 @@ import android.database.Cursor; import android.net.Uri; import android.os.ParcelFileDescriptor; import androidx.annotation.Nullable; +import com.facebook.infer.annotation.Nullsafe; import com.facebook.react.ReactApplication; import com.facebook.react.ReactNativeHost; import com.facebook.react.bridge.ReactContext; @@ -23,6 +24,7 @@ import java.io.OutputStream; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +@Nullsafe(Nullsafe.Mode.LOCAL) public final class BlobProvider extends ContentProvider { private static final int PIPE_CAPACITY = 65536; @@ -72,7 +74,9 @@ public final class BlobProvider extends ContentProvider { if (context instanceof ReactApplication) { ReactNativeHost host = ((ReactApplication) context).getReactNativeHost(); ReactContext reactContext = host.getReactInstanceManager().getCurrentReactContext(); - // NULLSAFE_FIXME[Nullable Dereference] + if (reactContext == null) { + throw new RuntimeException("No ReactContext associated with BlobProvider"); + } blobModule = reactContext.getNativeModule(BlobModule.class); } @@ -87,7 +91,6 @@ public final class BlobProvider extends ContentProvider { ParcelFileDescriptor[] pipe; try { - // NULLSAFE_FIXME[Not Vetted Third-Party] pipe = ParcelFileDescriptor.createPipe(); } catch (IOException exception) { return null;