Skip to content

Commit 1f47800

Browse files
zeyapfacebook-github-bot
authored andcommitted
create feature flag responderTerminateOnScrollAndroid (facebook#54008)
Summary: ## Changelog: [Internal] [Added] - create feature flag responderTerminateOnScrollAndroid Reviewed By: javache Differential Revision: D83584280
1 parent b3341d3 commit 1f47800

20 files changed

+155
-38
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<<8af0aea8bbf4cffaad7d312032bef0e4>>
7+
* @generated SignedSource<<4f9777b3b50f714214f9f0f86d5176f1>>
88
*/
99

1010
/**
@@ -384,6 +384,12 @@ public object ReactNativeFeatureFlags {
384384
@JvmStatic
385385
public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = accessor.shouldPressibilityUseW3CPointerEventsForHover()
386386

387+
/**
388+
* Do not emit touchcancel from Android ScrollView, instead native topScroll event will trigger responder transfer and terminate in RN renderer.
389+
*/
390+
@JvmStatic
391+
public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean = accessor.shouldTriggerResponderTransferOnScrollAndroid()
392+
387393
/**
388394
* Skip activity identity assertion in ReactHostImpl::onHostPause()
389395
*/

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<<5c2aa1e15e7fbe129b8f774d2dc7be70>>
7+
* @generated SignedSource<<7e45b713bab183402e93ee058ea7cb36>>
88
*/
99

1010
/**
@@ -79,6 +79,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
7979
private var preparedTextCacheSizeCache: Double? = null
8080
private var preventShadowTreeCommitExhaustionCache: Boolean? = null
8181
private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
82+
private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
8283
private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
8384
private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
8485
private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
@@ -629,6 +630,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
629630
return cached
630631
}
631632

633+
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
634+
var cached = shouldTriggerResponderTransferOnScrollAndroidCache
635+
if (cached == null) {
636+
cached = ReactNativeFeatureFlagsCxxInterop.shouldTriggerResponderTransferOnScrollAndroid()
637+
shouldTriggerResponderTransferOnScrollAndroidCache = cached
638+
}
639+
return cached
640+
}
641+
632642
override fun skipActivityIdentityAssertionOnHostPause(): Boolean {
633643
var cached = skipActivityIdentityAssertionOnHostPauseCache
634644
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<<0bd8796f4580322a78690ec4469c07ce>>
7+
* @generated SignedSource<<a8097e06e4ad0e329bd81fd6d23c031a>>
88
*/
99

1010
/**
@@ -146,6 +146,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
146146

147147
@DoNotStrip @JvmStatic public external fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
148148

149+
@DoNotStrip @JvmStatic public external fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
150+
149151
@DoNotStrip @JvmStatic public external fun skipActivityIdentityAssertionOnHostPause(): Boolean
150152

151153
@DoNotStrip @JvmStatic public external fun sweepActiveTouchOnChildNativeGesturesAndroid(): 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<<7c7796cbe2722f0f6e5b2cc4ed43a0d5>>
7+
* @generated SignedSource<<c2e602217d9d88c23e958c8b73f22e5c>>
88
*/
99

1010
/**
@@ -141,6 +141,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
141141

142142
override fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = false
143143

144+
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean = false
145+
144146
override fun skipActivityIdentityAssertionOnHostPause(): Boolean = false
145147

146148
override fun sweepActiveTouchOnChildNativeGesturesAndroid(): 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<<f3420de2307aab53b885fa491183d84b>>
7+
* @generated SignedSource<<f88ede5a21467165ef04b5d16d869d1f>>
88
*/
99

1010
/**
@@ -83,6 +83,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
8383
private var preparedTextCacheSizeCache: Double? = null
8484
private var preventShadowTreeCommitExhaustionCache: Boolean? = null
8585
private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
86+
private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
8687
private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
8788
private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
8889
private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
@@ -692,6 +693,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
692693
return cached
693694
}
694695

696+
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
697+
var cached = shouldTriggerResponderTransferOnScrollAndroidCache
698+
if (cached == null) {
699+
cached = currentProvider.shouldTriggerResponderTransferOnScrollAndroid()
700+
accessedFeatureFlags.add("shouldTriggerResponderTransferOnScrollAndroid")
701+
shouldTriggerResponderTransferOnScrollAndroidCache = cached
702+
}
703+
return cached
704+
}
705+
695706
override fun skipActivityIdentityAssertionOnHostPause(): Boolean {
696707
var cached = skipActivityIdentityAssertionOnHostPauseCache
697708
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<<d4370bcde97d3c2b0b8d2a77e42a6031>>
7+
* @generated SignedSource<<aa0e9e5830b13c4b290dcae42b757a3a>>
88
*/
99

1010
/**
@@ -141,6 +141,8 @@ public interface ReactNativeFeatureFlagsProvider {
141141

142142
@DoNotStrip public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
143143

144+
@DoNotStrip public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
145+
144146
@DoNotStrip public fun skipActivityIdentityAssertionOnHostPause(): Boolean
145147

146148
@DoNotStrip public fun sweepActiveTouchOnChildNativeGesturesAndroid(): 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<<740fec2589997816f17778f57b1d4abf>>
7+
* @generated SignedSource<<5cf0077264f7ceca6617dbe20bcc122f>>
88
*/
99

1010
/**
@@ -393,6 +393,12 @@ class ReactNativeFeatureFlagsJavaProvider
393393
return method(javaProvider_);
394394
}
395395

396+
bool shouldTriggerResponderTransferOnScrollAndroid() override {
397+
static const auto method =
398+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("shouldTriggerResponderTransferOnScrollAndroid");
399+
return method(javaProvider_);
400+
}
401+
396402
bool skipActivityIdentityAssertionOnHostPause() override {
397403
static const auto method =
398404
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("skipActivityIdentityAssertionOnHostPause");
@@ -800,6 +806,11 @@ bool JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsFo
800806
return ReactNativeFeatureFlags::shouldPressibilityUseW3CPointerEventsForHover();
801807
}
802808

809+
bool JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid(
810+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
811+
return ReactNativeFeatureFlags::shouldTriggerResponderTransferOnScrollAndroid();
812+
}
813+
803814
bool JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause(
804815
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
805816
return ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause();
@@ -1098,6 +1109,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
10981109
makeNativeMethod(
10991110
"shouldPressibilityUseW3CPointerEventsForHover",
11001111
JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsForHover),
1112+
makeNativeMethod(
1113+
"shouldTriggerResponderTransferOnScrollAndroid",
1114+
JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid),
11011115
makeNativeMethod(
11021116
"skipActivityIdentityAssertionOnHostPause",
11031117
JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause),

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<<2d4ccbeed5ffafd40715357ff98d83b1>>
7+
* @generated SignedSource<<04929fb70beb00c1f690bdb11703b322>>
88
*/
99

1010
/**
@@ -207,6 +207,9 @@ class JReactNativeFeatureFlagsCxxInterop
207207
static bool shouldPressibilityUseW3CPointerEventsForHover(
208208
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
209209

210+
static bool shouldTriggerResponderTransferOnScrollAndroid(
211+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
212+
210213
static bool skipActivityIdentityAssertionOnHostPause(
211214
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
212215

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<<287689f62d05f2d27c146856b7857010>>
7+
* @generated SignedSource<<bbe47fc20b10610f0ef14e2d35406145>>
88
*/
99

1010
/**
@@ -262,6 +262,10 @@ bool ReactNativeFeatureFlags::shouldPressibilityUseW3CPointerEventsForHover() {
262262
return getAccessor().shouldPressibilityUseW3CPointerEventsForHover();
263263
}
264264

265+
bool ReactNativeFeatureFlags::shouldTriggerResponderTransferOnScrollAndroid() {
266+
return getAccessor().shouldTriggerResponderTransferOnScrollAndroid();
267+
}
268+
265269
bool ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause() {
266270
return getAccessor().skipActivityIdentityAssertionOnHostPause();
267271
}

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<<ce76bbae9b797c6c1c9a1ceb1350f370>>
7+
* @generated SignedSource<<72899a3f546792dd4c868c561f55c10f>>
88
*/
99

1010
/**
@@ -334,6 +334,11 @@ class ReactNativeFeatureFlags {
334334
*/
335335
RN_EXPORT static bool shouldPressibilityUseW3CPointerEventsForHover();
336336

337+
/**
338+
* Do not emit touchcancel from Android ScrollView, instead native topScroll event will trigger responder transfer and terminate in RN renderer.
339+
*/
340+
RN_EXPORT static bool shouldTriggerResponderTransferOnScrollAndroid();
341+
337342
/**
338343
* Skip activity identity assertion in ReactHostImpl::onHostPause()
339344
*/

0 commit comments

Comments
 (0)