From bb0496798611d06e56317e2e1efe825e1adfaa31 Mon Sep 17 00:00:00 2001 From: Denis Koroskin Date: Wed, 24 Feb 2016 13:10:29 -0800 Subject: [PATCH] Split StateBuilder.ensureBackingViewIsCreated into 2 different methods Summary: There are 2 reasons why someone would call StateBuilder.ensureBackingViewIsCreated(): 1) to make sure a View is created, because we are going to use it NOW 2) make sure react styles are applied to View, which doesn't really need the View to be created immediately This diff is splitting the method into 2, without changing behavior. Difference between the methods' signatures is coming from the fact that 1) never takes styles and 2) possibly takes styles. This is a pure refactoring diff and should have no change in functionality or behavior. Reviewed By: ahmedre Differential Revision: D2916697 --- .../facebook/react/flat/FlatUIImplementation.java | 6 +++--- .../com/facebook/react/flat/StateBuilder.java | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java index 5ed100ffe..360e36e57 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java @@ -132,7 +132,7 @@ public class FlatUIImplementation extends UIImplementation { } if (node.mountsToView()) { - mStateBuilder.ensureBackingViewIsCreated(node, styles); + mStateBuilder.enqueueCreateOrUpdateView(node, styles); } } else { super.handleCreateView(cssNode, rootViewTag, styles); @@ -150,7 +150,7 @@ public class FlatUIImplementation extends UIImplementation { node.handleUpdateProperties(styles); if (node.mountsToView()) { - mStateBuilder.ensureBackingViewIsCreated(node, styles); + mStateBuilder.enqueueCreateOrUpdateView(node, styles); } } else { super.handleUpdateView(cssNode, className, styles); @@ -426,7 +426,7 @@ public class FlatUIImplementation extends UIImplementation { FlatShadowNode nonVirtualNode = (FlatShadowNode) node; nonVirtualNode.forceMountToView(); - mStateBuilder.ensureBackingViewIsCreated(nonVirtualNode, null); + mStateBuilder.ensureBackingViewIsCreated(nonVirtualNode); FlatUIViewOperationQueue operationsQueue = mStateBuilder.getOperationsQueue(); operationsQueue.enqueueSetJSResponder( diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java index 1029e19d3..1e14a747a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java @@ -121,7 +121,7 @@ import com.facebook.react.uimanager.events.EventDispatcher; mAttachDetachListeners.add(listener); } - /* package */ void ensureBackingViewIsCreated( + /* package */ void enqueueCreateOrUpdateView( FlatShadowNode node, @Nullable ReactStylesDiffMap styles) { if (node.isBackingViewCreated()) { @@ -138,6 +138,17 @@ import com.facebook.react.uimanager.events.EventDispatcher; node.signalBackingViewIsCreated(); } + /* package */ void ensureBackingViewIsCreated(FlatShadowNode node) { + if (node.isBackingViewCreated()) { + return; + } + + int tag = node.getReactTag(); + mOperationsQueue.enqueueCreateView(node.getThemedContext(), tag, node.getViewClass(), null); + + node.signalBackingViewIsCreated(); + } + /* package */ void dropView(FlatShadowNode node) { mViewsToDrop.add(node); } @@ -445,7 +456,7 @@ import com.facebook.react.uimanager.events.EventDispatcher; float bottom = top + height; if (node.mountsToView()) { - ensureBackingViewIsCreated(node, null); + ensureBackingViewIsCreated(node); addNativeChild(node); if (!parentIsAndroidView) {