Skip to content

Commit 03385ac

Browse files
mdvaccafacebook-github-bot
authored andcommitted
Fix Fb4aReactPackageTest.testGetNativeModulesByName test
Summary: This diff refactors the ImageLoaderModule class in order to prevent early execution of Fresco.getImagePipeline method when prefetching MC is disabled (see stack D21362266) changelog: [Internal][Android] Reviewed By: shergin Differential Revision: D21368516 fbshipit-source-id: 53f99cd3c3f4848364182cb954a8d34821cb6d9e
1 parent eb60019 commit 03385ac

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,21 @@ public class ImageLoaderModule extends NativeImageLoaderAndroidSpec
4444
private static final String ERROR_PREFETCH_FAILURE = "E_PREFETCH_FAILURE";
4545
private static final String ERROR_GET_SIZE_FAILURE = "E_GET_SIZE_FAILURE";
4646
public static final String NAME = "ImageLoader";
47-
private static final Object DEFAULT_CALLER_CONTEXT = new Object();
4847

4948
private @Nullable final Object mCallerContext;
5049
private final Object mEnqueuedRequestMonitor = new Object();
5150
private final SparseArray<DataSource<Void>> mEnqueuedRequests = new SparseArray<>();
52-
private final ImagePipeline mImagePipeline;
51+
private @Nullable ImagePipeline mImagePipeline = null;
5352
private @Nullable ReactCallerContextFactory mCallerContextFactory;
5453

5554
public ImageLoaderModule(ReactApplicationContext reactContext) {
56-
this(reactContext, DEFAULT_CALLER_CONTEXT);
55+
super(reactContext);
56+
mCallerContext = this;
5757
}
5858

5959
public ImageLoaderModule(ReactApplicationContext reactContext, Object callerContext) {
6060
super(reactContext);
6161
mCallerContext = callerContext;
62-
mImagePipeline = Fresco.getImagePipeline();
6362
}
6463

6564
public ImageLoaderModule(
@@ -84,6 +83,10 @@ public String getName() {
8483
return NAME;
8584
}
8685

86+
private ImagePipeline getImagePipeline() {
87+
return mImagePipeline != null ? mImagePipeline : Fresco.getImagePipeline();
88+
}
89+
8790
/**
8891
* Fetch the width and height of the given image.
8992
*
@@ -102,7 +105,7 @@ public void getSize(final String uriString, final Promise promise) {
102105
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(source.getUri()).build();
103106

104107
DataSource<CloseableReference<CloseableImage>> dataSource =
105-
mImagePipeline.fetchDecodedImage(request, getCallerContext());
108+
getImagePipeline().fetchDecodedImage(request, getCallerContext());
106109

107110
DataSubscriber<CloseableReference<CloseableImage>> dataSubscriber =
108111
new BaseDataSubscriber<CloseableReference<CloseableImage>>() {
@@ -163,7 +166,7 @@ public void getSizeWithHeaders(
163166
ReactNetworkImageRequest.fromBuilderWithHeaders(imageRequestBuilder, headers);
164167

165168
DataSource<CloseableReference<CloseableImage>> dataSource =
166-
mImagePipeline.fetchDecodedImage(request, getCallerContext());
169+
getImagePipeline().fetchDecodedImage(request, getCallerContext());
167170

168171
DataSubscriber<CloseableReference<CloseableImage>> dataSubscriber =
169172
new BaseDataSubscriber<CloseableReference<CloseableImage>>() {
@@ -223,7 +226,7 @@ public void prefetchImage(
223226
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri).build();
224227

225228
DataSource<Void> prefetchSource =
226-
mImagePipeline.prefetchToDiskCache(request, getCallerContext());
229+
getImagePipeline().prefetchToDiskCache(request, getCallerContext());
227230
DataSubscriber<Void> prefetchSubscriber =
228231
new BaseDataSubscriber<Void>() {
229232
@Override
@@ -270,7 +273,7 @@ public void queryCache(final ReadableArray uris, final Promise promise) {
270273
@Override
271274
protected void doInBackgroundGuarded(Void... params) {
272275
WritableMap result = Arguments.createMap();
273-
ImagePipeline imagePipeline = mImagePipeline;
276+
ImagePipeline imagePipeline = getImagePipeline();
274277
for (int i = 0; i < uris.size(); i++) {
275278
String uriString = uris.getString(i);
276279
final Uri uri = Uri.parse(uriString);

0 commit comments

Comments
 (0)