From b08bd572ef6f0a1967797bae5814ed3c9cd24af9 Mon Sep 17 00:00:00 2001 From: Pritesh Nandgaonkar Date: Fri, 9 Feb 2018 06:14:36 -0800 Subject: [PATCH] Add flag in YGConfig for running experiments Summary: Add flag in YGConfig for running experiments Reviewed By: emilsjolander Differential Revision: D6948702 fbshipit-source-id: 009fe2d64b6098f8c3a0289f0e6939dea5ce0d37 --- yoga/Yoga-internal.h | 1 + yoga/Yoga.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/yoga/Yoga-internal.h b/yoga/Yoga-internal.h index 291b3ba2..923e5a89 100644 --- a/yoga/Yoga-internal.h +++ b/yoga/Yoga-internal.h @@ -215,6 +215,7 @@ struct YGConfig { bool experimentalFeatures[YGExperimentalFeatureCount + 1]; bool useWebDefaults; bool useLegacyStretchBehaviour; + bool shouldDiffLayoutWithoutLegacyStretchBehaviour; float pointScaleFactor; YGLogger logger; YGNodeClonedFunc cloneNodeCallback; diff --git a/yoga/Yoga.cpp b/yoga/Yoga.cpp index 19e8b4cf..63b00c6c 100644 --- a/yoga/Yoga.cpp +++ b/yoga/Yoga.cpp @@ -47,6 +47,7 @@ static YGConfig gYGConfigDefaults = { }, .useWebDefaults = false, .useLegacyStretchBehaviour = false, + .shouldDiffLayoutWithoutLegacyStretchBehaviour = false, .pointScaleFactor = 1.0f, #ifdef ANDROID .logger = &YGAndroidLog, @@ -3613,14 +3614,15 @@ void YGNodeCalculateLayout(const YGNodeRef node, } } - bool didUseLegacyFlag = node->didUseLegacyFlag(); - // We want to get rid off `useLegacyStretchBehaviour` from YGConfig. But we // aren't sure whether client's of yoga have gotten rid off this flag or not. // So logging this in YGLayout would help to find out the call sites depending // on this flag. This check would be removed once we are sure no one is - // dependent on this flag anymore. - if (didUseLegacyFlag) { + // dependent on this flag anymore. The flag + // `shouldDiffLayoutWithoutLegacyStretchBehaviour` in YGConfig will help to + // run experiments. + if (node->getConfig()->shouldDiffLayoutWithoutLegacyStretchBehaviour && + node->didUseLegacyFlag()) { const YGNodeRef originalNode = YGNodeDeepClone(node); originalNode->resolveDimension(); // Recursively mark nodes as dirty