Create UIManager interface and extract common classes in uimanager/common

Reviewed By: achen1

Differential Revision: D7102674

fbshipit-source-id: e14b6782ad102ec1c3d37988df4bbd4190511f09
This commit is contained in:
David Vacca
2018-03-01 10:24:12 -08:00
committed by Facebook Github Bot
parent b181b7797f
commit 6b45fb2cb1
19 changed files with 69 additions and 71 deletions

View File

@@ -27,5 +27,6 @@ rn_android_library(
react_native_target("java/com/facebook/debug/holder:holder"),
react_native_target("java/com/facebook/react/common:common"),
react_native_target("java/com/facebook/react/module/model:model"),
react_native_target("java/com/facebook/react/uimanager/common:common"),
] + ([react_native_target("jni/react/jni:jni")] if not IS_OSS_BUILD else []),
)

View File

@@ -9,6 +9,6 @@ public interface BridgeListener {
* Called right after the RN Bridge is initialized
* @param catalystInstance {@link CatalystInstance} bridge
*/
void onBridgeStarted(CatalystInstance catalystInstance);
void onBridgeStarted(ReactApplicationContext reactApplicationContext, CatalystInstance catalystInstance);
}

View File

@@ -98,4 +98,8 @@ public interface CatalystInstance
* synchronized(jsContext) { nativeThingNeedingJsContext(jsContext.get()); }
*/
JavaScriptContextHolder getJavaScriptContextHolder();
<T extends UIManager> void setFabricUIManager(T fabricUIManager);
<T extends UIManager> T getFabricUIManager();
}

View File

@@ -85,6 +85,7 @@ public class CatalystInstanceImpl implements CatalystInstance {
private volatile boolean mAcceptCalls = false;
private boolean mJSBundleHasLoaded;
private UIManager mFabricUIManager;
private @Nullable String mSourceURL;
private JavaScriptContextHolder mJavaScriptContextHolder;
@@ -98,8 +99,7 @@ public class CatalystInstanceImpl implements CatalystInstance {
final JavaScriptExecutor jsExecutor,
final NativeModuleRegistry nativeModuleRegistry,
final JSBundleLoader jsBundleLoader,
NativeModuleCallExceptionHandler nativeModuleCallExceptionHandler,
final BridgeListener bridgeListener) {
NativeModuleCallExceptionHandler nativeModuleCallExceptionHandler) {
Log.d(ReactConstants.TAG, "Initializing React Xplat Bridge.");
mHybridData = initHybrid();
@@ -125,9 +125,6 @@ public class CatalystInstanceImpl implements CatalystInstance {
Log.d(ReactConstants.TAG, "Initializing React Xplat Bridge after initializeBridge");
mJavaScriptContextHolder = new JavaScriptContextHolder(getJavaScriptContext());
if (bridgeListener != null) {
bridgeListener.onBridgeStarted(this);
}
}
private static class BridgeCallback implements ReactCallback {
@@ -456,6 +453,14 @@ public class CatalystInstanceImpl implements CatalystInstance {
return mJavaScriptContextHolder;
}
public UIManager getFabricUIManager() {
return mFabricUIManager;
}
public void setFabricUIManager(UIManager fabricUIManager) {
mFabricUIManager = fabricUIManager;
}
private native long getJavaScriptContext();
private void incrementPendingJSCalls() {
@@ -555,7 +560,6 @@ public class CatalystInstanceImpl implements CatalystInstance {
private @Nullable NativeModuleRegistry mRegistry;
private @Nullable JavaScriptExecutor mJSExecutor;
private @Nullable NativeModuleCallExceptionHandler mNativeModuleCallExceptionHandler;
private @Nullable BridgeListener mBridgeListener;
public Builder setReactQueueConfigurationSpec(
@@ -585,20 +589,13 @@ public class CatalystInstanceImpl implements CatalystInstance {
return this;
}
public Builder setBridgeListener(
BridgeListener listener) {
mBridgeListener = listener;
return this;
}
public CatalystInstanceImpl build() {
return new CatalystInstanceImpl(
Assertions.assertNotNull(mReactQueueConfigurationSpec),
Assertions.assertNotNull(mJSExecutor),
Assertions.assertNotNull(mRegistry),
Assertions.assertNotNull(mJSBundleLoader),
Assertions.assertNotNull(mNativeModuleCallExceptionHandler),
mBridgeListener);
Assertions.assertNotNull(mNativeModuleCallExceptionHandler));
}
}
}

View File

@@ -0,0 +1,13 @@
package com.facebook.react.bridge;
import com.facebook.react.uimanager.common.MeasureSpecProvider;
import com.facebook.react.uimanager.common.SizeMonitoringFrameLayout;
public interface UIManager {
/**
* Registers a new root view.
*/
<T extends SizeMonitoringFrameLayout & MeasureSpecProvider> int addRootView(final T rootView);
}