From 882e4a3f17bdb893dd02eb6ac903673eb35a34b1 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Fri, 15 Nov 2019 17:24:41 -0800 Subject: [PATCH] Integrate ReactContextContainerFactory as part of ReactImageViewManager Summary: This diff exposes the ReactContextContainerFactory class on ReactImageViewManager and it customize ChainContext to improve Fresco logging Changelog: Expose new ReactContextContainerFactory class as part of ReactImageViewManager Reviewed By: JoshuaGross Differential Revision: D18474013 fbshipit-source-id: 143461da22966694e5b1e2c3b5b39e3d6be91fd6 --- .../react/views/image/ReactImageManager.java | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java index 184d8610db9..82c3ae16c90 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java @@ -39,25 +39,45 @@ public class ReactImageManager extends SimpleViewManager { private @Nullable AbstractDraweeControllerBuilder mDraweeControllerBuilder; private @Nullable GlobalImageLoadListener mGlobalImageLoadListener; private final @Nullable Object mCallerContext; + private final @Nullable ReactCallerContextFactory mCallerContextFactory; public ReactImageManager( - AbstractDraweeControllerBuilder draweeControllerBuilder, Object callerContext) { + @Nullable AbstractDraweeControllerBuilder draweeControllerBuilder, + @Nullable Object callerContext) { this(draweeControllerBuilder, null, callerContext); } public ReactImageManager( - AbstractDraweeControllerBuilder draweeControllerBuilder, + @Nullable AbstractDraweeControllerBuilder draweeControllerBuilder, @Nullable GlobalImageLoadListener globalImageLoadListener, - Object callerContext) { + @Nullable Object callerContext) { mDraweeControllerBuilder = draweeControllerBuilder; mGlobalImageLoadListener = globalImageLoadListener; mCallerContext = callerContext; + mCallerContextFactory = null; + } + + public ReactImageManager( + @Nullable AbstractDraweeControllerBuilder draweeControllerBuilder, + @Nullable ReactCallerContextFactory callerContextFactory) { + this(draweeControllerBuilder, null, callerContextFactory); + } + + public ReactImageManager( + @Nullable AbstractDraweeControllerBuilder draweeControllerBuilder, + @Nullable GlobalImageLoadListener globalImageLoadListener, + @Nullable ReactCallerContextFactory callerContextFactory) { + mDraweeControllerBuilder = draweeControllerBuilder; + mGlobalImageLoadListener = globalImageLoadListener; + mCallerContextFactory = callerContextFactory; + mCallerContext = null; } public ReactImageManager() { // Lazily initialize as FrescoModule have not been initialized yet mDraweeControllerBuilder = null; mCallerContext = null; + mCallerContextFactory = null; } public AbstractDraweeControllerBuilder getDraweeControllerBuilder() { @@ -73,8 +93,12 @@ public class ReactImageManager extends SimpleViewManager { @Override public ReactImageView createViewInstance(ThemedReactContext context) { + Object callerContext = + mCallerContextFactory != null + ? mCallerContextFactory.getOrCreateCallerContext(context) + : getCallerContext(); return new ReactImageView( - context, getDraweeControllerBuilder(), mGlobalImageLoadListener, getCallerContext()); + context, getDraweeControllerBuilder(), mGlobalImageLoadListener, callerContext); } // In JS this is Image.props.source