diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java index 413afbedab8..8dfa44b3eee 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java @@ -43,4 +43,14 @@ import com.facebook.react.bridge.ReadableMap; } } } + + @Override + public String prettyPrint() { + return "AdditionAnimatedNode[" + + mTag + + "]: input nodes: " + + (mInputNodes != null ? mInputNodes.toString() : "null") + + " - super: " + + super.prettyPrint(); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNode.java index 15ef616dd65..cf053525317 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNode.java @@ -57,4 +57,20 @@ import java.util.List; * it can be used to calculate node's value. */ public void update() {} + + /** + * Pretty-printer for the AnimatedNode. Only called in production pre-crash for debug diagnostics. + */ + public abstract String prettyPrint(); + + public String prettyPrintWithChildren() { + String children = ""; + if (mChildren != null && mChildren.size() > 0) { + for (AnimatedNode child : mChildren) { + children += " " + child.mTag; + } + } + + return prettyPrint() + (children.length() > 0 ? " children: " + children : ""); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/DiffClampAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/DiffClampAnimatedNode.java index 8d253e7cb49..3c53a920a47 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/DiffClampAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/DiffClampAnimatedNode.java @@ -46,4 +46,19 @@ import com.facebook.react.bridge.ReadableMap; return ((ValueAnimatedNode) animatedNode).getValue(); } + + public String prettyPrint() { + return "DiffClampAnimatedNode[" + + mTag + + "]: InputNodeTag: " + + mInputNodeTag + + " min: " + + mMin + + " max: " + + mMax + + " lastValue: " + + mLastValue + + " super: " + + super.prettyPrint(); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/DivisionAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/DivisionAnimatedNode.java index 550073f7924..51274fffeee 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/DivisionAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/DivisionAnimatedNode.java @@ -51,4 +51,14 @@ import com.facebook.react.bridge.ReadableMap; } } } + + @Override + public String prettyPrint() { + return "DivisionAnimatedNode[" + + mTag + + "]: input nodes: " + + (mInputNodes != null ? mInputNodes.toString() : "null") + + " - super: " + + super.prettyPrint(); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/InterpolationAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/InterpolationAnimatedNode.java index 8ee5c109bac..89962bb683a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/InterpolationAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/InterpolationAnimatedNode.java @@ -249,4 +249,8 @@ import java.util.regex.Pattern; } } } + + public String prettyPrint() { + return "InterpolationAnimatedNode[" + mTag + "] super: " + super.prettyPrint(); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/ModulusAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/ModulusAnimatedNode.java index 7834ae1d80b..45c9848925b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/ModulusAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/ModulusAnimatedNode.java @@ -34,4 +34,15 @@ import com.facebook.react.bridge.ReadableMap; "Illegal node ID set as an input for " + "Animated.modulus node"); } } + + public String prettyPrint() { + return "NativeAnimatedNodesManager[" + + mTag + + "] inputNode: " + + mInputNode + + " modulus: " + + mModulus + + " super: " + + super.prettyPrint(); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/MultiplicationAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/MultiplicationAnimatedNode.java index aad404597bc..f325105244d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/MultiplicationAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/MultiplicationAnimatedNode.java @@ -43,4 +43,14 @@ import com.facebook.react.bridge.ReadableMap; } } } + + @Override + public String prettyPrint() { + return "MultiplicationAnimatedNode[" + + mTag + + "]: input nodes: " + + (mInputNodes != null ? mInputNodes.toString() : "null") + + " - super: " + + super.prettyPrint(); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.java index e8f77e0dbaf..1faa05856e8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.java @@ -113,4 +113,15 @@ import java.util.Map; mUIManager.synchronouslyUpdateViewOnUIThread(mConnectedViewTag, mPropMap); } + + public String prettyPrint() { + return "PropsAnimatedNode[" + + mTag + + "] connectedViewTag: " + + mConnectedViewTag + + " mPropNodeMapping: " + + (mPropNodeMapping != null ? mPropNodeMapping.toString() : "null") + + " mPropMap: " + + (mPropMap != null ? mPropMap.toString() : "null"); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/StyleAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/StyleAnimatedNode.java index 41c34254589..c6f0affb9bd 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/StyleAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/StyleAnimatedNode.java @@ -49,4 +49,11 @@ import java.util.Map; } } } + + public String prettyPrint() { + return "StyleAnimatedNode[" + + mTag + + "] mPropMapping: " + + (mPropMapping != null ? mPropMapping.toString() : "null"); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/SubtractionAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/SubtractionAnimatedNode.java index ab09ca3486f..9ac939d5043 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/SubtractionAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/SubtractionAnimatedNode.java @@ -47,4 +47,14 @@ import com.facebook.react.bridge.ReadableMap; } } } + + @Override + public String prettyPrint() { + return "SubtractionAnimatedNode[" + + mTag + + "]: input nodes: " + + (mInputNodes != null ? mInputNodes.toString() : "null") + + " - super: " + + super.prettyPrint(); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.java index 7af8acbb874..dd204088042 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.java @@ -33,4 +33,18 @@ import com.facebook.react.bridge.ReadableMap; mNativeAnimatedNodesManager.startAnimatingNode( mAnimationId, mValueNode, mAnimationConfig, null); } + + @Override + public String prettyPrint() { + return "TrackingAnimatedNode[" + + mTag + + "]: animationID: " + + mAnimationId + + " toValueNode: " + + mToValueNode + + " valueNode: " + + mValueNode + + " animationConfig: " + + mAnimationConfig; + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/TransformAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/TransformAnimatedNode.java index 22b308d67d7..0f5317a1e95 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/TransformAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/TransformAnimatedNode.java @@ -82,4 +82,12 @@ import java.util.List; propsMap.putArray("transform", JavaOnlyArray.from(transforms)); } + + @Override + public String prettyPrint() { + return "TransformAnimatedNode[" + + mTag + + "]: mTransformConfigs: " + + (mTransformConfigs != null ? mTransformConfigs.toString() : "null"); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/ValueAnimatedNode.java b/ReactAndroid/src/main/java/com/facebook/react/animated/ValueAnimatedNode.java index 8567c432e33..15acef1aa25 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/ValueAnimatedNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/ValueAnimatedNode.java @@ -60,4 +60,8 @@ import com.facebook.react.bridge.ReadableMap; public void setValueListener(@Nullable AnimatedNodeValueListener listener) { mValueListener = listener; } + + public String prettyPrint() { + return "ValueAnimatedNode[" + mTag + "]: value: " + mValue + " offset: " + mOffset; + } }