mirror of
https://github.com/status-im/react-native.git
synced 2025-02-27 00:20:31 +00:00
Add InstanceHandle parameter into FabricJSC/JSI
Reviewed By: achen1 Differential Revision: D7644487 fbshipit-source-id: b49381a58a791043bf61b8ac5f065817caff7c95
This commit is contained in:
parent
16a5324ca6
commit
f44e78df55
@ -67,7 +67,7 @@ public class FabricUIManager implements UIManager {
|
||||
/** Creates a new {@link ReactShadowNode} */
|
||||
@Nullable
|
||||
public ReactShadowNode createNode(
|
||||
int reactTag, String viewName, int rootTag, ReadableNativeMap props) {
|
||||
int reactTag, String viewName, int rootTag, ReadableNativeMap props, int instanceHandle) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "createNode \n\ttag: " + reactTag +
|
||||
"\n\tviewName: " + viewName +
|
||||
|
@ -83,17 +83,16 @@ JSValueRef createNode(JSContextRef ctx, JSObjectRef function, JSObjectRef thisOb
|
||||
|
||||
static auto createNode =
|
||||
jni::findClassStatic("com/facebook/react/fabric/FabricUIManager")
|
||||
->getMethod<alias_ref<JShadowNode>(jint, jstring, jint, ReadableNativeMap::javaobject)>("createNode");
|
||||
->getMethod<alias_ref<JShadowNode>(jint, jstring, jint, ReadableNativeMap::javaobject, jint)>("createNode");
|
||||
|
||||
int reactTag = (int)JSC_JSValueToNumber(ctx, arguments[0], NULL);
|
||||
auto viewName = JSValueToJString(ctx, arguments[1]);
|
||||
int rootTag = (int)JSC_JSValueToNumber(ctx, arguments[2], NULL);
|
||||
auto props = JSC_JSValueIsNull(ctx, arguments[3]) ? local_ref<ReadableNativeMap::jhybridobject>(nullptr) :
|
||||
JSValueToReadableMapViaJSON(ctx, arguments[3]);;
|
||||
int instanceHandle = (int)JSC_JSValueToNumber(ctx, arguments[4], NULL);
|
||||
|
||||
// TODO: Retain object in arguments[4] using a weak ref.
|
||||
|
||||
auto node = createNode(manager, reactTag, viewName.get(), rootTag, props.get());
|
||||
auto node = createNode(manager, reactTag, viewName.get(), rootTag, props.get(), instanceHandle);
|
||||
|
||||
return JSC_JSObjectMake(ctx, classRef, makePlainGlobalRef(node.get()));
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ public class FabricUIManagerTest {
|
||||
private FabricUIManager mFabricUIManager;
|
||||
private ThemedReactContext mThemedReactContext;
|
||||
private int mNextReactTag;
|
||||
private int mNextInstanceHandle;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
@ -70,8 +71,10 @@ public class FabricUIManagerTest {
|
||||
new ReactRootView(RuntimeEnvironment.application.getApplicationContext());
|
||||
int rootTag = mFabricUIManager.addRootView(rootView);
|
||||
int reactTag = mNextReactTag++;
|
||||
int instanceHandle = mNextInstanceHandle++;
|
||||
String viewClass = ReactViewManager.REACT_CLASS;
|
||||
ReactShadowNode node = mFabricUIManager.createNode(reactTag, viewClass, rootTag, null);
|
||||
ReactShadowNode node =
|
||||
mFabricUIManager.createNode(reactTag, viewClass, rootTag, null, instanceHandle);
|
||||
|
||||
assertThat(reactTag).isEqualTo(node.getReactTag());
|
||||
assertThat(viewClass).isEqualTo(node.getViewClass());
|
||||
@ -89,8 +92,10 @@ public class FabricUIManagerTest {
|
||||
new ReactRootView(RuntimeEnvironment.application.getApplicationContext());
|
||||
int rootTag = mFabricUIManager.addRootView(rootView);
|
||||
int reactTag = mNextReactTag++;
|
||||
int instanceHandle = mNextInstanceHandle++;
|
||||
String viewClass = ReactViewManager.REACT_CLASS;
|
||||
ReactShadowNode node = mFabricUIManager.createNode(reactTag, viewClass, rootTag, null);
|
||||
ReactShadowNode node =
|
||||
mFabricUIManager.createNode(reactTag, viewClass, rootTag, null, instanceHandle);
|
||||
|
||||
List<ReactShadowNode> childSet = mFabricUIManager.createChildSet(rootTag);
|
||||
mFabricUIManager.appendChildToSet(childSet, node);
|
||||
@ -220,9 +225,8 @@ public class FabricUIManagerTest {
|
||||
ReactRootView rootView =
|
||||
new ReactRootView(RuntimeEnvironment.application.getApplicationContext());
|
||||
int rootTag = mFabricUIManager.addRootView(rootView);
|
||||
|
||||
ReactShadowNode text =
|
||||
mFabricUIManager.createNode(0, ReactTextViewManager.REACT_CLASS, rootTag, null);
|
||||
mFabricUIManager.createNode(0, ReactTextViewManager.REACT_CLASS, rootTag, null, mNextInstanceHandle++);
|
||||
assertThat(text.isMeasureDefined()).isTrue();
|
||||
|
||||
ReactShadowNode textCopy = text.mutableCopy();
|
||||
@ -248,13 +252,13 @@ public class FabricUIManagerTest {
|
||||
int rootTag = mFabricUIManager.addRootView(rootView);
|
||||
String viewClass = ReactViewManager.REACT_CLASS;
|
||||
|
||||
ReactShadowNode aa = mFabricUIManager.createNode(2, viewClass, rootTag, null);
|
||||
ReactShadowNode a = mFabricUIManager.createNode(3, viewClass, rootTag, null);
|
||||
ReactShadowNode aa = mFabricUIManager.createNode(2, viewClass, rootTag, null, mNextInstanceHandle++);
|
||||
ReactShadowNode a = mFabricUIManager.createNode(3, viewClass, rootTag, null, mNextInstanceHandle++);
|
||||
mFabricUIManager.appendChild(a, aa);
|
||||
ReactShadowNode bb = mFabricUIManager.createNode(4, viewClass, rootTag, null);
|
||||
ReactShadowNode b = mFabricUIManager.createNode(5, viewClass, rootTag, null);
|
||||
ReactShadowNode bb = mFabricUIManager.createNode(4, viewClass, rootTag, null, mNextInstanceHandle++);
|
||||
ReactShadowNode b = mFabricUIManager.createNode(5, viewClass, rootTag, null, mNextInstanceHandle++);
|
||||
mFabricUIManager.appendChild(b, bb);
|
||||
ReactShadowNode container = mFabricUIManager.createNode(6, viewClass, rootTag, null);
|
||||
ReactShadowNode container = mFabricUIManager.createNode(6, viewClass, rootTag, null, mNextInstanceHandle++);
|
||||
mFabricUIManager.appendChild(container, a);
|
||||
mFabricUIManager.appendChild(container, b);
|
||||
List<ReactShadowNode> childSet = mFabricUIManager.createChildSet(rootTag);
|
||||
|
Loading…
x
Reference in New Issue
Block a user