From abc95a91131c32328029a5bb37a4fa2969eca4fd Mon Sep 17 00:00:00 2001 From: Pritesh Nandgaonkar Date: Thu, 30 Aug 2018 04:40:46 -0700 Subject: [PATCH] Expose logging capablities in Yoga header Summary: Exposes a bool in the config which will help log the yoga hierarchy. Also added a test case Reviewed By: IanChilds Differential Revision: D9560577 fbshipit-source-id: ef4998107ed51ea374853bab7cbe09e3232caa0c --- ReactCommon/yoga/yoga/YGConfig.cpp | 17 ++++++++++------- ReactCommon/yoga/yoga/YGConfig.h | 11 ++++++----- ReactCommon/yoga/yoga/Yoga.cpp | 9 ++++++--- ReactCommon/yoga/yoga/Yoga.h | 1 + 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/ReactCommon/yoga/yoga/YGConfig.cpp b/ReactCommon/yoga/yoga/YGConfig.cpp index 5cee52785..a52f93c22 100644 --- a/ReactCommon/yoga/yoga/YGConfig.cpp +++ b/ReactCommon/yoga/yoga/YGConfig.cpp @@ -1,10 +1,10 @@ -/** - * Copyright (c) 2014-present, Facebook, Inc. +/* + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. */ - #include "YGConfig.h" const std::array @@ -15,5 +15,8 @@ YGConfig::YGConfig(YGLogger logger) useWebDefaults(false), useLegacyStretchBehaviour(false), shouldDiffLayoutWithoutLegacyStretchBehaviour(false), - pointScaleFactor(1.0f), logger(logger), cloneNodeCallback(nullptr), - context(nullptr) {} + pointScaleFactor(1.0f), + logger(logger), + cloneNodeCallback(nullptr), + context(nullptr), + printTree(false) {} diff --git a/ReactCommon/yoga/yoga/YGConfig.h b/ReactCommon/yoga/yoga/YGConfig.h index 0f655d1be..98d7a2179 100644 --- a/ReactCommon/yoga/yoga/YGConfig.h +++ b/ReactCommon/yoga/yoga/YGConfig.h @@ -1,10 +1,10 @@ -/** - * Copyright (c) 2014-present, Facebook, Inc. +/* + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. */ - #pragma once #include "Yoga-internal.h" #include "Yoga.h" @@ -18,6 +18,7 @@ struct YGConfig { YGLogger logger; YGCloneNodeFunc cloneNodeCallback; void* context; + bool printTree; YGConfig(YGLogger logger); }; diff --git a/ReactCommon/yoga/yoga/Yoga.cpp b/ReactCommon/yoga/yoga/Yoga.cpp index c6d38bb4a..a4bd3f1a8 100644 --- a/ReactCommon/yoga/yoga/Yoga.cpp +++ b/ReactCommon/yoga/yoga/Yoga.cpp @@ -198,6 +198,10 @@ bool YGNodeGetHasNewLayout(YGNodeRef node) { return node->getHasNewLayout(); } +void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled) { + config->printTree = enabled; +} + void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout) { node->setHasNewLayout(hasNewLayout); } @@ -3535,7 +3539,6 @@ static void YGNodelayoutImpl( } uint32_t gDepth = 0; -bool gPrintTree = false; bool gPrintChanges = false; bool gPrintSkips = false; @@ -4111,7 +4114,7 @@ void YGNodeCalculateLayout( node->getLayout().direction, ownerWidth, ownerHeight, ownerWidth); YGRoundToPixelGrid(node, node->getConfig()->pointScaleFactor, 0.0f, 0.0f); - if (gPrintTree) { + if (node->getConfig()->printTree) { YGNodePrint( node, (YGPrintOptions)( @@ -4163,7 +4166,7 @@ void YGNodeCalculateLayout( node->setLayoutDoesLegacyFlagAffectsLayout( !originalNode->isLayoutTreeEqualToNode(*node)); - if (gPrintTree) { + if (originalNode->getConfig()->printTree) { YGNodePrint( originalNode, (YGPrintOptions)( diff --git a/ReactCommon/yoga/yoga/Yoga.h b/ReactCommon/yoga/yoga/Yoga.h index 5bcbe2ab6..bd537a3c0 100644 --- a/ReactCommon/yoga/yoga/Yoga.h +++ b/ReactCommon/yoga/yoga/Yoga.h @@ -155,6 +155,7 @@ WIN_EXPORT void YGNodeCopyStyle( void* YGNodeGetContext(YGNodeRef node); void YGNodeSetContext(YGNodeRef node, void* context); +void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled); YGMeasureFunc YGNodeGetMeasureFunc(YGNodeRef node); void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc); YGBaselineFunc YGNodeGetBaselineFunc(YGNodeRef node);