Refactor isFabric() -> getUIManagerType()
Reviewed By: achen1 Differential Revision: D7897855 fbshipit-source-id: 6b52d989187124c81ab8ee4a732703b46b05dc65
This commit is contained in:
Родитель
3ac914478d
Коммит
a83cddf037
|
@ -25,6 +25,7 @@ import static com.facebook.react.bridge.ReactMarkerConstants.REACT_CONTEXT_THREA
|
||||||
import static com.facebook.react.bridge.ReactMarkerConstants.REACT_CONTEXT_THREAD_START;
|
import static com.facebook.react.bridge.ReactMarkerConstants.REACT_CONTEXT_THREAD_START;
|
||||||
import static com.facebook.react.bridge.ReactMarkerConstants.SETUP_REACT_CONTEXT_END;
|
import static com.facebook.react.bridge.ReactMarkerConstants.SETUP_REACT_CONTEXT_END;
|
||||||
import static com.facebook.react.bridge.ReactMarkerConstants.SETUP_REACT_CONTEXT_START;
|
import static com.facebook.react.bridge.ReactMarkerConstants.SETUP_REACT_CONTEXT_START;
|
||||||
|
import static com.facebook.react.uimanager.common.UIManagerType.FABRIC;
|
||||||
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_APPS;
|
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_APPS;
|
||||||
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE;
|
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE;
|
||||||
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JS_VM_CALLS;
|
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JS_VM_CALLS;
|
||||||
|
@ -1011,7 +1012,7 @@ public class ReactInstanceManager {
|
||||||
CatalystInstance catalystInstance) {
|
CatalystInstance catalystInstance) {
|
||||||
Log.d(ReactConstants.TAG, "ReactInstanceManager.attachRootViewToInstance()");
|
Log.d(ReactConstants.TAG, "ReactInstanceManager.attachRootViewToInstance()");
|
||||||
Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "attachRootViewToInstance");
|
Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "attachRootViewToInstance");
|
||||||
UIManager uiManagerModule = UIManagerHelper.getUIManager(mCurrentReactContext, rootView.isFabric());
|
UIManager uiManagerModule = UIManagerHelper.getUIManager(mCurrentReactContext, rootView.getUIManagerType());
|
||||||
final int rootTag = uiManagerModule.addRootView(rootView);
|
final int rootTag = uiManagerModule.addRootView(rootView);
|
||||||
rootView.setRootViewTag(rootTag);
|
rootView.setRootViewTag(rootTag);
|
||||||
rootView.invokeJSEntryPoint();
|
rootView.invokeJSEntryPoint();
|
||||||
|
@ -1037,7 +1038,7 @@ public class ReactInstanceManager {
|
||||||
CatalystInstance catalystInstance) {
|
CatalystInstance catalystInstance) {
|
||||||
Log.d(ReactConstants.TAG, "ReactInstanceManager.detachViewFromInstance()");
|
Log.d(ReactConstants.TAG, "ReactInstanceManager.detachViewFromInstance()");
|
||||||
UiThreadUtil.assertOnUiThread();
|
UiThreadUtil.assertOnUiThread();
|
||||||
if (rootView.isFabric()) {
|
if (rootView.getUIManagerType() == FABRIC) {
|
||||||
catalystInstance.getJSModule(ReactFabric.class)
|
catalystInstance.getJSModule(ReactFabric.class)
|
||||||
.unmountComponentAtNode(rootView.getId());
|
.unmountComponentAtNode(rootView.getId());
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
package com.facebook.react;
|
package com.facebook.react;
|
||||||
|
|
||||||
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE;
|
import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE;
|
||||||
|
import static com.facebook.react.uimanager.common.UIManagerType.FABRIC;
|
||||||
|
import static com.facebook.react.uimanager.common.UIManagerType.DEFAULT;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
|
@ -50,6 +52,7 @@ import com.facebook.react.uimanager.common.MeasureSpecProvider;
|
||||||
import com.facebook.react.uimanager.common.SizeMonitoringFrameLayout;
|
import com.facebook.react.uimanager.common.SizeMonitoringFrameLayout;
|
||||||
import com.facebook.react.uimanager.events.EventDispatcher;
|
import com.facebook.react.uimanager.events.EventDispatcher;
|
||||||
import com.facebook.systrace.Systrace;
|
import com.facebook.systrace.Systrace;
|
||||||
|
import com.facebook.react.uimanager.common.UIManagerType;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -91,7 +94,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout
|
||||||
private int mWidthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
|
private int mWidthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
|
||||||
private int mHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
|
private int mHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
|
||||||
private @Nullable Runnable mJSEntryPoint;
|
private @Nullable Runnable mJSEntryPoint;
|
||||||
private boolean mIsFabric = false;
|
private @UIManagerType int mUIManagerType = DEFAULT;
|
||||||
|
|
||||||
public ReactRootView(Context context) {
|
public ReactRootView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
|
@ -404,7 +407,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout
|
||||||
@Override
|
@Override
|
||||||
public void runGuarded() {
|
public void runGuarded() {
|
||||||
UIManagerHelper
|
UIManagerHelper
|
||||||
.getUIManager(reactApplicationContext, isFabric())
|
.getUIManager(reactApplicationContext, getUIManagerType())
|
||||||
.updateRootLayoutSpecs(getRootViewTag(), widthMeasureSpec, heightMeasureSpec);
|
.updateRootLayoutSpecs(getRootViewTag(), widthMeasureSpec, heightMeasureSpec);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -507,7 +510,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout
|
||||||
if (appProperties != null) {
|
if (appProperties != null) {
|
||||||
appParams.putMap("initialProps", Arguments.fromBundle(appProperties));
|
appParams.putMap("initialProps", Arguments.fromBundle(appProperties));
|
||||||
}
|
}
|
||||||
if (isFabric()) {
|
if (getUIManagerType() == FABRIC) {
|
||||||
appParams.putBoolean("fabric", true);
|
appParams.putBoolean("fabric", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -584,11 +587,11 @@ public class ReactRootView extends SizeMonitoringFrameLayout
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIsFabric(boolean isFabric) {
|
public void setIsFabric(boolean isFabric) {
|
||||||
mIsFabric = isFabric;
|
mUIManagerType = isFabric ? FABRIC : DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isFabric() {
|
public @UIManagerType int getUIManagerType() {
|
||||||
return mIsFabric;
|
return mUIManagerType;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|
|
@ -26,5 +26,5 @@ public interface UIManager extends JSIModule {
|
||||||
* @param commandId {@link int} command id
|
* @param commandId {@link int} command id
|
||||||
* @param commandArgs {@link ReadableArray} parameters associated with the command
|
* @param commandArgs {@link ReadableArray} parameters associated with the command
|
||||||
*/
|
*/
|
||||||
void dispatchViewManagerCommand(int reactTag, int commandId, @Nullable ReadableArray commandArgs);
|
void dispatchCommand(int reactTag, int commandId, @Nullable ReadableArray commandArgs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,8 +283,7 @@ public class FabricUIManager implements UIManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
public void dispatchCommand(int reactTag, int commandId, @Nullable ReadableArray commandArgs) {
|
||||||
public void dispatchViewManagerCommand(int reactTag, int commandId, @Nullable ReadableArray commandArgs) {
|
|
||||||
mUIViewOperationQueue.enqueueDispatchCommand(reactTag, commandId, commandArgs);
|
mUIViewOperationQueue.enqueueDispatchCommand(reactTag, commandId, commandArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package com.facebook.react.uimanager;
|
package com.facebook.react.uimanager;
|
||||||
|
|
||||||
import static com.facebook.react.uimanager.common.ViewType.FABRIC;
|
import static com.facebook.react.uimanager.common.UIManagerType.FABRIC;
|
||||||
import static com.facebook.react.uimanager.common.ViewUtil.getViewType;
|
import static com.facebook.react.uimanager.common.UIManagerType.DEFAULT;
|
||||||
|
import static com.facebook.react.uimanager.common.ViewUtil.getUIManagerType;
|
||||||
|
|
||||||
import com.facebook.react.bridge.CatalystInstance;
|
import com.facebook.react.bridge.CatalystInstance;
|
||||||
import com.facebook.react.bridge.ReactContext;
|
import com.facebook.react.bridge.ReactContext;
|
||||||
import com.facebook.react.bridge.UIManager;
|
import com.facebook.react.bridge.UIManager;
|
||||||
|
import com.facebook.react.uimanager.common.UIManagerType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper class for {@link UIManager}.
|
* Helper class for {@link UIManager}.
|
||||||
|
@ -15,18 +17,27 @@ public class UIManagerHelper {
|
||||||
/**
|
/**
|
||||||
* @return a {@link UIManager} that can handle the react tag received by parameter.
|
* @return a {@link UIManager} that can handle the react tag received by parameter.
|
||||||
*/
|
*/
|
||||||
public static UIManager getUIManager(ReactContext context, int reactTag) {
|
public static UIManager getUIManagerForReactTag(ReactContext context, int reactTag) {
|
||||||
return getUIManager(context, getViewType(reactTag) == FABRIC);
|
return getUIManager(context, getUIManagerType(reactTag));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return a {@link UIManager} that can handle the react tag received by parameter.
|
* @return a {@link UIManager} that can handle the react tag received by parameter.
|
||||||
*/
|
*/
|
||||||
public static UIManager getUIManager(ReactContext context, boolean isFabric) {
|
public static UIManager getUIManager(ReactContext context, @UIManagerType int uiManagerType) {
|
||||||
CatalystInstance catalystInstance = context.getCatalystInstance();
|
CatalystInstance catalystInstance = context.getCatalystInstance();
|
||||||
return isFabric ?
|
UIManager uiManager;
|
||||||
catalystInstance.getJSIModule(UIManager.class) :
|
switch (uiManagerType) {
|
||||||
catalystInstance.getNativeModule(UIManagerModule.class);
|
case FABRIC:
|
||||||
|
uiManager = catalystInstance.getJSIModule(UIManager.class);
|
||||||
|
break;
|
||||||
|
case DEFAULT:
|
||||||
|
uiManager = catalystInstance.getNativeModule(UIManagerModule.class);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Invalid UIManagerType: " + uiManagerType);
|
||||||
|
}
|
||||||
|
return uiManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,7 @@ package com.facebook.react.uimanager;
|
||||||
import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_MODULE_CONSTANTS_END;
|
import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_MODULE_CONSTANTS_END;
|
||||||
import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_MODULE_CONSTANTS_START;
|
import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_MODULE_CONSTANTS_START;
|
||||||
|
|
||||||
import static com.facebook.react.uimanager.common.ViewType.FABRIC;
|
import static com.facebook.react.uimanager.common.UIManagerType.DEFAULT;
|
||||||
import static com.facebook.react.uimanager.common.ViewType.PAPER;
|
|
||||||
|
|
||||||
import android.content.ComponentCallbacks2;
|
import android.content.ComponentCallbacks2;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
@ -586,19 +585,19 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements
|
||||||
mUIImplementation.clearJSResponder();
|
mUIImplementation.clearJSResponder();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
public void dispatchViewManagerCommand(int reactTag, int commandId, @Nullable ReadableArray commandArgs) {
|
public void dispatchViewManagerCommand(int reactTag, int commandId, @Nullable ReadableArray commandArgs) {
|
||||||
//TODO: this is a temporary approach to support ViewManagerCommands in Fabric until
|
//TODO: this is a temporary approach to support ViewManagerCommands in Fabric until
|
||||||
// the dispatchViewManagerCommand() method is supported by Fabric JS API.
|
// the dispatchViewManagerCommand() method is supported by Fabric JS API.
|
||||||
if (ViewUtil.getViewType(reactTag) == FABRIC) {
|
UIManagerHelper.getUIManager(getReactApplicationContext(), ViewUtil.getUIManagerType(reactTag))
|
||||||
UIManagerHelper.getUIManager(getReactApplicationContext(), true)
|
.dispatchCommand(reactTag, commandId, commandArgs);
|
||||||
.dispatchViewManagerCommand(reactTag, commandId, commandArgs);
|
|
||||||
} else {
|
|
||||||
mUIImplementation.dispatchViewManagerCommand(reactTag, commandId, commandArgs);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCommand(int reactTag, int commandId, @Nullable ReadableArray commandArgs) {
|
||||||
|
mUIImplementation.dispatchViewManagerCommand(reactTag, commandId, commandArgs);
|
||||||
|
}
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
public void playTouchSound() {
|
public void playTouchSound() {
|
||||||
AudioManager audioManager = (AudioManager) getReactApplicationContext().getSystemService(Context.AUDIO_SERVICE);
|
AudioManager audioManager = (AudioManager) getReactApplicationContext().getSystemService(Context.AUDIO_SERVICE);
|
||||||
|
|
|
@ -6,16 +6,16 @@
|
||||||
*/
|
*/
|
||||||
package com.facebook.react.uimanager.common;
|
package com.facebook.react.uimanager.common;
|
||||||
|
|
||||||
import static com.facebook.react.uimanager.common.ViewType.FABRIC;
|
import static com.facebook.react.uimanager.common.UIManagerType.FABRIC;
|
||||||
import static com.facebook.react.uimanager.common.ViewType.PAPER;
|
import static com.facebook.react.uimanager.common.UIManagerType.DEFAULT;
|
||||||
import static java.lang.annotation.RetentionPolicy.SOURCE;
|
import static java.lang.annotation.RetentionPolicy.SOURCE;
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import android.support.annotation.IntDef;
|
import android.support.annotation.IntDef;
|
||||||
|
|
||||||
@Retention(SOURCE)
|
@Retention(SOURCE)
|
||||||
@IntDef({PAPER, FABRIC})
|
@IntDef({DEFAULT, FABRIC})
|
||||||
public @interface ViewType {
|
public @interface UIManagerType {
|
||||||
int PAPER = 1;
|
int DEFAULT = 1;
|
||||||
int FABRIC = 2;
|
int FABRIC = 2;
|
||||||
}
|
}
|
|
@ -7,23 +7,22 @@
|
||||||
|
|
||||||
package com.facebook.react.uimanager.common;
|
package com.facebook.react.uimanager.common;
|
||||||
|
|
||||||
import static com.facebook.react.uimanager.common.ViewType.FABRIC;
|
import static com.facebook.react.uimanager.common.UIManagerType.FABRIC;
|
||||||
import static com.facebook.react.uimanager.common.ViewType.PAPER;
|
import static com.facebook.react.uimanager.common.UIManagerType.DEFAULT;
|
||||||
|
|
||||||
public class ViewUtil {
|
public class ViewUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Counter for uniquely identifying views.
|
* Counter for uniquely identifying views.
|
||||||
* - % 10 === 1 means it is a rootTag.
|
|
||||||
* - % 2 === 0 means it is a Fabric tag.
|
* - % 2 === 0 means it is a Fabric tag.
|
||||||
* See https://github.com/facebook/react/pull/12587
|
* See https://github.com/facebook/react/pull/12587
|
||||||
*
|
*
|
||||||
* @param reactTag {@link }
|
* @param reactTag {@link }
|
||||||
*/
|
*/
|
||||||
@ViewType
|
@UIManagerType
|
||||||
public static int getViewType(int reactTag) {
|
public static int getUIManagerType(int reactTag) {
|
||||||
if (reactTag % 2 == 0) return FABRIC;
|
if (reactTag % 2 == 0) return FABRIC;
|
||||||
return PAPER;
|
return DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import com.facebook.react.bridge.UiThreadUtil;
|
||||||
import com.facebook.react.common.MapBuilder;
|
import com.facebook.react.common.MapBuilder;
|
||||||
import com.facebook.react.modules.core.ChoreographerCompat;
|
import com.facebook.react.modules.core.ChoreographerCompat;
|
||||||
import com.facebook.react.modules.core.ReactChoreographer;
|
import com.facebook.react.modules.core.ReactChoreographer;
|
||||||
|
import com.facebook.react.uimanager.common.UIManagerType;
|
||||||
import com.facebook.systrace.Systrace;
|
import com.facebook.systrace.Systrace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Загрузка…
Ссылка в новой задаче