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
This commit is contained in:
Denis Koroskin 2016-02-24 13:10:29 -08:00 committed by Ahmed El-Helw
parent 44b6200392
commit bb04967986
2 changed files with 16 additions and 5 deletions

View File

@ -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(

View File

@ -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) {