From cc3d45d2e9cc701604d27714103cbee49171bcfa Mon Sep 17 00:00:00 2001 From: David Vacca Date: Mon, 19 Mar 2018 18:21:43 -0700 Subject: [PATCH] Add logging to debug Fabric diffing algorithm Reviewed By: achen1 Differential Revision: D7319185 fbshipit-source-id: fe47c21db5e1415aebe806f0d74b1f65f667a397 --- .../facebook/react/fabric/FabricReconciler.java | 16 +++++++++++++++- .../facebook/react/fabric/FabricUIManager.java | 13 ++++++++++++- .../facebook/react/uimanager/ViewAtIndex.java | 5 +++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricReconciler.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricReconciler.java index a4666759c..d60cfdaed 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricReconciler.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricReconciler.java @@ -7,10 +7,12 @@ package com.facebook.react.fabric; +import android.util.Log; import com.facebook.react.common.ArrayUtils; import com.facebook.react.uimanager.ReactShadowNode; import com.facebook.react.uimanager.UIViewOperationQueue; import com.facebook.react.uimanager.ViewAtIndex; +import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.LinkedList; @@ -20,6 +22,9 @@ import javax.annotation.Nullable; public class FabricReconciler { + private static final String TAG = FabricReconciler.class.getSimpleName(); + private static final boolean DEBUG = true; + private UIViewOperationQueue uiViewOperationQueue; public FabricReconciler(UIViewOperationQueue uiViewOperationQueue) { @@ -101,8 +106,17 @@ public class FabricReconciler { } } + int[] tagsToDeleteArray = ArrayUtils.copyListToArray(tagsToDelete); + if (DEBUG) { + Log.d( + TAG, + "manageChildren.enqueueManageChildren parent: " + parent.getReactTag() + + "\n\tIndices2Remove: " + Arrays.toString(indicesToRemove) + + "\n\tViews2Add: " + Arrays.toString(viewsToAdd) + + "\n\tTags2Delete: " + Arrays.toString(tagsToDeleteArray)); + } uiViewOperationQueue.enqueueManageChildren( - parent.getReactTag(), indicesToRemove, viewsToAdd, ArrayUtils.copyListToArray(tagsToDelete)); + parent.getReactTag(), indicesToRemove, viewsToAdd, tagsToDeleteArray); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index 4820e8496..8fd0dd706 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -42,7 +42,8 @@ import javax.annotation.Nullable; @SuppressWarnings("unused") // used from JNI public class FabricUIManager implements UIManager { - private static final String TAG = FabricUIManager.class.toString(); + private static final String TAG = FabricUIManager.class.getSimpleName(); + private static final boolean DEBUG = true; private final RootShadowNodeRegistry mRootShadowNodeRegistry = new RootShadowNodeRegistry(); private final ReactApplicationContext mReactApplicationContext; private final ViewManagerRegistry mViewManagerRegistry; @@ -225,9 +226,19 @@ public class FabricUIManager implements UIManager { rootNode = calculateDiffingAndCreateNewRootNode(rootNode, childList); + if (DEBUG) { + Log.d(TAG, "ReactShadowNodeHierarchy after diffing: " + rootNode.getHierarchyInfo()); + } + notifyOnBeforeLayoutRecursive(rootNode); rootNode.calculateLayout(); + if (DEBUG) { + Log.d( + TAG, + "ReactShadowNodeHierarchy after calculate Layout: " + rootNode.getHierarchyInfo()); + } + applyUpdatesRecursive(rootNode, 0, 0); mUIViewOperationQueue.dispatchViewUpdates( mCurrentBatch++, System.currentTimeMillis(), System.currentTimeMillis()); diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java index 6000e0554..ef2a914d3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java @@ -28,4 +28,9 @@ public class ViewAtIndex { mTag = tag; mIndex = index; } + + @Override + public String toString() { + return "[" + mIndex + ", " + mTag + "]"; + } }