Skip to content

Commit

Permalink
refactor: separate feature flat per platform
Browse files Browse the repository at this point in the history
  • Loading branch information
ArekChr committed Oct 11, 2024
1 parent 4844731 commit 76faa56
Show file tree
Hide file tree
Showing 22 changed files with 200 additions and 94 deletions.
2 changes: 1 addition & 1 deletion packages/react-native/Libraries/Text/Text/RCTTextView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ - (void)drawRect:(CGRect)rect

NSRange glyphRange = [layoutManager glyphRangeForTextContainer:textContainer];

if (facebook::react::ReactNativeFeatureFlags::enableLineHeightCentering()) {
if (facebook::react::ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS()) {
CGPoint drawingPoint = [self calculateDrawingPointWithTextStorage:_textStorage contentFrame:_contentFrame];
[layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:drawingPoint];
[layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:drawingPoint];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ - (void)drawRect:(CGRect)rect

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

if (ReactNativeFeatureFlags::enableLineHeightCentering()) {
if (ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS()) {
NSAttributedString *attributedText = RCTNSAttributedStringFromAttributedString(_state->getData().attributedString);
frame = [self calculateCenteredFrameWithAttributedText:attributedText frame:frame];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<8c1e36bc5a0baac0def70ea35dcb9e59>>
* @generated SignedSource<<bbb35582fcb449903f58a5d4018755d9>>
*/

/**
Expand Down Expand Up @@ -134,7 +134,13 @@ public object ReactNativeFeatureFlags {
* When enabled, custom line height calculation will be centered from top to bottom.
*/
@JvmStatic
public fun enableLineHeightCentering(): Boolean = accessor.enableLineHeightCentering()
public fun enableLineHeightCenteringOnAndroid(): Boolean = accessor.enableLineHeightCenteringOnAndroid()

/**
* When enabled, custom line height calculation will be centered from top to bottom.
*/
@JvmStatic
public fun enableLineHeightCenteringOnIOS(): Boolean = accessor.enableLineHeightCenteringOnIOS()

/**
* Enables the reporting of long tasks through `PerformanceObserver`. Only works if the event loop is enabled.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<a958631ee6706d85d8cd7e0222873b44>>
* @generated SignedSource<<02f9fa1fd92a89a823e8fd35e1a2409b>>
*/

/**
Expand Down Expand Up @@ -37,7 +37,8 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
private var enableLineHeightCenteringCache: Boolean? = null
private var enableLineHeightCenteringOnAndroidCache: Boolean? = null
private var enableLineHeightCenteringOnIOSCache: Boolean? = null
private var enableLongTaskAPICache: Boolean? = null
private var enableMicrotasksCache: Boolean? = null
private var enablePreciseSchedulingForPremountItemsOnAndroidCache: Boolean? = null
Expand Down Expand Up @@ -223,11 +224,20 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso
return cached
}

override fun enableLineHeightCentering(): Boolean {
var cached = enableLineHeightCenteringCache
override fun enableLineHeightCenteringOnAndroid(): Boolean {
var cached = enableLineHeightCenteringOnAndroidCache
if (cached == null) {
cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCentering()
enableLineHeightCenteringCache = cached
cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCenteringOnAndroid()
enableLineHeightCenteringOnAndroidCache = cached
}
return cached
}

override fun enableLineHeightCenteringOnIOS(): Boolean {
var cached = enableLineHeightCenteringOnIOSCache
if (cached == null) {
cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCenteringOnIOS()
enableLineHeightCenteringOnIOSCache = cached
}
return cached
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<fef3e1f705f22d87e84eb406cf9b7805>>
* @generated SignedSource<<fde4302e82485beb6a4f7eb9cc5612aa>>
*/

/**
Expand Down Expand Up @@ -62,7 +62,9 @@ public object ReactNativeFeatureFlagsCxxInterop {

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

@DoNotStrip @JvmStatic public external fun enableLineHeightCentering(): Boolean
@DoNotStrip @JvmStatic public external fun enableLineHeightCenteringOnAndroid(): Boolean

@DoNotStrip @JvmStatic public external fun enableLineHeightCenteringOnIOS(): Boolean

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<624e9e1c096417a3441a091dd74b0641>>
* @generated SignedSource<<af03c1fe9360349ef95a4939a8c014ee>>
*/

/**
Expand Down Expand Up @@ -57,7 +57,9 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi

override fun enableLayoutAnimationsOnIOS(): Boolean = true

override fun enableLineHeightCentering(): Boolean = false
override fun enableLineHeightCenteringOnAndroid(): Boolean = false

override fun enableLineHeightCenteringOnIOS(): Boolean = false

override fun enableLongTaskAPI(): Boolean = false

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<c6be21a8b82bb3c14f2c83ff0c95d275>>
* @generated SignedSource<<f0f8c57691724d5ace09b10df2afa890>>
*/

/**
Expand Down Expand Up @@ -41,7 +41,8 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
private var enableLineHeightCenteringCache: Boolean? = null
private var enableLineHeightCenteringOnAndroidCache: Boolean? = null
private var enableLineHeightCenteringOnIOSCache: Boolean? = null
private var enableLongTaskAPICache: Boolean? = null
private var enableMicrotasksCache: Boolean? = null
private var enablePreciseSchedulingForPremountItemsOnAndroidCache: Boolean? = null
Expand Down Expand Up @@ -244,12 +245,22 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces
return cached
}

override fun enableLineHeightCentering(): Boolean {
var cached = enableLineHeightCenteringCache
override fun enableLineHeightCenteringOnAndroid(): Boolean {
var cached = enableLineHeightCenteringOnAndroidCache
if (cached == null) {
cached = currentProvider.enableLineHeightCentering()
accessedFeatureFlags.add("enableLineHeightCentering")
enableLineHeightCenteringCache = cached
cached = currentProvider.enableLineHeightCenteringOnAndroid()
accessedFeatureFlags.add("enableLineHeightCenteringOnAndroid")
enableLineHeightCenteringOnAndroidCache = cached
}
return cached
}

override fun enableLineHeightCenteringOnIOS(): Boolean {
var cached = enableLineHeightCenteringOnIOSCache
if (cached == null) {
cached = currentProvider.enableLineHeightCenteringOnIOS()
accessedFeatureFlags.add("enableLineHeightCenteringOnIOS")
enableLineHeightCenteringOnIOSCache = cached
}
return cached
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<efde0d209c0d923a625dffdc496beace>>
* @generated SignedSource<<95ff497c335cac627d85e166d8178558>>
*/

/**
Expand Down Expand Up @@ -57,7 +57,9 @@ public interface ReactNativeFeatureFlagsProvider {

@DoNotStrip public fun enableLayoutAnimationsOnIOS(): Boolean

@DoNotStrip public fun enableLineHeightCentering(): Boolean
@DoNotStrip public fun enableLineHeightCenteringOnAndroid(): Boolean

@DoNotStrip public fun enableLineHeightCenteringOnIOS(): Boolean

@DoNotStrip public fun enableLongTaskAPI(): Boolean

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public class CustomLineHeightSpan(height: Float) : LineHeightSpan, ReactSpan {
v: Int,
fm: FontMetricsInt,
) {
if (ReactNativeFeatureFlags.enableLineHeightCentering()) chooseCenteredHeight(fm)
if (ReactNativeFeatureFlags.enableLineHeightCenteringOnAndroid()) chooseCenteredHeight(fm)
else chooseOriginalHeight(fm)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<6eaab890a1d747ce2c8ba7b0c255ec7a>>
* @generated SignedSource<<0908596d167df88df2a2ab2d4b8c06ec>>
*/

/**
Expand Down Expand Up @@ -141,9 +141,15 @@ class ReactNativeFeatureFlagsProviderHolder
return method(javaProvider_);
}

bool enableLineHeightCentering() override {
bool enableLineHeightCenteringOnAndroid() override {
static const auto method =
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableLineHeightCentering");
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableLineHeightCenteringOnAndroid");
return method(javaProvider_);
}

bool enableLineHeightCenteringOnIOS() override {
static const auto method =
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableLineHeightCenteringOnIOS");
return method(javaProvider_);
}

Expand Down Expand Up @@ -422,9 +428,14 @@ bool JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnIOS(
return ReactNativeFeatureFlags::enableLayoutAnimationsOnIOS();
}

bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCentering(
bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnAndroid(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
return ReactNativeFeatureFlags::enableLineHeightCentering();
return ReactNativeFeatureFlags::enableLineHeightCenteringOnAndroid();
}

bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnIOS(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
return ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS();
}

bool JReactNativeFeatureFlagsCxxInterop::enableLongTaskAPI(
Expand Down Expand Up @@ -651,8 +662,11 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
"enableLayoutAnimationsOnIOS",
JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnIOS),
makeNativeMethod(
"enableLineHeightCentering",
JReactNativeFeatureFlagsCxxInterop::enableLineHeightCentering),
"enableLineHeightCenteringOnAndroid",
JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnAndroid),
makeNativeMethod(
"enableLineHeightCenteringOnIOS",
JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnIOS),
makeNativeMethod(
"enableLongTaskAPI",
JReactNativeFeatureFlagsCxxInterop::enableLongTaskAPI),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<ed933889ce74532340a21b964bfb09ad>>
* @generated SignedSource<<fe935ea5de2a03da8b5d8f8a93ec903f>>
*/

/**
Expand Down Expand Up @@ -81,7 +81,10 @@ class JReactNativeFeatureFlagsCxxInterop
static bool enableLayoutAnimationsOnIOS(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);

static bool enableLineHeightCentering(
static bool enableLineHeightCenteringOnAndroid(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);

static bool enableLineHeightCenteringOnIOS(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);

static bool enableLongTaskAPI(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<4b417d4e16dc9d50ce72eb17287ade1b>>
* @generated SignedSource<<2eeb1b7571481a8404226d0bbc8d2e5d>>
*/

/**
Expand Down Expand Up @@ -89,8 +89,12 @@ bool ReactNativeFeatureFlags::enableLayoutAnimationsOnIOS() {
return getAccessor().enableLayoutAnimationsOnIOS();
}

bool ReactNativeFeatureFlags::enableLineHeightCentering() {
return getAccessor().enableLineHeightCentering();
bool ReactNativeFeatureFlags::enableLineHeightCenteringOnAndroid() {
return getAccessor().enableLineHeightCenteringOnAndroid();
}

bool ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS() {
return getAccessor().enableLineHeightCenteringOnIOS();
}

bool ReactNativeFeatureFlags::enableLongTaskAPI() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<9c219debffe0fa013bea41deb6c01db2>>
* @generated SignedSource<<6c4322adf33ac5b1bc921b306b2f5f8f>>
*/

/**
Expand Down Expand Up @@ -125,7 +125,12 @@ class ReactNativeFeatureFlags {
/**
* When enabled, custom line height calculation will be centered from top to bottom.
*/
RN_EXPORT static bool enableLineHeightCentering();
RN_EXPORT static bool enableLineHeightCenteringOnAndroid();

/**
* When enabled, custom line height calculation will be centered from top to bottom.
*/
RN_EXPORT static bool enableLineHeightCenteringOnIOS();

/**
* Enables the reporting of long tasks through `PerformanceObserver`. Only works if the event loop is enabled.
Expand Down
Loading

0 comments on commit 76faa56

Please sign in to comment.