mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Refactor initialization of Fabric to avoid loading UIManagerModule
Summary:
This diff refactors the intialization of Fabric in order to avoid loading UIManagerModule as part of the creation of FabricJSIModuleProvider.
One caveat is that now we are not taking into consideration the flag mLazyViewManagersEnabled
```
master/xplat/js/react-native-github/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java177
if (mLazyViewManagersEnabled) {
```
As a side effect of this diff view managers will be initialized twice if the user has fabric and paper enabled
This diff was originally backed out in D25739854 (https://github.com/facebook/react-native/commit/4984c1e525e310f15c7d89230fdb2fa8fea91f05) because it produced a couple of bugs:
- https://fb.workplace.com/groups/rn.support/permalink/4917641074951135/
- https://fb.workplace.com/groups/rn.support/permalink/4918163014898941/
These bugs are fixed by D25667987 (https://github.com/facebook/react-native/commit/2e631471092090e743245377742166ecae1d7e26).
changelog: [internal] internal
Reviewed By: JoshuaGross
Differential Revision: D25746024
fbshipit-source-id: 3d12d29973a12b1edfea75f4dd954790f835e9bd
This commit is contained in:
committed by
Facebook GitHub Bot
parent
2e63147109
commit
d3a3ce857e
@@ -8,7 +8,6 @@
|
||||
package com.facebook.react.fabric;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import com.facebook.infer.annotation.Assertions;
|
||||
import com.facebook.react.bridge.JSIModuleProvider;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.UIManager;
|
||||
@@ -26,9 +25,10 @@ import com.facebook.react.fabric.mounting.mountitems.MountItem;
|
||||
import com.facebook.react.fabric.mounting.mountitems.PreAllocateViewMountItem;
|
||||
import com.facebook.react.fabric.mounting.mountitems.SendAccessibilityEvent;
|
||||
import com.facebook.react.uimanager.StateWrapper;
|
||||
import com.facebook.react.uimanager.UIManagerModule;
|
||||
import com.facebook.react.uimanager.ViewManagerRegistry;
|
||||
import com.facebook.react.uimanager.events.BatchEventDispatchedListener;
|
||||
import com.facebook.react.uimanager.events.EventDispatcher;
|
||||
import com.facebook.react.uimanager.events.EventDispatcherImpl;
|
||||
import com.facebook.systrace.Systrace;
|
||||
|
||||
public class FabricJSIModuleProvider implements JSIModuleProvider<UIManager> {
|
||||
@@ -36,14 +36,17 @@ public class FabricJSIModuleProvider implements JSIModuleProvider<UIManager> {
|
||||
@NonNull private final ReactApplicationContext mReactApplicationContext;
|
||||
@NonNull private final ComponentFactory mComponentFactory;
|
||||
@NonNull private final ReactNativeConfig mConfig;
|
||||
@NonNull private final ViewManagerRegistry mViewManagerRegistry;
|
||||
|
||||
public FabricJSIModuleProvider(
|
||||
@NonNull ReactApplicationContext reactApplicationContext,
|
||||
@NonNull ComponentFactory componentFactory,
|
||||
@NonNull ReactNativeConfig config) {
|
||||
@NonNull ReactNativeConfig config,
|
||||
@NonNull ViewManagerRegistry viewManagerRegistry) {
|
||||
mReactApplicationContext = reactApplicationContext;
|
||||
mComponentFactory = componentFactory;
|
||||
mConfig = config;
|
||||
mViewManagerRegistry = viewManagerRegistry;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,15 +82,10 @@ public class FabricJSIModuleProvider implements JSIModuleProvider<UIManager> {
|
||||
private FabricUIManager createUIManager(@NonNull EventBeatManager eventBeatManager) {
|
||||
Systrace.beginSection(
|
||||
Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "FabricJSIModuleProvider.createUIManager");
|
||||
UIManagerModule nativeModule =
|
||||
Assertions.assertNotNull(mReactApplicationContext.getNativeModule(UIManagerModule.class));
|
||||
EventDispatcher eventDispatcher = nativeModule.getEventDispatcher();
|
||||
EventDispatcher eventDispatcher = new EventDispatcherImpl(mReactApplicationContext);
|
||||
FabricUIManager fabricUIManager =
|
||||
new FabricUIManager(
|
||||
mReactApplicationContext,
|
||||
nativeModule.getViewManagerRegistry_DO_NOT_USE(),
|
||||
eventDispatcher,
|
||||
eventBeatManager);
|
||||
mReactApplicationContext, mViewManagerRegistry, eventDispatcher, eventBeatManager);
|
||||
|
||||
Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
|
||||
return fabricUIManager;
|
||||
|
||||
Reference in New Issue
Block a user