remove gating for rtl swapping fix + clean Paragraph Yoga node (#42297)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/42297

changelog: [internal]

Reviewed By: fkgozali

Differential Revision: D52728092

fbshipit-source-id: 6d05e5b72a350847030e0655aa914b64a4681752
This commit is contained in:
Samuel Susla
2024-01-19 01:36:05 -08:00
committed by Facebook GitHub Bot
parent 1d89fad824
commit 565dec4d20
7 changed files with 7 additions and 32 deletions
@@ -1890,12 +1890,10 @@ public class com/facebook/react/common/network/OkHttpCallUtil {
public class com/facebook/react/config/ReactFeatureFlags {
public static field calculateTransformedFramesEnabled Z
public static field dispatchPointerEvents Z
public static field doNotSwapLeftAndRightOnAndroidInLTR Z
public static field enableBackgroundExecutor Z
public static field enableBridgelessArchitecture Z
public static field enableBridgelessArchitectureNewCreateReloadDestroy Z
public static field enableBridgelessArchitectureSoftExceptions Z
public static field enableCleanParagraphYogaNode Z
public static field enableClonelessStateProgression Z
public static field enableCppPropsIteratorSetter Z
public static field enableDefaultAsyncBatchedPriority Z
@@ -130,12 +130,6 @@ public class ReactFeatureFlags {
/** Use native view configs in bridgeless mode. */
public static boolean useNativeViewConfigsInBridgelessMode = false;
/** Only swap left and right on Android in RTL scripts. */
public static boolean doNotSwapLeftAndRightOnAndroidInLTR = false;
/** Clean yoga node when <Text /> does not change. */
public static boolean enableCleanParagraphYogaNode = false;
/** Default state updates and events to async batched priority. */
public static boolean enableDefaultAsyncBatchedPriority = false;
@@ -414,10 +414,6 @@ void Binding::installFabricUIManager(
CoreFeatures::enablePropIteratorSetter =
getFeatureFlagValue("enableCppPropsIteratorSetter");
CoreFeatures::doNotSwapLeftAndRightOnAndroidInLTR =
getFeatureFlagValue("doNotSwapLeftAndRightOnAndroidInLTR");
CoreFeatures::enableCleanParagraphYogaNode =
getFeatureFlagValue("enableCleanParagraphYogaNode");
CoreFeatures::enableDefaultAsyncBatchedPriority =
getFeatureFlagValue("enableDefaultAsyncBatchedPriority");
CoreFeatures::enableClonelessStateProgression =
@@ -17,7 +17,6 @@
#include <react/renderer/graphics/rounding.h>
#include <react/renderer/telemetry/TransactionTelemetry.h>
#include <react/renderer/textlayoutmanager/TextLayoutContext.h>
#include <react/utils/CoreFeatures.h>
#include "ParagraphState.h"
@@ -31,13 +30,11 @@ ParagraphShadowNode::ParagraphShadowNode(
const ShadowNode& sourceShadowNode,
const ShadowNodeFragment& fragment)
: ConcreteViewShadowNode(sourceShadowNode, fragment) {
if (CoreFeatures::enableCleanParagraphYogaNode) {
if (!fragment.children && !fragment.props) {
// This ParagraphShadowNode was cloned but did not change
// in a way that affects its layout. Let's mark it clean
// to stop Yoga from traversing it.
cleanLayout();
}
if (!fragment.children && !fragment.props) {
// This ParagraphShadowNode was cloned but did not change
// in a way that affects its layout. Let's mark it clean
// to stop Yoga from traversing it.
cleanLayout();
}
}
@@ -580,8 +580,7 @@ void YogaLayoutableShadowNode::layoutTree(
SystraceSection s1("YogaLayoutableShadowNode::layoutTree");
bool swapLeftAndRight = layoutContext.swapLeftAndRightInRTL &&
(layoutConstraints.layoutDirection == LayoutDirection::RightToLeft ||
!CoreFeatures::doNotSwapLeftAndRightOnAndroidInLTR);
layoutConstraints.layoutDirection == LayoutDirection::RightToLeft;
{
SystraceSection s2("YogaLayoutableShadowNode::configureYogaTree");
@@ -699,8 +698,7 @@ void YogaLayoutableShadowNode::layout(LayoutContext layoutContext) {
newLayoutMetrics.pointScaleFactor = layoutContext.pointScaleFactor;
newLayoutMetrics.wasLeftAndRightSwapped =
layoutContext.swapLeftAndRightInRTL &&
(newLayoutMetrics.layoutDirection == LayoutDirection::RightToLeft ||
!CoreFeatures::doNotSwapLeftAndRightOnAndroidInLTR);
newLayoutMetrics.layoutDirection == LayoutDirection::RightToLeft;
// Child node's layout has changed. When a node is added to
// `affectedNodes`, onLayout event is called on the component. Comparing
@@ -15,8 +15,6 @@ bool CoreFeatures::cacheLastTextMeasurement = false;
bool CoreFeatures::cancelImageDownloadsOnRecycle = false;
bool CoreFeatures::enableGranularScrollViewStateUpdatesIOS = false;
bool CoreFeatures::enableMountHooks = false;
bool CoreFeatures::doNotSwapLeftAndRightOnAndroidInLTR = false;
bool CoreFeatures::enableCleanParagraphYogaNode = false;
bool CoreFeatures::enableGranularShadowTreeStateReconciliation = false;
bool CoreFeatures::enableDefaultAsyncBatchedPriority = false;
bool CoreFeatures::enableClonelessStateProgression = false;
@@ -41,12 +41,6 @@ class CoreFeatures {
// Report mount operations from the host platform to notify mount hooks.
static bool enableMountHooks;
// Only swap left and right on Android in RTL scripts.
static bool doNotSwapLeftAndRightOnAndroidInLTR;
// Clean yoga node when <Text /> does not change.
static bool enableCleanParagraphYogaNode;
// When enabled, the renderer would only fail commits when they propagate
// state and the last commit that updated state changed before committing.
static bool enableGranularShadowTreeStateReconciliation;