diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java index fd3448e8661..aceed54ef7b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java @@ -87,7 +87,7 @@ public class UIImplementation { minTimeLeftInFrameForNonBatchedOperationMs); } - private UIImplementation( + UIImplementation( ReactApplicationContext reactContext, ViewManagerRegistry viewManagers, EventDispatcher eventDispatcher, diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementationProvider.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementationProvider.java index 379bf971619..e5256d04619 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementationProvider.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementationProvider.java @@ -39,4 +39,16 @@ public class UIImplementationProvider { eventDispatcher, minTimeLeftInFrameForNonBatchedOperationMs); } + + UIImplementation createUIImplementation( + ReactApplicationContext reactContext, + ViewManagerRegistry viewManagerRegistry, + EventDispatcher eventDispatcher, + int minTimeLeftInFrameForNonBatchedOperationMs) { + return new UIImplementation( + reactContext, + viewManagerRegistry, + eventDispatcher, + minTimeLeftInFrameForNonBatchedOperationMs); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index bd2a3355522..ad289196d93 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -34,6 +34,7 @@ import com.facebook.react.bridge.UIManager; import com.facebook.react.bridge.WritableMap; import com.facebook.react.common.MapBuilder; import com.facebook.react.common.ReactConstants; +import com.facebook.react.common.annotations.VisibleForTesting; import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.uimanager.common.MeasureSpecProvider; import com.facebook.react.uimanager.common.SizeMonitoringFrameLayout; @@ -112,6 +113,7 @@ public class UIManagerModule extends ReactContextBaseJavaModule private final EventDispatcher mEventDispatcher; private final Map mModuleConstants; private final Map mCustomDirectEvents; + private final ViewManagerRegistry mViewManagerRegistry; private final UIImplementation mUIImplementation; private final MemoryTrimCallback mMemoryTrimCallback = new MemoryTrimCallback(); private final List mListeners = new ArrayList<>(); @@ -155,10 +157,11 @@ public class UIManagerModule extends ReactContextBaseJavaModule mEventDispatcher = new EventDispatcher(reactContext); mModuleConstants = createConstants(viewManagerResolver); mCustomDirectEvents = UIManagerModuleConstants.getDirectEventTypeConstants(); + mViewManagerRegistry = new ViewManagerRegistry(viewManagerResolver); mUIImplementation = uiImplementationProvider.createUIImplementation( reactContext, - viewManagerResolver, + mViewManagerRegistry, mEventDispatcher, minTimeLeftInFrameForNonBatchedOperationMs); @@ -176,10 +179,11 @@ public class UIManagerModule extends ReactContextBaseJavaModule mEventDispatcher = new EventDispatcher(reactContext); mCustomDirectEvents = MapBuilder.newHashMap(); mModuleConstants = createConstants(viewManagersList, null, mCustomDirectEvents); + mViewManagerRegistry = new ViewManagerRegistry(viewManagersList); mUIImplementation = uiImplementationProvider.createUIImplementation( reactContext, - viewManagersList, + mViewManagerRegistry, mEventDispatcher, minTimeLeftInFrameForNonBatchedOperationMs); @@ -237,6 +241,15 @@ public class UIManagerModule extends ReactContextBaseJavaModule ViewManagerPropertyUpdater.clear(); } + /** + * This method is intended to reuse the {@link ViewManagerRegistry} with FabricUIManager. + * Do not use this method as this will be removed in the near future. + */ + @Deprecated + public ViewManagerRegistry getViewManagerRegistry_DO_NOT_USE() { + return mViewManagerRegistry; + } + private static Map createConstants(ViewManagerResolver viewManagerResolver) { ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_CONSTANTS_START); SystraceMessage.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "CreateUIManagerConstants")