Skip to content

Commit b0b4344

Browse files
Abbondanzometa-codesync[bot]
authored andcommitted
Add feature flag for checking if components should send key presses (facebook#54295)
Summary: Pull Request resolved: facebook#54295 Sets up a feature flag for keydown/keyup events. Split out from actual work implementing the feature to avoid having to run codegen each commit Changelog: [Internal] Reviewed By: alanleedev Differential Revision: D84938062 fbshipit-source-id: b556f347720b4a651cd321996f2914a9c670c7a1
1 parent aec3294 commit b0b4344

20 files changed

+187
-70
lines changed

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<<28000f9d4a36207875619060f2fa5713>>
7+
* @generated SignedSource<<3ea1ee77358d99334a7c40bed44f2d90>>
88
*/
99

1010
/**
@@ -210,6 +210,12 @@ public object ReactNativeFeatureFlags {
210210
@JvmStatic
211211
public fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean = accessor.enableInteropViewManagerClassLookUpOptimizationIOS()
212212

213+
/**
214+
* Enables key up/down/press events to be sent to JS from components
215+
*/
216+
@JvmStatic
217+
public fun enableKeyEvents(): Boolean = accessor.enableKeyEvents()
218+
213219
/**
214220
* When enabled, LayoutAnimations API will animate state changes on Android.
215221
*/

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<<ba1a322a9c7069cf63fd759090f9025d>>
7+
* @generated SignedSource<<007a5a1235a999716b382ffd4ca23158>>
88
*/
99

1010
/**
@@ -50,6 +50,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
5050
private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
5151
private var enableImperativeFocusCache: Boolean? = null
5252
private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
53+
private var enableKeyEventsCache: Boolean? = null
5354
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
5455
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
5556
private var enableMainQueueCoordinatorOnIOSCache: Boolean? = null
@@ -371,6 +372,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
371372
return cached
372373
}
373374

375+
override fun enableKeyEvents(): Boolean {
376+
var cached = enableKeyEventsCache
377+
if (cached == null) {
378+
cached = ReactNativeFeatureFlagsCxxInterop.enableKeyEvents()
379+
enableKeyEventsCache = cached
380+
}
381+
return cached
382+
}
383+
374384
override fun enableLayoutAnimationsOnAndroid(): Boolean {
375385
var cached = enableLayoutAnimationsOnAndroidCache
376386
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<<412a865e975214a0d794985e48fbbe4b>>
7+
* @generated SignedSource<<8a775646d455cdb6d017fd08aee3e807>>
88
*/
99

1010
/**
@@ -88,6 +88,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
8888

8989
@DoNotStrip @JvmStatic public external fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
9090

91+
@DoNotStrip @JvmStatic public external fun enableKeyEvents(): Boolean
92+
9193
@DoNotStrip @JvmStatic public external fun enableLayoutAnimationsOnAndroid(): Boolean
9294

9395
@DoNotStrip @JvmStatic public external fun enableLayoutAnimationsOnIOS(): 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<<3ab7c812090eec90ebb2bbaffd170729>>
7+
* @generated SignedSource<<346acf2190f419cc4de64f66cb40f802>>
88
*/
99

1010
/**
@@ -83,6 +83,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
8383

8484
override fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean = false
8585

86+
override fun enableKeyEvents(): Boolean = false
87+
8688
override fun enableLayoutAnimationsOnAndroid(): Boolean = false
8789

8890
override fun enableLayoutAnimationsOnIOS(): Boolean = true

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<<7f43cde1ba2bef2300c077f35b168d31>>
7+
* @generated SignedSource<<ebeb9b37b8d3d0e31f4d4966cbf42b3f>>
88
*/
99

1010
/**
@@ -54,6 +54,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
5454
private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
5555
private var enableImperativeFocusCache: Boolean? = null
5656
private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
57+
private var enableKeyEventsCache: Boolean? = null
5758
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
5859
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
5960
private var enableMainQueueCoordinatorOnIOSCache: Boolean? = null
@@ -405,6 +406,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
405406
return cached
406407
}
407408

409+
override fun enableKeyEvents(): Boolean {
410+
var cached = enableKeyEventsCache
411+
if (cached == null) {
412+
cached = currentProvider.enableKeyEvents()
413+
accessedFeatureFlags.add("enableKeyEvents")
414+
enableKeyEventsCache = cached
415+
}
416+
return cached
417+
}
418+
408419
override fun enableLayoutAnimationsOnAndroid(): Boolean {
409420
var cached = enableLayoutAnimationsOnAndroidCache
410421
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<<692dcdb2af3c6af981e8f48686ca105e>>
7+
* @generated SignedSource<<1c4ea60d119996f37742542976fedcc8>>
88
*/
99

1010
/**
@@ -83,6 +83,8 @@ public interface ReactNativeFeatureFlagsProvider {
8383

8484
@DoNotStrip public fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
8585

86+
@DoNotStrip public fun enableKeyEvents(): Boolean
87+
8688
@DoNotStrip public fun enableLayoutAnimationsOnAndroid(): Boolean
8789

8890
@DoNotStrip public fun enableLayoutAnimationsOnIOS(): 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<<48a05f5360c927150021af873e6d52b8>>
7+
* @generated SignedSource<<d04720bbbd42eaf338be612a0f3e36a6>>
88
*/
99

1010
/**
@@ -219,6 +219,12 @@ class ReactNativeFeatureFlagsJavaProvider
219219
return method(javaProvider_);
220220
}
221221

222+
bool enableKeyEvents() override {
223+
static const auto method =
224+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableKeyEvents");
225+
return method(javaProvider_);
226+
}
227+
222228
bool enableLayoutAnimationsOnAndroid() override {
223229
static const auto method =
224230
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableLayoutAnimationsOnAndroid");
@@ -673,6 +679,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableInteropViewManagerClassLookUpOpti
673679
return ReactNativeFeatureFlags::enableInteropViewManagerClassLookUpOptimizationIOS();
674680
}
675681

682+
bool JReactNativeFeatureFlagsCxxInterop::enableKeyEvents(
683+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
684+
return ReactNativeFeatureFlags::enableKeyEvents();
685+
}
686+
676687
bool JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnAndroid(
677688
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
678689
return ReactNativeFeatureFlags::enableLayoutAnimationsOnAndroid();
@@ -1044,6 +1055,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
10441055
makeNativeMethod(
10451056
"enableInteropViewManagerClassLookUpOptimizationIOS",
10461057
JReactNativeFeatureFlagsCxxInterop::enableInteropViewManagerClassLookUpOptimizationIOS),
1058+
makeNativeMethod(
1059+
"enableKeyEvents",
1060+
JReactNativeFeatureFlagsCxxInterop::enableKeyEvents),
10471061
makeNativeMethod(
10481062
"enableLayoutAnimationsOnAndroid",
10491063
JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnAndroid),

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<<e8bbe1de8eccb3ecea6b9f001de07fd2>>
7+
* @generated SignedSource<<7679a91daba1f8941b78a4be4baea6ef>>
88
*/
99

1010
/**
@@ -120,6 +120,9 @@ class JReactNativeFeatureFlagsCxxInterop
120120
static bool enableInteropViewManagerClassLookUpOptimizationIOS(
121121
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
122122

123+
static bool enableKeyEvents(
124+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
125+
123126
static bool enableLayoutAnimationsOnAndroid(
124127
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
125128

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<<0554340092d31b5431e201f570599ab5>>
7+
* @generated SignedSource<<303e8208cbdf0b9b9041942822c5597d>>
88
*/
99

1010
/**
@@ -146,6 +146,10 @@ bool ReactNativeFeatureFlags::enableInteropViewManagerClassLookUpOptimizationIOS
146146
return getAccessor().enableInteropViewManagerClassLookUpOptimizationIOS();
147147
}
148148

149+
bool ReactNativeFeatureFlags::enableKeyEvents() {
150+
return getAccessor().enableKeyEvents();
151+
}
152+
149153
bool ReactNativeFeatureFlags::enableLayoutAnimationsOnAndroid() {
150154
return getAccessor().enableLayoutAnimationsOnAndroid();
151155
}

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<<98a77cdecfd3e6d42f03b2b4ba3d8c88>>
7+
* @generated SignedSource<<07b665ad842faafaf7520051f636d805>>
88
*/
99

1010
/**
@@ -189,6 +189,11 @@ class ReactNativeFeatureFlags {
189189
*/
190190
RN_EXPORT static bool enableInteropViewManagerClassLookUpOptimizationIOS();
191191

192+
/**
193+
* Enables key up/down/press events to be sent to JS from components
194+
*/
195+
RN_EXPORT static bool enableKeyEvents();
196+
192197
/**
193198
* When enabled, LayoutAnimations API will animate state changes on Android.
194199
*/

0 commit comments

Comments
 (0)