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
This commit is contained in:
Pritesh Nandgaonkar 2018-08-30 04:40:46 -07:00 committed by Facebook Github Bot
parent 169812f9ce
commit abc95a9113
4 changed files with 23 additions and 15 deletions

View File

@ -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 * This source code is licensed under the MIT license found in the LICENSE
* LICENSE file in the root directory of this source tree. * file in the root directory of this source tree.
*
*/ */
#include "YGConfig.h" #include "YGConfig.h"
const std::array<bool, YGExperimentalFeatureCount> const std::array<bool, YGExperimentalFeatureCount>
@ -15,5 +15,8 @@ YGConfig::YGConfig(YGLogger logger)
useWebDefaults(false), useWebDefaults(false),
useLegacyStretchBehaviour(false), useLegacyStretchBehaviour(false),
shouldDiffLayoutWithoutLegacyStretchBehaviour(false), shouldDiffLayoutWithoutLegacyStretchBehaviour(false),
pointScaleFactor(1.0f), logger(logger), cloneNodeCallback(nullptr), pointScaleFactor(1.0f),
context(nullptr) {} logger(logger),
cloneNodeCallback(nullptr),
context(nullptr),
printTree(false) {}

View File

@ -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 * This source code is licensed under the MIT license found in the LICENSE
* LICENSE file in the root directory of this source tree. * file in the root directory of this source tree.
*
*/ */
#pragma once #pragma once
#include "Yoga-internal.h" #include "Yoga-internal.h"
#include "Yoga.h" #include "Yoga.h"
@ -18,6 +18,7 @@ struct YGConfig {
YGLogger logger; YGLogger logger;
YGCloneNodeFunc cloneNodeCallback; YGCloneNodeFunc cloneNodeCallback;
void* context; void* context;
bool printTree;
YGConfig(YGLogger logger); YGConfig(YGLogger logger);
}; };

View File

@ -198,6 +198,10 @@ bool YGNodeGetHasNewLayout(YGNodeRef node) {
return node->getHasNewLayout(); return node->getHasNewLayout();
} }
void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled) {
config->printTree = enabled;
}
void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout) { void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout) {
node->setHasNewLayout(hasNewLayout); node->setHasNewLayout(hasNewLayout);
} }
@ -3535,7 +3539,6 @@ static void YGNodelayoutImpl(
} }
uint32_t gDepth = 0; uint32_t gDepth = 0;
bool gPrintTree = false;
bool gPrintChanges = false; bool gPrintChanges = false;
bool gPrintSkips = false; bool gPrintSkips = false;
@ -4111,7 +4114,7 @@ void YGNodeCalculateLayout(
node->getLayout().direction, ownerWidth, ownerHeight, ownerWidth); node->getLayout().direction, ownerWidth, ownerHeight, ownerWidth);
YGRoundToPixelGrid(node, node->getConfig()->pointScaleFactor, 0.0f, 0.0f); YGRoundToPixelGrid(node, node->getConfig()->pointScaleFactor, 0.0f, 0.0f);
if (gPrintTree) { if (node->getConfig()->printTree) {
YGNodePrint( YGNodePrint(
node, node,
(YGPrintOptions)( (YGPrintOptions)(
@ -4163,7 +4166,7 @@ void YGNodeCalculateLayout(
node->setLayoutDoesLegacyFlagAffectsLayout( node->setLayoutDoesLegacyFlagAffectsLayout(
!originalNode->isLayoutTreeEqualToNode(*node)); !originalNode->isLayoutTreeEqualToNode(*node));
if (gPrintTree) { if (originalNode->getConfig()->printTree) {
YGNodePrint( YGNodePrint(
originalNode, originalNode,
(YGPrintOptions)( (YGPrintOptions)(

View File

@ -155,6 +155,7 @@ WIN_EXPORT void YGNodeCopyStyle(
void* YGNodeGetContext(YGNodeRef node); void* YGNodeGetContext(YGNodeRef node);
void YGNodeSetContext(YGNodeRef node, void* context); void YGNodeSetContext(YGNodeRef node, void* context);
void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled);
YGMeasureFunc YGNodeGetMeasureFunc(YGNodeRef node); YGMeasureFunc YGNodeGetMeasureFunc(YGNodeRef node);
void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc); void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc);
YGBaselineFunc YGNodeGetBaselineFunc(YGNodeRef node); YGBaselineFunc YGNodeGetBaselineFunc(YGNodeRef node);