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:
committed by
Facebook Github Bot
parent
2b52c73d70
commit
f7df575746
@@ -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 <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <yoga/Yoga.h>
|
#include <yoga/Yoga.h>
|
||||||
@@ -23,6 +23,46 @@ int _unmanagedLogger(const YGConfigRef config,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 =
|
||||||
|
"<div layout=\"width: 0; height: 0; top: 0; left: 0;\" style=\"\" >\n "
|
||||||
|
"<div layout=\"width: 0; height: 0; top: 0; left: 0;\" style=\"\" "
|
||||||
|
"></div>\n <div layout=\"width: 0; height: 0; top: 0; left: 0;\" "
|
||||||
|
"style=\"\" ></div>\n</div>";
|
||||||
|
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) {
|
TEST(YogaTest, logger_default_node_should_print_no_style_info) {
|
||||||
writeBuffer[0] = '\0';
|
writeBuffer[0] = '\0';
|
||||||
const YGConfigRef config = YGConfigNew();
|
const YGConfigRef config = YGConfigNew();
|
||||||
|
@@ -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) {}
|
||||||
|
@@ -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);
|
||||||
};
|
};
|
||||||
|
@@ -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)(
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user