Skip to content

Commit 8d245e9

Browse files
Nick Lefevermeta-codesync[bot]
authored andcommitted
Control trait::hidden support through feature flag (#54112)
Summary: Pull Request resolved: #54112 This diff adds the possibility to control the use of `Trait::Hidden` on Android platforms through feature flags. The feature flag is Android specific and only accessed on Android platforms. Changelog: [Internal] Reviewed By: christophpurrer Differential Revision: D84289662 fbshipit-source-id: 0ee1d0702aa36df25c842017673176a9c7984b23
1 parent d2eca58 commit 8d245e9

21 files changed

Lines changed: 146 additions & 28 deletions

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

Lines changed: 7 additions & 1 deletion
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<<3fee7079eaa30dca86e3cb366cdd261e>>
7+
* @generated SignedSource<<132ff30c4a5ecf6b38dd0d6cc47d3abc>>
88
*/
99

1010
/**
@@ -474,6 +474,12 @@ public object ReactNativeFeatureFlags {
474474
@JvmStatic
475475
public fun useSharedAnimatedBackend(): Boolean = accessor.useSharedAnimatedBackend()
476476

477+
/**
478+
* Use Trait::hidden on Android
479+
*/
480+
@JvmStatic
481+
public fun useTraitHiddenOnAndroid(): Boolean = accessor.useTraitHiddenOnAndroid()
482+
477483
/**
478484
* In Bridgeless mode, should legacy NativeModules use the TurboModule system?
479485
*/

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

Lines changed: 11 additions & 1 deletion
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<<7ea729886da71d6d117442c83736fc5f>>
7+
* @generated SignedSource<<38838d89c61124afce1f13045593aeb4>>
88
*/
99

1010
/**
@@ -94,6 +94,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
9494
private var useRawPropsJsiValueCache: Boolean? = null
9595
private var useShadowNodeStateOnCloneCache: Boolean? = null
9696
private var useSharedAnimatedBackendCache: Boolean? = null
97+
private var useTraitHiddenOnAndroidCache: Boolean? = null
9798
private var useTurboModuleInteropCache: Boolean? = null
9899
private var useTurboModulesCache: Boolean? = null
99100
private var viewCullingOutsetRatioCache: Double? = null
@@ -766,6 +767,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
766767
return cached
767768
}
768769

770+
override fun useTraitHiddenOnAndroid(): Boolean {
771+
var cached = useTraitHiddenOnAndroidCache
772+
if (cached == null) {
773+
cached = ReactNativeFeatureFlagsCxxInterop.useTraitHiddenOnAndroid()
774+
useTraitHiddenOnAndroidCache = cached
775+
}
776+
return cached
777+
}
778+
769779
override fun useTurboModuleInterop(): Boolean {
770780
var cached = useTurboModuleInteropCache
771781
if (cached == null) {

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

Lines changed: 3 additions & 1 deletion
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<<e72b92811e1f318291484d55f24f15b2>>
7+
* @generated SignedSource<<ef75a380b395d88cb0551d3a44d9961d>>
88
*/
99

1010
/**
@@ -176,6 +176,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
176176

177177
@DoNotStrip @JvmStatic public external fun useSharedAnimatedBackend(): Boolean
178178

179+
@DoNotStrip @JvmStatic public external fun useTraitHiddenOnAndroid(): Boolean
180+
179181
@DoNotStrip @JvmStatic public external fun useTurboModuleInterop(): Boolean
180182

181183
@DoNotStrip @JvmStatic public external fun useTurboModules(): Boolean

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

Lines changed: 3 additions & 1 deletion
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<<bd9b92174bcc46a6df01d0489b2aebc8>>
7+
* @generated SignedSource<<c601ddc9bd62282f8079d0cb3578675d>>
88
*/
99

1010
/**
@@ -171,6 +171,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
171171

172172
override fun useSharedAnimatedBackend(): Boolean = false
173173

174+
override fun useTraitHiddenOnAndroid(): Boolean = false
175+
174176
override fun useTurboModuleInterop(): Boolean = false
175177

176178
override fun useTurboModules(): Boolean = false

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

Lines changed: 12 additions & 1 deletion
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<<226b5967122a840a4b6ac3fa41d3fb90>>
7+
* @generated SignedSource<<2fa1e7cd2e1d4009dfa09a5fd27a872a>>
88
*/
99

1010
/**
@@ -98,6 +98,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
9898
private var useRawPropsJsiValueCache: Boolean? = null
9999
private var useShadowNodeStateOnCloneCache: Boolean? = null
100100
private var useSharedAnimatedBackendCache: Boolean? = null
101+
private var useTraitHiddenOnAndroidCache: Boolean? = null
101102
private var useTurboModuleInteropCache: Boolean? = null
102103
private var useTurboModulesCache: Boolean? = null
103104
private var viewCullingOutsetRatioCache: Double? = null
@@ -844,6 +845,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
844845
return cached
845846
}
846847

848+
override fun useTraitHiddenOnAndroid(): Boolean {
849+
var cached = useTraitHiddenOnAndroidCache
850+
if (cached == null) {
851+
cached = currentProvider.useTraitHiddenOnAndroid()
852+
accessedFeatureFlags.add("useTraitHiddenOnAndroid")
853+
useTraitHiddenOnAndroidCache = cached
854+
}
855+
return cached
856+
}
857+
847858
override fun useTurboModuleInterop(): Boolean {
848859
var cached = useTurboModuleInteropCache
849860
if (cached == null) {

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

Lines changed: 3 additions & 1 deletion
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<<bdb7047972cb5fe84dcc11ea6409e603>>
7+
* @generated SignedSource<<901e5678bff081bcb6b8e2d46364b977>>
88
*/
99

1010
/**
@@ -171,6 +171,8 @@ public interface ReactNativeFeatureFlagsProvider {
171171

172172
@DoNotStrip public fun useSharedAnimatedBackend(): Boolean
173173

174+
@DoNotStrip public fun useTraitHiddenOnAndroid(): Boolean
175+
174176
@DoNotStrip public fun useTurboModuleInterop(): Boolean
175177

176178
@DoNotStrip public fun useTurboModules(): Boolean

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

Lines changed: 15 additions & 1 deletion
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<<bd78270ae3d4461c8f54a9bfb9fc8b20>>
7+
* @generated SignedSource<<285ec8cc3b3e5f55c5c31106b6df8717>>
88
*/
99

1010
/**
@@ -483,6 +483,12 @@ class ReactNativeFeatureFlagsJavaProvider
483483
return method(javaProvider_);
484484
}
485485

486+
bool useTraitHiddenOnAndroid() override {
487+
static const auto method =
488+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useTraitHiddenOnAndroid");
489+
return method(javaProvider_);
490+
}
491+
486492
bool useTurboModuleInterop() override {
487493
static const auto method =
488494
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useTurboModuleInterop");
@@ -887,6 +893,11 @@ bool JReactNativeFeatureFlagsCxxInterop::useSharedAnimatedBackend(
887893
return ReactNativeFeatureFlags::useSharedAnimatedBackend();
888894
}
889895

896+
bool JReactNativeFeatureFlagsCxxInterop::useTraitHiddenOnAndroid(
897+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
898+
return ReactNativeFeatureFlags::useTraitHiddenOnAndroid();
899+
}
900+
890901
bool JReactNativeFeatureFlagsCxxInterop::useTurboModuleInterop(
891902
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
892903
return ReactNativeFeatureFlags::useTurboModuleInterop();
@@ -1165,6 +1176,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
11651176
makeNativeMethod(
11661177
"useSharedAnimatedBackend",
11671178
JReactNativeFeatureFlagsCxxInterop::useSharedAnimatedBackend),
1179+
makeNativeMethod(
1180+
"useTraitHiddenOnAndroid",
1181+
JReactNativeFeatureFlagsCxxInterop::useTraitHiddenOnAndroid),
11681182
makeNativeMethod(
11691183
"useTurboModuleInterop",
11701184
JReactNativeFeatureFlagsCxxInterop::useTurboModuleInterop),

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

Lines changed: 4 additions & 1 deletion
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<<d6f0bbc55218e36f040c04baa9eb6d8d>>
7+
* @generated SignedSource<<34ad93365b68934d051b0de522a36014>>
88
*/
99

1010
/**
@@ -252,6 +252,9 @@ class JReactNativeFeatureFlagsCxxInterop
252252
static bool useSharedAnimatedBackend(
253253
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
254254

255+
static bool useTraitHiddenOnAndroid(
256+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
257+
255258
static bool useTurboModuleInterop(
256259
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
257260

packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp

Lines changed: 5 additions & 1 deletion
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<<68811ae2e7fcb8b8b406097839f669dd>>
7+
* @generated SignedSource<<5fe8801a343267a840956183ca93c757>>
88
*/
99

1010
/**
@@ -322,6 +322,10 @@ bool ReactNativeFeatureFlags::useSharedAnimatedBackend() {
322322
return getAccessor().useSharedAnimatedBackend();
323323
}
324324

325+
bool ReactNativeFeatureFlags::useTraitHiddenOnAndroid() {
326+
return getAccessor().useTraitHiddenOnAndroid();
327+
}
328+
325329
bool ReactNativeFeatureFlags::useTurboModuleInterop() {
326330
return getAccessor().useTurboModuleInterop();
327331
}

packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h

Lines changed: 6 additions & 1 deletion
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<<93fb26b6c04daf8d35aec7bca867fa70>>
7+
* @generated SignedSource<<67cb9ad627e865b24b380be1ef6e0db7>>
88
*/
99

1010
/**
@@ -409,6 +409,11 @@ class ReactNativeFeatureFlags {
409409
*/
410410
RN_EXPORT static bool useSharedAnimatedBackend();
411411

412+
/**
413+
* Use Trait::hidden on Android
414+
*/
415+
RN_EXPORT static bool useTraitHiddenOnAndroid();
416+
412417
/**
413418
* In Bridgeless mode, should legacy NativeModules use the TurboModule system?
414419
*/

0 commit comments

Comments
 (0)