Skip to content

Commit 76faa56

Browse files
committed
refactor: separate feature flat per platform
1 parent 4844731 commit 76faa56

22 files changed

Lines changed: 200 additions & 94 deletions

packages/react-native/Libraries/Text/Text/RCTTextView.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ - (void)drawRect:(CGRect)rect
156156

157157
NSRange glyphRange = [layoutManager glyphRangeForTextContainer:textContainer];
158158

159-
if (facebook::react::ReactNativeFeatureFlags::enableLineHeightCentering()) {
159+
if (facebook::react::ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS()) {
160160
CGPoint drawingPoint = [self calculateDrawingPointWithTextStorage:_textStorage contentFrame:_contentFrame];
161161
[layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:drawingPoint];
162162
[layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:drawingPoint];

packages/react-native/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ - (void)drawRect:(CGRect)rect
378378

379379
CGRect frame = RCTCGRectFromRect(_layoutMetrics.getContentFrame());
380380

381-
if (ReactNativeFeatureFlags::enableLineHeightCentering()) {
381+
if (ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS()) {
382382
NSAttributedString *attributedText = RCTNSAttributedStringFromAttributedString(_state->getData().attributedString);
383383
frame = [self calculateCenteredFrameWithAttributedText:attributedText frame:frame];
384384
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<8c1e36bc5a0baac0def70ea35dcb9e59>>
7+
* @generated SignedSource<<bbb35582fcb449903f58a5d4018755d9>>
88
*/
99

1010
/**
@@ -134,7 +134,13 @@ public object ReactNativeFeatureFlags {
134134
* When enabled, custom line height calculation will be centered from top to bottom.
135135
*/
136136
@JvmStatic
137-
public fun enableLineHeightCentering(): Boolean = accessor.enableLineHeightCentering()
137+
public fun enableLineHeightCenteringOnAndroid(): Boolean = accessor.enableLineHeightCenteringOnAndroid()
138+
139+
/**
140+
* When enabled, custom line height calculation will be centered from top to bottom.
141+
*/
142+
@JvmStatic
143+
public fun enableLineHeightCenteringOnIOS(): Boolean = accessor.enableLineHeightCenteringOnIOS()
138144

139145
/**
140146
* Enables the reporting of long tasks through `PerformanceObserver`. Only works if the event loop is enabled.

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<a958631ee6706d85d8cd7e0222873b44>>
7+
* @generated SignedSource<<02f9fa1fd92a89a823e8fd35e1a2409b>>
88
*/
99

1010
/**
@@ -37,7 +37,8 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso
3737
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
3838
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
3939
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
40-
private var enableLineHeightCenteringCache: Boolean? = null
40+
private var enableLineHeightCenteringOnAndroidCache: Boolean? = null
41+
private var enableLineHeightCenteringOnIOSCache: Boolean? = null
4142
private var enableLongTaskAPICache: Boolean? = null
4243
private var enableMicrotasksCache: Boolean? = null
4344
private var enablePreciseSchedulingForPremountItemsOnAndroidCache: Boolean? = null
@@ -223,11 +224,20 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso
223224
return cached
224225
}
225226

226-
override fun enableLineHeightCentering(): Boolean {
227-
var cached = enableLineHeightCenteringCache
227+
override fun enableLineHeightCenteringOnAndroid(): Boolean {
228+
var cached = enableLineHeightCenteringOnAndroidCache
228229
if (cached == null) {
229-
cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCentering()
230-
enableLineHeightCenteringCache = cached
230+
cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCenteringOnAndroid()
231+
enableLineHeightCenteringOnAndroidCache = cached
232+
}
233+
return cached
234+
}
235+
236+
override fun enableLineHeightCenteringOnIOS(): Boolean {
237+
var cached = enableLineHeightCenteringOnIOSCache
238+
if (cached == null) {
239+
cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCenteringOnIOS()
240+
enableLineHeightCenteringOnIOSCache = cached
231241
}
232242
return cached
233243
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<fef3e1f705f22d87e84eb406cf9b7805>>
7+
* @generated SignedSource<<fde4302e82485beb6a4f7eb9cc5612aa>>
88
*/
99

1010
/**
@@ -62,7 +62,9 @@ public object ReactNativeFeatureFlagsCxxInterop {
6262

6363
@DoNotStrip @JvmStatic public external fun enableLayoutAnimationsOnIOS(): Boolean
6464

65-
@DoNotStrip @JvmStatic public external fun enableLineHeightCentering(): Boolean
65+
@DoNotStrip @JvmStatic public external fun enableLineHeightCenteringOnAndroid(): Boolean
66+
67+
@DoNotStrip @JvmStatic public external fun enableLineHeightCenteringOnIOS(): Boolean
6668

6769
@DoNotStrip @JvmStatic public external fun enableLongTaskAPI(): Boolean
6870

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<624e9e1c096417a3441a091dd74b0641>>
7+
* @generated SignedSource<<af03c1fe9360349ef95a4939a8c014ee>>
88
*/
99

1010
/**
@@ -57,7 +57,9 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
5757

5858
override fun enableLayoutAnimationsOnIOS(): Boolean = true
5959

60-
override fun enableLineHeightCentering(): Boolean = false
60+
override fun enableLineHeightCenteringOnAndroid(): Boolean = false
61+
62+
override fun enableLineHeightCenteringOnIOS(): Boolean = false
6163

6264
override fun enableLongTaskAPI(): Boolean = false
6365

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<c6be21a8b82bb3c14f2c83ff0c95d275>>
7+
* @generated SignedSource<<f0f8c57691724d5ace09b10df2afa890>>
88
*/
99

1010
/**
@@ -41,7 +41,8 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces
4141
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
4242
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
4343
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
44-
private var enableLineHeightCenteringCache: Boolean? = null
44+
private var enableLineHeightCenteringOnAndroidCache: Boolean? = null
45+
private var enableLineHeightCenteringOnIOSCache: Boolean? = null
4546
private var enableLongTaskAPICache: Boolean? = null
4647
private var enableMicrotasksCache: Boolean? = null
4748
private var enablePreciseSchedulingForPremountItemsOnAndroidCache: Boolean? = null
@@ -244,12 +245,22 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces
244245
return cached
245246
}
246247

247-
override fun enableLineHeightCentering(): Boolean {
248-
var cached = enableLineHeightCenteringCache
248+
override fun enableLineHeightCenteringOnAndroid(): Boolean {
249+
var cached = enableLineHeightCenteringOnAndroidCache
249250
if (cached == null) {
250-
cached = currentProvider.enableLineHeightCentering()
251-
accessedFeatureFlags.add("enableLineHeightCentering")
252-
enableLineHeightCenteringCache = cached
251+
cached = currentProvider.enableLineHeightCenteringOnAndroid()
252+
accessedFeatureFlags.add("enableLineHeightCenteringOnAndroid")
253+
enableLineHeightCenteringOnAndroidCache = cached
254+
}
255+
return cached
256+
}
257+
258+
override fun enableLineHeightCenteringOnIOS(): Boolean {
259+
var cached = enableLineHeightCenteringOnIOSCache
260+
if (cached == null) {
261+
cached = currentProvider.enableLineHeightCenteringOnIOS()
262+
accessedFeatureFlags.add("enableLineHeightCenteringOnIOS")
263+
enableLineHeightCenteringOnIOSCache = cached
253264
}
254265
return cached
255266
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<efde0d209c0d923a625dffdc496beace>>
7+
* @generated SignedSource<<95ff497c335cac627d85e166d8178558>>
88
*/
99

1010
/**
@@ -57,7 +57,9 @@ public interface ReactNativeFeatureFlagsProvider {
5757

5858
@DoNotStrip public fun enableLayoutAnimationsOnIOS(): Boolean
5959

60-
@DoNotStrip public fun enableLineHeightCentering(): Boolean
60+
@DoNotStrip public fun enableLineHeightCenteringOnAndroid(): Boolean
61+
62+
@DoNotStrip public fun enableLineHeightCenteringOnIOS(): Boolean
6163

6264
@DoNotStrip public fun enableLongTaskAPI(): Boolean
6365

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public class CustomLineHeightSpan(height: Float) : LineHeightSpan, ReactSpan {
107107
v: Int,
108108
fm: FontMetricsInt,
109109
) {
110-
if (ReactNativeFeatureFlags.enableLineHeightCentering()) chooseCenteredHeight(fm)
110+
if (ReactNativeFeatureFlags.enableLineHeightCenteringOnAndroid()) chooseCenteredHeight(fm)
111111
else chooseOriginalHeight(fm)
112112
}
113113
}

packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<6eaab890a1d747ce2c8ba7b0c255ec7a>>
7+
* @generated SignedSource<<0908596d167df88df2a2ab2d4b8c06ec>>
88
*/
99

1010
/**
@@ -141,9 +141,15 @@ class ReactNativeFeatureFlagsProviderHolder
141141
return method(javaProvider_);
142142
}
143143

144-
bool enableLineHeightCentering() override {
144+
bool enableLineHeightCenteringOnAndroid() override {
145145
static const auto method =
146-
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableLineHeightCentering");
146+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableLineHeightCenteringOnAndroid");
147+
return method(javaProvider_);
148+
}
149+
150+
bool enableLineHeightCenteringOnIOS() override {
151+
static const auto method =
152+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableLineHeightCenteringOnIOS");
147153
return method(javaProvider_);
148154
}
149155

@@ -422,9 +428,14 @@ bool JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnIOS(
422428
return ReactNativeFeatureFlags::enableLayoutAnimationsOnIOS();
423429
}
424430

425-
bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCentering(
431+
bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnAndroid(
426432
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
427-
return ReactNativeFeatureFlags::enableLineHeightCentering();
433+
return ReactNativeFeatureFlags::enableLineHeightCenteringOnAndroid();
434+
}
435+
436+
bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnIOS(
437+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
438+
return ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS();
428439
}
429440

430441
bool JReactNativeFeatureFlagsCxxInterop::enableLongTaskAPI(
@@ -651,8 +662,11 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
651662
"enableLayoutAnimationsOnIOS",
652663
JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnIOS),
653664
makeNativeMethod(
654-
"enableLineHeightCentering",
655-
JReactNativeFeatureFlagsCxxInterop::enableLineHeightCentering),
665+
"enableLineHeightCenteringOnAndroid",
666+
JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnAndroid),
667+
makeNativeMethod(
668+
"enableLineHeightCenteringOnIOS",
669+
JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnIOS),
656670
makeNativeMethod(
657671
"enableLongTaskAPI",
658672
JReactNativeFeatureFlagsCxxInterop::enableLongTaskAPI),

0 commit comments

Comments
 (0)