From 6d982a39ad4bc7c664db9c45ee7b3909bd7c9a3a Mon Sep 17 00:00:00 2001 From: Joe Vilches Date: Fri, 2 Feb 2024 11:00:53 -0800 Subject: [PATCH] Remove public APIs for YGNodePrint and YGConfigSetPrintTreeFlag (#1567) Summary: X-link: https://github.com/facebook/react-native/pull/42688 We are planning on overhauling NodeToString to output JSON instead of HTML for the purposes of better benchmarking and capturing trees in JSON format to benchmark later. This gives us a bit of a headache as we have to revise several build files to ensure this new library works, ensure that it is only included in certain debug builds, and deal with the benchmark <-> internal cross boundary that arises as the benchmark code (which is a separate binary) tries to interact with it. On top of it all this is really not used at all. The plan is to rip out this functionality and just put it in a separate binary that one can include if they really want to debug. That means that it cannot exist in the public API, so I am removing it here. Private internals come next Changelog: [Internal] Reviewed By: NickGerleman Differential Revision: D53137544 --- java/com/facebook/yoga/YogaConfig.java | 2 - java/com/facebook/yoga/YogaConfigJNIBase.java | 4 - java/com/facebook/yoga/YogaNative.java | 2 - java/com/facebook/yoga/YogaNode.java | 2 - java/com/facebook/yoga/YogaNodeJNIBase.java | 8 - java/jni/YGJNIVanilla.cpp | 25 ---- tests/YGLoggerTest.cpp | 137 ------------------ yoga/YGConfig.cpp | 4 - yoga/YGConfig.h | 5 - yoga/YGNode.cpp | 7 - yoga/YGNode.h | 5 - 11 files changed, 201 deletions(-) delete mode 100644 tests/YGLoggerTest.cpp diff --git a/java/com/facebook/yoga/YogaConfig.java b/java/com/facebook/yoga/YogaConfig.java index 0ca8571e..c841acd7 100644 --- a/java/com/facebook/yoga/YogaConfig.java +++ b/java/com/facebook/yoga/YogaConfig.java @@ -15,8 +15,6 @@ public abstract class YogaConfig { public abstract void setUseWebDefaults(boolean useWebDefaults); - public abstract void setPrintTreeFlag(boolean enable); - public abstract void setPointScaleFactor(float pixelsInPoint); public abstract void setErrata(YogaErrata errata); diff --git a/java/com/facebook/yoga/YogaConfigJNIBase.java b/java/com/facebook/yoga/YogaConfigJNIBase.java index 07263e6d..a131cca4 100644 --- a/java/com/facebook/yoga/YogaConfigJNIBase.java +++ b/java/com/facebook/yoga/YogaConfigJNIBase.java @@ -35,10 +35,6 @@ public abstract class YogaConfigJNIBase extends YogaConfig { YogaNative.jni_YGConfigSetUseWebDefaultsJNI(mNativePointer, useWebDefaults); } - public void setPrintTreeFlag(boolean enable) { - YogaNative.jni_YGConfigSetPrintTreeFlagJNI(mNativePointer, enable); - } - public void setPointScaleFactor(float pixelsInPoint) { YogaNative.jni_YGConfigSetPointScaleFactorJNI(mNativePointer, pixelsInPoint); } diff --git a/java/com/facebook/yoga/YogaNative.java b/java/com/facebook/yoga/YogaNative.java index 101f0e0e..9be9edcf 100644 --- a/java/com/facebook/yoga/YogaNative.java +++ b/java/com/facebook/yoga/YogaNative.java @@ -22,7 +22,6 @@ public class YogaNative { static native void jni_YGConfigFreeJNI(long nativePointer); static native void jni_YGConfigSetExperimentalFeatureEnabledJNI(long nativePointer, int feature, boolean enabled); static native void jni_YGConfigSetUseWebDefaultsJNI(long nativePointer, boolean useWebDefaults); - static native void jni_YGConfigSetPrintTreeFlagJNI(long nativePointer, boolean enable); static native void jni_YGConfigSetPointScaleFactorJNI(long nativePointer, float pixelsInPoint); static native void jni_YGConfigSetErrataJNI(long nativePointer, int errata); static native int jni_YGConfigGetErrataJNI(long nativePointer); @@ -111,7 +110,6 @@ public class YogaNative { static native void jni_YGNodeStyleSetGapJNI(long nativePointer, int gutter, float gapLength); static native void jni_YGNodeSetHasMeasureFuncJNI(long nativePointer, boolean hasMeasureFunc); static native void jni_YGNodeSetHasBaselineFuncJNI(long nativePointer, boolean hasMeasureFunc); - static native void jni_YGNodePrintJNI(long nativePointer); static native void jni_YGNodeSetStyleInputsJNI(long nativePointer, float[] styleInputsArray, int size); static native long jni_YGNodeCloneJNI(long nativePointer); static native void jni_YGNodeSetAlwaysFormsContainingBlockJNI(long nativePointer, boolean alwaysFormContainingBlock); diff --git a/java/com/facebook/yoga/YogaNode.java b/java/com/facebook/yoga/YogaNode.java index 25323437..4875ac3e 100644 --- a/java/com/facebook/yoga/YogaNode.java +++ b/java/com/facebook/yoga/YogaNode.java @@ -221,8 +221,6 @@ public abstract class YogaNode implements YogaProps { @Nullable public abstract Object getData(); - public abstract void print(); - public abstract YogaNode cloneWithoutChildren(); public abstract YogaNode cloneWithChildren(); diff --git a/java/com/facebook/yoga/YogaNodeJNIBase.java b/java/com/facebook/yoga/YogaNodeJNIBase.java index d1010f40..df958df1 100644 --- a/java/com/facebook/yoga/YogaNodeJNIBase.java +++ b/java/com/facebook/yoga/YogaNodeJNIBase.java @@ -556,14 +556,6 @@ public abstract class YogaNodeJNIBase extends YogaNode implements Cloneable { return mData; } - /** - * Use the set logger (defaults to adb log) to print out the styles, children, and computed layout - * of the tree rooted at this node. - */ - public void print() { - YogaNative.jni_YGNodePrintJNI(mNativePointer); - } - /** * This method replaces the child at childIndex position with the newNode received by parameter. * This is different than calling removeChildAt and addChildAt because this method ONLY replaces diff --git a/java/jni/YGJNIVanilla.cpp b/java/jni/YGJNIVanilla.cpp index ccbf7787..97fb1789 100644 --- a/java/jni/YGJNIVanilla.cpp +++ b/java/jni/YGJNIVanilla.cpp @@ -66,15 +66,6 @@ static void jni_YGConfigSetUseWebDefaultsJNI( YGConfigSetUseWebDefaults(config, useWebDefaults); } -static void jni_YGConfigSetPrintTreeFlagJNI( - JNIEnv* /*env*/, - jobject /*obj*/, - jlong nativePointer, - jboolean enable) { - const YGConfigRef config = _jlong2YGConfigRef(nativePointer); - YGConfigSetPrintTreeFlag(config, enable); -} - static void jni_YGConfigSetPointScaleFactorJNI( JNIEnv* /*env*/, jobject /*obj*/, @@ -690,18 +681,6 @@ static void jni_YGNodeSetAlwaysFormsContainingBlockJNI( _jlong2YGNodeRef(nativePointer), alwaysFormsContainingBlock); } -static void -jni_YGNodePrintJNI(JNIEnv* /*env*/, jobject /*obj*/, jlong nativePointer) { -#ifdef DEBUG - const YGNodeRef node = _jlong2YGNodeRef(nativePointer); - YGNodePrint( - node, - (YGPrintOptions)(YGPrintOptionsStyle | YGPrintOptionsLayout | YGPrintOptionsChildren)); -#else - (void)nativePointer; -#endif -} - static jlong jni_YGNodeCloneJNI(JNIEnv* /*env*/, jobject /*obj*/, jlong nativePointer) { auto node = _jlong2YGNodeRef(nativePointer); @@ -744,9 +723,6 @@ static JNINativeMethod methods[] = { {"jni_YGConfigSetUseWebDefaultsJNI", "(JZ)V", (void*)jni_YGConfigSetUseWebDefaultsJNI}, - {"jni_YGConfigSetPrintTreeFlagJNI", - "(JZ)V", - (void*)jni_YGConfigSetPrintTreeFlagJNI}, {"jni_YGConfigSetPointScaleFactorJNI", "(JF)V", (void*)jni_YGConfigSetPointScaleFactorJNI}, @@ -970,7 +946,6 @@ static JNINativeMethod methods[] = { {"jni_YGNodeSetAlwaysFormsContainingBlockJNI", "(JZ)V", (void*)jni_YGNodeSetAlwaysFormsContainingBlockJNI}, - {"jni_YGNodePrintJNI", "(J)V", (void*)jni_YGNodePrintJNI}, {"jni_YGNodeCloneJNI", "(J)J", (void*)jni_YGNodeCloneJNI}, }; diff --git a/tests/YGLoggerTest.cpp b/tests/YGLoggerTest.cpp deleted file mode 100644 index acc66152..00000000 --- a/tests/YGLoggerTest.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#include -#include -#include - -#if DEBUG - -namespace { -char writeBuffer[4096]; -int _unmanagedLogger( - const YGConfigConstRef /*config*/, - const YGNodeConstRef /*node*/, - YGLogLevel /*level*/, - const char* format, - va_list args) { - return vsnprintf( - writeBuffer + strlen(writeBuffer), - sizeof(writeBuffer) - strlen(writeBuffer), - format, - args); -} -} // namespace - -TEST(YogaTest, config_print_tree_enabled) { - writeBuffer[0] = '\0'; - const YGConfigRef config = YGConfigNew(); - YGConfigSetPrintTreeFlag(config, true); - YGConfigSetLogger(config, _unmanagedLogger); - const YGNodeRef root = YGNodeNewWithConfig(config); - const YGNodeRef child0 = YGNodeNewWithConfig(config); - const YGNodeRef child1 = YGNodeNewWithConfig(config); - YGNodeInsertChild(root, child0, 0); - YGNodeInsertChild(root, child1, 1); - YGNodeCalculateLayout(root, YGUnitUndefined, YGUnitUndefined, YGDirectionLTR); - YGConfigSetLogger(config, NULL); - YGNodeFreeRecursive(root); - - const char* expected = - "
\n " - "
\n
\n
"; - ASSERT_STREQ(expected, writeBuffer); -} - -TEST(YogaTest, config_print_tree_disabled) { - writeBuffer[0] = '\0'; - const YGConfigRef config = YGConfigNew(); - YGConfigSetPrintTreeFlag(config, false); - YGConfigSetLogger(config, _unmanagedLogger); - const YGNodeRef root = YGNodeNewWithConfig(config); - const YGNodeRef child0 = YGNodeNewWithConfig(config); - const YGNodeRef child1 = YGNodeNewWithConfig(config); - YGNodeInsertChild(root, child0, 0); - YGNodeInsertChild(root, child1, 1); - YGNodeCalculateLayout(root, YGUnitUndefined, YGUnitUndefined, YGDirectionLTR); - YGConfigSetLogger(config, NULL); - YGNodeFreeRecursive(root); - - const char* expected = ""; - ASSERT_STREQ(expected, writeBuffer); -} - -TEST(YogaTest, logger_default_node_should_print_no_style_info) { - writeBuffer[0] = '\0'; - const YGConfigRef config = YGConfigNew(); - YGConfigSetLogger(config, _unmanagedLogger); - const YGNodeRef root = YGNodeNewWithConfig(config); - YGNodeCalculateLayout(root, YGUnitUndefined, YGUnitUndefined, YGDirectionLTR); - YGNodePrint( - root, - (YGPrintOptions)(YGPrintOptionsLayout | YGPrintOptionsChildren | YGPrintOptionsStyle)); - YGConfigSetLogger(config, NULL); - YGNodeFree(root); - - const char* expected = - "
"; - ASSERT_STREQ(expected, writeBuffer); -} - -TEST(YogaTest, logger_node_with_percentage_absolute_position_and_margin) { - writeBuffer[0] = '\0'; - const YGConfigRef config = YGConfigNew(); - YGConfigSetLogger(config, _unmanagedLogger); - const YGNodeRef root = YGNodeNewWithConfig(config); - YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); - YGNodeStyleSetWidthPercent(root, 50); - YGNodeStyleSetHeightPercent(root, 75); - YGNodeStyleSetFlex(root, 1); - YGNodeStyleSetMargin(root, YGEdgeRight, 10); - YGNodeStyleSetMarginAuto(root, YGEdgeLeft); - YGNodeCalculateLayout(root, YGUnitUndefined, YGUnitUndefined, YGDirectionLTR); - YGNodePrint( - root, - (YGPrintOptions)(YGPrintOptionsLayout | YGPrintOptionsChildren | YGPrintOptionsStyle)); - YGConfigSetLogger(config, NULL); - YGNodeFree(root); - - const char* expected = - "
"; - ASSERT_STREQ(expected, writeBuffer); -} - -TEST(YogaTest, logger_node_with_children_should_print_indented) { - writeBuffer[0] = '\0'; - const YGConfigRef config = YGConfigNew(); - YGConfigSetLogger(config, _unmanagedLogger); - const YGNodeRef root = YGNodeNewWithConfig(config); - const YGNodeRef child0 = YGNodeNewWithConfig(config); - const YGNodeRef child1 = YGNodeNewWithConfig(config); - YGNodeInsertChild(root, child0, 0); - YGNodeInsertChild(root, child1, 1); - YGNodeCalculateLayout(root, YGUnitUndefined, YGUnitUndefined, YGDirectionLTR); - YGNodePrint( - root, - (YGPrintOptions)(YGPrintOptionsLayout | YGPrintOptionsChildren | YGPrintOptionsStyle)); - YGConfigSetLogger(config, NULL); - YGNodeFreeRecursive(root); - - const char* expected = - "
\n " - "
\n
\n
"; - ASSERT_STREQ(expected, writeBuffer); -} - -#endif diff --git a/yoga/YGConfig.cpp b/yoga/YGConfig.cpp index 970a740e..b3a82e1a 100644 --- a/yoga/YGConfig.cpp +++ b/yoga/YGConfig.cpp @@ -90,7 +90,3 @@ void YGConfigSetCloneNodeFunc( const YGCloneNodeFunc callback) { resolveRef(config)->setCloneNodeCallback(callback); } - -void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled) { - resolveRef(config)->setShouldPrintTree(enabled); -} diff --git a/yoga/YGConfig.h b/yoga/YGConfig.h index b8da4c7c..7c1a8f29 100644 --- a/yoga/YGConfig.h +++ b/yoga/YGConfig.h @@ -155,9 +155,4 @@ YG_EXPORT void YGConfigSetCloneNodeFunc( YGConfigRef config, YGCloneNodeFunc callback); -/** - * Allows printing the Yoga node tree during layout for debugging purposes. - */ -YG_EXPORT void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled); - YG_EXTERN_C_END diff --git a/yoga/YGNode.cpp b/yoga/YGNode.cpp index d91bc4eb..d3265e01 100644 --- a/yoga/YGNode.cpp +++ b/yoga/YGNode.cpp @@ -11,7 +11,6 @@ #include #include #include -#include #include #include @@ -330,12 +329,6 @@ void YGNodeSetAlwaysFormsContainingBlock( resolveRef(node)->setAlwaysFormsContainingBlock(alwaysFormsContainingBlock); } -#ifdef DEBUG -void YGNodePrint(const YGNodeConstRef node, const YGPrintOptions options) { - yoga::print(resolveRef(node), scopedEnum(options)); -} -#endif - // TODO: This leaks internal details to the public API. Remove after removing // ComponentKit usage of it. bool YGNodeCanUseCachedMeasurement( diff --git a/yoga/YGNode.h b/yoga/YGNode.h index 12d40f75..e6f233ac 100644 --- a/yoga/YGNode.h +++ b/yoga/YGNode.h @@ -273,11 +273,6 @@ YG_EXPORT void YGNodeSetAlwaysFormsContainingBlock( YGNodeRef node, bool alwaysFormsContainingBlock); -/** - * Print a node to log output. - */ -YG_EXPORT void YGNodePrint(YGNodeConstRef node, YGPrintOptions options); - /** * @deprecated */