diff --git a/ReactAndroid/src/main/java/com/facebook/react/BUCK b/ReactAndroid/src/main/java/com/facebook/react/BUCK index cec9acd07..1c925ed23 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/BUCK @@ -9,7 +9,6 @@ DEPS = [ react_native_target('java/com/facebook/react/modules/debug:debug'), react_native_target('java/com/facebook/react/modules/systeminfo:systeminfo'), react_native_target('java/com/facebook/react/modules/toast:toast'), - react_native_target('java/com/facebook/react/views/imagehelper:imagehelper'), react_native_target('java/com/facebook/react/uimanager:uimanager'), react_native_dep('java/com/facebook/systrace:systrace'), react_native_dep('libraries/fbcore/src/main/java/com/facebook/common/logging:logging'), diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerImpl.java index 68d024369..8e7007c9b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerImpl.java @@ -61,7 +61,6 @@ import com.facebook.react.devsupport.ReactInstanceDevCommandsHandler; import com.facebook.react.devsupport.RedBoxHandler; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; import com.facebook.react.modules.core.DeviceEventManagerModule; -import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper; import com.facebook.react.uimanager.AppRegistry; import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.UIImplementationProvider; @@ -563,8 +562,6 @@ import static com.facebook.react.bridge.ReactMarkerConstants.RUN_JS_BUNDLE_START mHasStartedCreatingInitialContext = false; } mCurrentActivity = null; - - ResourceDrawableIdHelper.getInstance().clear(); } private void moveToResumedLifecycleState(boolean force) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManagerImpl.java index 437095a6e..588cd37f2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManagerImpl.java @@ -63,7 +63,6 @@ import com.facebook.react.devsupport.RedBoxHandler; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; import com.facebook.react.modules.core.DeviceEventManagerModule; import com.facebook.react.modules.debug.DeveloperSettings; -import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper; import com.facebook.react.uimanager.AppRegistry; import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.UIImplementationProvider; @@ -548,8 +547,6 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; mHasStartedCreatingInitialContext = false; } mCurrentActivity = null; - - ResourceDrawableIdHelper.getInstance().clear(); } private void moveToResumedLifecycleState(boolean force) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK index 60239e672..84e25e32a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK @@ -9,7 +9,6 @@ android_library( react_native_target('java/com/facebook/csslayout:csslayout'), react_native_target('java/com/facebook/react/uimanager:uimanager'), react_native_target('java/com/facebook/react/uimanager/annotations:annotations'), - react_native_target('java/com/facebook/react/views/imagehelper:imagehelper'), react_native_dep('libraries/fresco/fresco-react-native:fbcore'), react_native_dep('libraries/fresco/fresco-react-native:fresco-react-native'), react_native_dep('libraries/fresco/fresco-react-native:fresco-drawee'), 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 fdae0e2db..518ea9e0e 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 @@ -37,6 +37,7 @@ public class ReactImageManager extends SimpleViewManager { return REACT_CLASS; } + private ResourceDrawableIdHelper mResourceDrawableIdHelper; private @Nullable AbstractDraweeControllerBuilder mDraweeControllerBuilder; private final @Nullable Object mCallerContext; @@ -45,12 +46,14 @@ public class ReactImageManager extends SimpleViewManager { Object callerContext) { mDraweeControllerBuilder = draweeControllerBuilder; mCallerContext = callerContext; + mResourceDrawableIdHelper = new ResourceDrawableIdHelper(); } public ReactImageManager() { // Lazily initialize as FrescoModule have not been initialized yet mDraweeControllerBuilder = null; mCallerContext = null; + mResourceDrawableIdHelper = new ResourceDrawableIdHelper(); } public AbstractDraweeControllerBuilder getDraweeControllerBuilder() { @@ -69,7 +72,8 @@ public class ReactImageManager extends SimpleViewManager { return new ReactImageView( context, getDraweeControllerBuilder(), - getCallerContext()); + getCallerContext(), + mResourceDrawableIdHelper); } // In JS this is Image.props.source diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java b/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java index 7102b8738..616042cee 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java @@ -59,7 +59,6 @@ import com.facebook.react.common.SystemClock; import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.events.EventDispatcher; -import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper; /** * Wrapper class around Fresco's GenericDraweeView, enabling persisting props across multiple view @@ -191,7 +190,7 @@ public class ReactImageView extends GenericDraweeView { // ignore malformed uri, then attempt to extract resource ID. } if (mUri == null) { - mUri = ResourceDrawableIdHelper.getInstance().getResourceDrawableUri(getContext(), mSource); + mUri = mResourceDrawableIdHelper.getResourceDrawableUri(getContext(), mSource); mIsLocalImage = true; } else { mIsLocalImage = false; @@ -199,6 +198,7 @@ public class ReactImageView extends GenericDraweeView { } } + private final ResourceDrawableIdHelper mResourceDrawableIdHelper; private final List mSources; private @Nullable ImageSource mImageSource; @@ -229,12 +229,14 @@ public class ReactImageView extends GenericDraweeView { public ReactImageView( Context context, AbstractDraweeControllerBuilder draweeControllerBuilder, - @Nullable Object callerContext) { + @Nullable Object callerContext, + ResourceDrawableIdHelper resourceDrawableIdHelper) { super(context, buildHierarchy(context)); mScaleType = ImageResizeMode.defaultValue(); mDraweeControllerBuilder = draweeControllerBuilder; mRoundedCornerPostprocessor = new RoundedCornerPostprocessor(); mCallerContext = callerContext; + mResourceDrawableIdHelper = resourceDrawableIdHelper; mSources = new LinkedList<>(); } @@ -342,7 +344,7 @@ public class ReactImageView extends GenericDraweeView { } public void setLoadingIndicatorSource(@Nullable String name) { - Drawable drawable = ResourceDrawableIdHelper.getInstance().getResourceDrawable(getContext(), name); + Drawable drawable = mResourceDrawableIdHelper.getResourceDrawable(getContext(), name); mLoadingImageDrawable = drawable != null ? (Drawable) new AutoRotateDrawable(drawable, 1000) : null; mIsDirty = true; diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ResourceDrawableIdHelper.java b/ReactAndroid/src/main/java/com/facebook/react/views/image/ResourceDrawableIdHelper.java similarity index 70% rename from ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ResourceDrawableIdHelper.java rename to ReactAndroid/src/main/java/com/facebook/react/views/image/ResourceDrawableIdHelper.java index 009c4ca47..17d930601 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ResourceDrawableIdHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/ResourceDrawableIdHelper.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.views.imagehelper; +package com.facebook.react.views.image; import javax.annotation.Nullable; @@ -11,31 +11,19 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.net.Uri; +import com.facebook.common.util.UriUtil; + /** * Helper class for obtaining information about local images. */ -public class ResourceDrawableIdHelper { +/* package */ class ResourceDrawableIdHelper { private Map mResourceDrawableIdMap; - private static final String LOCAL_RESOURCE_SCHEME = "res"; - private static ResourceDrawableIdHelper sResourceDrawableIdHelper; - - private ResourceDrawableIdHelper() { + public ResourceDrawableIdHelper() { mResourceDrawableIdMap = new HashMap(); } - public static ResourceDrawableIdHelper getInstance() { - if (sResourceDrawableIdHelper == null) { - sResourceDrawableIdHelper = new ResourceDrawableIdHelper(); - } - return sResourceDrawableIdHelper; - } - - public void clear() { - mResourceDrawableIdMap.clear(); - } - public int getResourceDrawableId(Context context, @Nullable String name) { if (name == null || name.isEmpty()) { return 0; @@ -60,7 +48,7 @@ public class ResourceDrawableIdHelper { public Uri getResourceDrawableUri(Context context, @Nullable String name) { int resId = getResourceDrawableId(context, name); return resId > 0 ? new Uri.Builder() - .scheme(LOCAL_RESOURCE_SCHEME) + .scheme(UriUtil.LOCAL_RESOURCE_SCHEME) .path(String.valueOf(resId)) .build() : Uri.EMPTY; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/BUCK deleted file mode 100644 index baf75d4f6..000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/BUCK +++ /dev/null @@ -1,17 +0,0 @@ -include_defs('//ReactAndroid/DEFS') - -android_library( - name = 'imagehelper', - srcs = glob(['*.java']), - deps = [ - react_native_dep('third-party/java/infer-annotations:infer-annotations'), - react_native_dep('third-party/java/jsr-305:jsr-305'), - ], - visibility = [ - 'PUBLIC', - ], -) - -project_config( - src_target = ':imagehelper', -) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK index bd050607d..eb663b0fa 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK @@ -12,7 +12,6 @@ android_library( react_native_target('java/com/facebook/react/modules/core:core'), react_native_target('java/com/facebook/react/uimanager/annotations:annotations'), react_native_target('java/com/facebook/react/uimanager:uimanager'), - react_native_target('java/com/facebook/react/views/imagehelper:imagehelper'), react_native_target('java/com/facebook/react/views/text:text'), react_native_target('java/com/facebook/react/views/view:view'), ], diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index ebb826444..61c4cb1f4 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -43,7 +43,6 @@ import com.facebook.react.uimanager.ViewDefaults; import com.facebook.react.uimanager.ViewProps; import com.facebook.react.uimanager.annotations.ReactProp; import com.facebook.react.uimanager.events.EventDispatcher; -import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper; import com.facebook.react.views.text.DefaultStyleValuesUtil; import com.facebook.react.views.text.ReactTextUpdate; import com.facebook.react.views.text.TextInlineImageSpan; @@ -67,7 +66,7 @@ public class ReactTextInputManager extends BaseViewManager