react-native 0.83.0-nightly-20251104-502efe1cc → 0.83.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +0 -3
- package/React/Base/RCTVersion.m +1 -1
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +8 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +4 -5
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/jsinspector-modern/TracingAgent.cpp +2 -0
- package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +55 -3
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +36 -18
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -1
- package/package.json +9 -9
- package/sdks/.hermesversion +1 -0
- package/sdks/hermes-engine/version.properties +1 -1
- package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +0 -48
- package/ReactCommon/jsinspector-modern/tests/TracingTest.h +0 -82
|
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
|
|
|
29
29
|
static major: number = 0;
|
|
30
30
|
static minor: number = 83;
|
|
31
31
|
static patch: number = 0;
|
|
32
|
-
static prerelease: string | null = '
|
|
32
|
+
static prerelease: string | null = 'rc.0';
|
|
33
33
|
|
|
34
34
|
static getVersionString(): string {
|
|
35
35
|
return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
|
|
@@ -727,9 +727,6 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame)
|
|
|
727
727
|
return @"Join";
|
|
728
728
|
case UIReturnKeyEmergencyCall:
|
|
729
729
|
return @"Emergency Call";
|
|
730
|
-
case UIReturnKeyDefault:
|
|
731
|
-
case UIReturnKeyContinue:
|
|
732
|
-
case UIReturnKeyDone:
|
|
733
730
|
default:
|
|
734
731
|
return @"Done";
|
|
735
732
|
}
|
package/React/Base/RCTVersion.m
CHANGED
|
@@ -289,6 +289,7 @@ protected:
|
|
|
289
289
|
methodMap_["shouldPressibilityUseW3CPointerEventsForHover"] = MethodMetadata {.argCount = 0, .invoker = __shouldPressibilityUseW3CPointerEventsForHover};
|
|
290
290
|
methodMap_["shouldTriggerResponderTransferOnScrollAndroid"] = MethodMetadata {.argCount = 0, .invoker = __shouldTriggerResponderTransferOnScrollAndroid};
|
|
291
291
|
methodMap_["skipActivityIdentityAssertionOnHostPause"] = MethodMetadata {.argCount = 0, .invoker = __skipActivityIdentityAssertionOnHostPause};
|
|
292
|
+
methodMap_["sweepActiveTouchOnChildNativeGesturesAndroid"] = MethodMetadata {.argCount = 0, .invoker = __sweepActiveTouchOnChildNativeGesturesAndroid};
|
|
292
293
|
methodMap_["traceTurboModulePromiseRejectionsOnAndroid"] = MethodMetadata {.argCount = 0, .invoker = __traceTurboModulePromiseRejectionsOnAndroid};
|
|
293
294
|
methodMap_["updateRuntimeShadowNodeReferencesOnCommit"] = MethodMetadata {.argCount = 0, .invoker = __updateRuntimeShadowNodeReferencesOnCommit};
|
|
294
295
|
methodMap_["useAlwaysAvailableJSErrorHandling"] = MethodMetadata {.argCount = 0, .invoker = __useAlwaysAvailableJSErrorHandling};
|
|
@@ -771,6 +772,13 @@ private:
|
|
|
771
772
|
return bridging::callFromJs<bool>(rt, &T::skipActivityIdentityAssertionOnHostPause, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
|
|
772
773
|
}
|
|
773
774
|
|
|
775
|
+
static jsi::Value __sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
|
|
776
|
+
static_assert(
|
|
777
|
+
bridging::getParameterCount(&T::sweepActiveTouchOnChildNativeGesturesAndroid) == 1,
|
|
778
|
+
"Expected sweepActiveTouchOnChildNativeGesturesAndroid(...) to have 1 parameters");
|
|
779
|
+
return bridging::callFromJs<bool>(rt, &T::sweepActiveTouchOnChildNativeGesturesAndroid, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
|
|
780
|
+
}
|
|
781
|
+
|
|
774
782
|
static jsi::Value __traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
|
|
775
783
|
static_assert(
|
|
776
784
|
bridging::getParameterCount(&T::traceTurboModulePromiseRejectionsOnAndroid) == 1,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<d8dc8c3a2efe8b7e870546e5749ef5ad>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -420,6 +420,12 @@ public object ReactNativeFeatureFlags {
|
|
|
420
420
|
@JvmStatic
|
|
421
421
|
public fun skipActivityIdentityAssertionOnHostPause(): Boolean = accessor.skipActivityIdentityAssertionOnHostPause()
|
|
422
422
|
|
|
423
|
+
/**
|
|
424
|
+
* A flag to tell Fabric to sweep active touches from JSTouchDispatcher in Android when a child native gesture is started.
|
|
425
|
+
*/
|
|
426
|
+
@JvmStatic
|
|
427
|
+
public fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean = accessor.sweepActiveTouchOnChildNativeGesturesAndroid()
|
|
428
|
+
|
|
423
429
|
/**
|
|
424
430
|
* Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause.
|
|
425
431
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<447ccc7271b71b0208a2297b7eba5995>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -85,6 +85,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
|
|
85
85
|
private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
|
|
86
86
|
private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
|
|
87
87
|
private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
|
|
88
|
+
private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
|
|
88
89
|
private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
|
|
89
90
|
private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
|
|
90
91
|
private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
|
|
@@ -688,6 +689,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
|
|
688
689
|
return cached
|
|
689
690
|
}
|
|
690
691
|
|
|
692
|
+
override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean {
|
|
693
|
+
var cached = sweepActiveTouchOnChildNativeGesturesAndroidCache
|
|
694
|
+
if (cached == null) {
|
|
695
|
+
cached = ReactNativeFeatureFlagsCxxInterop.sweepActiveTouchOnChildNativeGesturesAndroid()
|
|
696
|
+
sweepActiveTouchOnChildNativeGesturesAndroidCache = cached
|
|
697
|
+
}
|
|
698
|
+
return cached
|
|
699
|
+
}
|
|
700
|
+
|
|
691
701
|
override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean {
|
|
692
702
|
var cached = traceTurboModulePromiseRejectionsOnAndroidCache
|
|
693
703
|
if (cached == null) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<d6403b67e269ad80ef3e2389ac923c8a>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -158,6 +158,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
|
|
|
158
158
|
|
|
159
159
|
@DoNotStrip @JvmStatic public external fun skipActivityIdentityAssertionOnHostPause(): Boolean
|
|
160
160
|
|
|
161
|
+
@DoNotStrip @JvmStatic public external fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean
|
|
162
|
+
|
|
161
163
|
@DoNotStrip @JvmStatic public external fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean
|
|
162
164
|
|
|
163
165
|
@DoNotStrip @JvmStatic public external fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<ab48ba86a7cf3cd35ec530a216aea774>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -153,6 +153,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
|
|
|
153
153
|
|
|
154
154
|
override fun skipActivityIdentityAssertionOnHostPause(): Boolean = false
|
|
155
155
|
|
|
156
|
+
override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean = true
|
|
157
|
+
|
|
156
158
|
override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean = false
|
|
157
159
|
|
|
158
160
|
override fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean = false
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<6f6b5abe79764b88cf3ed62fe0230786>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -89,6 +89,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
|
|
89
89
|
private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
|
|
90
90
|
private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
|
|
91
91
|
private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
|
|
92
|
+
private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
|
|
92
93
|
private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
|
|
93
94
|
private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
|
|
94
95
|
private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
|
|
@@ -757,6 +758,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
|
|
757
758
|
return cached
|
|
758
759
|
}
|
|
759
760
|
|
|
761
|
+
override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean {
|
|
762
|
+
var cached = sweepActiveTouchOnChildNativeGesturesAndroidCache
|
|
763
|
+
if (cached == null) {
|
|
764
|
+
cached = currentProvider.sweepActiveTouchOnChildNativeGesturesAndroid()
|
|
765
|
+
accessedFeatureFlags.add("sweepActiveTouchOnChildNativeGesturesAndroid")
|
|
766
|
+
sweepActiveTouchOnChildNativeGesturesAndroidCache = cached
|
|
767
|
+
}
|
|
768
|
+
return cached
|
|
769
|
+
}
|
|
770
|
+
|
|
760
771
|
override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean {
|
|
761
772
|
var cached = traceTurboModulePromiseRejectionsOnAndroidCache
|
|
762
773
|
if (cached == null) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<6b61490a8d6b1df1d6264016455382f8>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -153,6 +153,8 @@ public interface ReactNativeFeatureFlagsProvider {
|
|
|
153
153
|
|
|
154
154
|
@DoNotStrip public fun skipActivityIdentityAssertionOnHostPause(): Boolean
|
|
155
155
|
|
|
156
|
+
@DoNotStrip public fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean
|
|
157
|
+
|
|
156
158
|
@DoNotStrip public fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean
|
|
157
159
|
|
|
158
160
|
@DoNotStrip public fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean
|
|
@@ -14,6 +14,7 @@ import com.facebook.infer.annotation.Assertions
|
|
|
14
14
|
import com.facebook.react.bridge.ReactContext
|
|
15
15
|
import com.facebook.react.common.ReactConstants
|
|
16
16
|
import com.facebook.react.common.annotations.UnstableReactNativeAPI
|
|
17
|
+
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
|
|
17
18
|
import com.facebook.react.uimanager.common.UIManagerType
|
|
18
19
|
import com.facebook.react.uimanager.events.EventDispatcher
|
|
19
20
|
import com.facebook.react.uimanager.events.TouchEvent
|
|
@@ -58,7 +59,7 @@ public class JSTouchDispatcher(private val viewGroup: ViewGroup) {
|
|
|
58
59
|
dispatchCancelEvent(androidEvent, eventDispatcher)
|
|
59
60
|
childIsHandlingNativeGesture = true
|
|
60
61
|
|
|
61
|
-
if (targetTag != -1) {
|
|
62
|
+
if (targetTag != -1 && ReactNativeFeatureFlags.sweepActiveTouchOnChildNativeGesturesAndroid()) {
|
|
62
63
|
val surfaceId = UIManagerHelper.getSurfaceId(viewGroup)
|
|
63
64
|
sweepActiveTouchForTag(surfaceId, targetTag, reactContext)
|
|
64
65
|
}
|
|
@@ -29,7 +29,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
|
|
|
29
29
|
private lateinit var _eventName: String
|
|
30
30
|
private var coalescingKey = UNSET_COALESCING_KEY
|
|
31
31
|
private var pointersEventData: List<WritableMap>? = null
|
|
32
|
-
private var eventState: PointerEventState
|
|
32
|
+
private lateinit var eventState: PointerEventState
|
|
33
33
|
|
|
34
34
|
private fun init(
|
|
35
35
|
eventName: String,
|
|
@@ -84,7 +84,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
|
|
|
84
84
|
return@EventAnimationDriverMatchSpec false
|
|
85
85
|
}
|
|
86
86
|
if (isBubblingEvent(eventName)) {
|
|
87
|
-
for (viewTarget in
|
|
87
|
+
for (viewTarget in eventState.hitPathForActivePointer) {
|
|
88
88
|
if (viewTarget.getViewId() == viewTag) {
|
|
89
89
|
return@EventAnimationDriverMatchSpec true
|
|
90
90
|
}
|
|
@@ -97,10 +97,10 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
override fun onDispose() {
|
|
100
|
-
eventState = null
|
|
101
100
|
pointersEventData = null
|
|
101
|
+
val motionEvent = motionEvent
|
|
102
|
+
this.motionEvent = null
|
|
102
103
|
motionEvent?.recycle()
|
|
103
|
-
motionEvent = null
|
|
104
104
|
|
|
105
105
|
// Either `this` is in the event pool, or motionEvent
|
|
106
106
|
// is null. It is in theory not possible for a PointerEvent to
|
|
@@ -137,7 +137,6 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
|
|
|
137
137
|
val pointerEvent = Arguments.createMap()
|
|
138
138
|
val motionEvent = checkNotNull(motionEvent)
|
|
139
139
|
val pointerId = motionEvent.getPointerId(index)
|
|
140
|
-
val eventState = checkNotNull(eventState)
|
|
141
140
|
|
|
142
141
|
// https://www.w3.org/TR/pointerevents/#pointerevent-interface
|
|
143
142
|
pointerEvent.putDouble("pointerId", pointerId.toDouble())
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<13ed11b5c260fae79048ea80745d22fe>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -429,6 +429,12 @@ class ReactNativeFeatureFlagsJavaProvider
|
|
|
429
429
|
return method(javaProvider_);
|
|
430
430
|
}
|
|
431
431
|
|
|
432
|
+
bool sweepActiveTouchOnChildNativeGesturesAndroid() override {
|
|
433
|
+
static const auto method =
|
|
434
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("sweepActiveTouchOnChildNativeGesturesAndroid");
|
|
435
|
+
return method(javaProvider_);
|
|
436
|
+
}
|
|
437
|
+
|
|
432
438
|
bool traceTurboModulePromiseRejectionsOnAndroid() override {
|
|
433
439
|
static const auto method =
|
|
434
440
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("traceTurboModulePromiseRejectionsOnAndroid");
|
|
@@ -860,6 +866,11 @@ bool JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPaus
|
|
|
860
866
|
return ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause();
|
|
861
867
|
}
|
|
862
868
|
|
|
869
|
+
bool JReactNativeFeatureFlagsCxxInterop::sweepActiveTouchOnChildNativeGesturesAndroid(
|
|
870
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
871
|
+
return ReactNativeFeatureFlags::sweepActiveTouchOnChildNativeGesturesAndroid();
|
|
872
|
+
}
|
|
873
|
+
|
|
863
874
|
bool JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid(
|
|
864
875
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
865
876
|
return ReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid();
|
|
@@ -1171,6 +1182,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
|
|
1171
1182
|
makeNativeMethod(
|
|
1172
1183
|
"skipActivityIdentityAssertionOnHostPause",
|
|
1173
1184
|
JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause),
|
|
1185
|
+
makeNativeMethod(
|
|
1186
|
+
"sweepActiveTouchOnChildNativeGesturesAndroid",
|
|
1187
|
+
JReactNativeFeatureFlagsCxxInterop::sweepActiveTouchOnChildNativeGesturesAndroid),
|
|
1174
1188
|
makeNativeMethod(
|
|
1175
1189
|
"traceTurboModulePromiseRejectionsOnAndroid",
|
|
1176
1190
|
JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid),
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<1e57bf8252c16fc10bbfcae08710af85>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -225,6 +225,9 @@ class JReactNativeFeatureFlagsCxxInterop
|
|
|
225
225
|
static bool skipActivityIdentityAssertionOnHostPause(
|
|
226
226
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
227
227
|
|
|
228
|
+
static bool sweepActiveTouchOnChildNativeGesturesAndroid(
|
|
229
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
230
|
+
|
|
228
231
|
static bool traceTurboModulePromiseRejectionsOnAndroid(
|
|
229
232
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
230
233
|
|
|
@@ -53,6 +53,7 @@ TracingAgent::~TracingAgent() {
|
|
|
53
53
|
|
|
54
54
|
bool TracingAgent::handleRequest(const cdp::PreparsedRequest& req) {
|
|
55
55
|
if (req.method == "Tracing.start") {
|
|
56
|
+
// @cdp Tracing.start support is experimental.
|
|
56
57
|
if (sessionState_.isDebuggerDomainEnabled) {
|
|
57
58
|
frontendChannel_(
|
|
58
59
|
cdp::jsonError(
|
|
@@ -80,6 +81,7 @@ bool TracingAgent::handleRequest(const cdp::PreparsedRequest& req) {
|
|
|
80
81
|
|
|
81
82
|
return true;
|
|
82
83
|
} else if (req.method == "Tracing.end") {
|
|
84
|
+
// @cdp Tracing.end support is experimental.
|
|
83
85
|
auto state = hostTargetController_.stopTracing();
|
|
84
86
|
|
|
85
87
|
sessionState_.hasPendingTraceRecording = false;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
#include "
|
|
8
|
+
#include "JsiIntegrationTest.h"
|
|
9
9
|
#include "engines/JsiIntegrationTestHermesEngineAdapter.h"
|
|
10
10
|
|
|
11
11
|
#include <folly/executors/QueuedImmediateExecutor.h>
|
|
@@ -31,13 +31,13 @@ struct NetworkReporterTestParams {
|
|
|
31
31
|
*/
|
|
32
32
|
template <typename Params>
|
|
33
33
|
requires std::convertible_to<Params, NetworkReporterTestParams>
|
|
34
|
-
class NetworkReporterTestBase : public
|
|
34
|
+
class NetworkReporterTestBase : public JsiIntegrationPortableTestBase<
|
|
35
35
|
JsiIntegrationTestHermesEngineAdapter,
|
|
36
36
|
folly::QueuedImmediateExecutor>,
|
|
37
37
|
public WithParamInterface<Params> {
|
|
38
38
|
protected:
|
|
39
39
|
NetworkReporterTestBase()
|
|
40
|
-
:
|
|
40
|
+
: JsiIntegrationPortableTestBase({
|
|
41
41
|
.networkInspectionEnabled = true,
|
|
42
42
|
.enableNetworkEventReporting =
|
|
43
43
|
WithParamInterface<Params>::GetParam()
|
|
@@ -68,6 +68,58 @@ class NetworkReporterTestBase : public TracingTestBase<
|
|
|
68
68
|
urlMatcher);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
void startTracing() {
|
|
72
|
+
this->expectMessageFromPage(JsonEq(R"({
|
|
73
|
+
"id": 1,
|
|
74
|
+
"result": {}
|
|
75
|
+
})"));
|
|
76
|
+
|
|
77
|
+
this->toPage_->sendMessage(R"({
|
|
78
|
+
"id": 1,
|
|
79
|
+
"method": "Tracing.start"
|
|
80
|
+
})");
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Helper method to end tracing and collect all trace events from potentially
|
|
85
|
+
* multiple chunked Tracing.dataCollected messages.
|
|
86
|
+
* \returns A vector containing all collected trace events
|
|
87
|
+
*/
|
|
88
|
+
std::vector<folly::dynamic> endTracingAndCollectEvents() {
|
|
89
|
+
InSequence s;
|
|
90
|
+
|
|
91
|
+
this->expectMessageFromPage(JsonEq(R"({
|
|
92
|
+
"id": 1,
|
|
93
|
+
"result": {}
|
|
94
|
+
})"));
|
|
95
|
+
|
|
96
|
+
std::vector<folly::dynamic> allTraceEvents;
|
|
97
|
+
|
|
98
|
+
EXPECT_CALL(
|
|
99
|
+
fromPage(),
|
|
100
|
+
onMessage(JsonParsed(AtJsonPtr("/method", "Tracing.dataCollected"))))
|
|
101
|
+
.Times(AtLeast(1))
|
|
102
|
+
.WillRepeatedly(Invoke([&allTraceEvents](const std::string& message) {
|
|
103
|
+
auto parsedMessage = folly::parseJson(message);
|
|
104
|
+
auto& events = parsedMessage.at("params").at("value");
|
|
105
|
+
allTraceEvents.insert(
|
|
106
|
+
allTraceEvents.end(),
|
|
107
|
+
std::make_move_iterator(events.begin()),
|
|
108
|
+
std::make_move_iterator(events.end()));
|
|
109
|
+
}));
|
|
110
|
+
|
|
111
|
+
this->expectMessageFromPage(JsonParsed(AllOf(
|
|
112
|
+
AtJsonPtr("/method", "Tracing.tracingComplete"),
|
|
113
|
+
AtJsonPtr("/params/dataLossOccurred", false))));
|
|
114
|
+
|
|
115
|
+
this->toPage_->sendMessage(R"({
|
|
116
|
+
"id": 1,
|
|
117
|
+
"method": "Tracing.end"
|
|
118
|
+
})");
|
|
119
|
+
|
|
120
|
+
return allTraceEvents;
|
|
121
|
+
}
|
|
122
|
+
|
|
71
123
|
private:
|
|
72
124
|
std::optional<std::string> getScriptUrlById(const std::string& scriptId) {
|
|
73
125
|
auto it = scriptUrlsById_.find(scriptId);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<5d596cc470e66861d7c1b2ffbb15b268>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -286,6 +286,10 @@ bool ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause() {
|
|
|
286
286
|
return getAccessor().skipActivityIdentityAssertionOnHostPause();
|
|
287
287
|
}
|
|
288
288
|
|
|
289
|
+
bool ReactNativeFeatureFlags::sweepActiveTouchOnChildNativeGesturesAndroid() {
|
|
290
|
+
return getAccessor().sweepActiveTouchOnChildNativeGesturesAndroid();
|
|
291
|
+
}
|
|
292
|
+
|
|
289
293
|
bool ReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid() {
|
|
290
294
|
return getAccessor().traceTurboModulePromiseRejectionsOnAndroid();
|
|
291
295
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<41492e85e1feeb20d2e3e60b6cc6cbe7>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -364,6 +364,11 @@ class ReactNativeFeatureFlags {
|
|
|
364
364
|
*/
|
|
365
365
|
RN_EXPORT static bool skipActivityIdentityAssertionOnHostPause();
|
|
366
366
|
|
|
367
|
+
/**
|
|
368
|
+
* A flag to tell Fabric to sweep active touches from JSTouchDispatcher in Android when a child native gesture is started.
|
|
369
|
+
*/
|
|
370
|
+
RN_EXPORT static bool sweepActiveTouchOnChildNativeGesturesAndroid();
|
|
371
|
+
|
|
367
372
|
/**
|
|
368
373
|
* Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause.
|
|
369
374
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<cf152ea3a4e9635a71d2794a3139dadb>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -1199,6 +1199,24 @@ bool ReactNativeFeatureFlagsAccessor::skipActivityIdentityAssertionOnHostPause()
|
|
|
1199
1199
|
return flagValue.value();
|
|
1200
1200
|
}
|
|
1201
1201
|
|
|
1202
|
+
bool ReactNativeFeatureFlagsAccessor::sweepActiveTouchOnChildNativeGesturesAndroid() {
|
|
1203
|
+
auto flagValue = sweepActiveTouchOnChildNativeGesturesAndroid_.load();
|
|
1204
|
+
|
|
1205
|
+
if (!flagValue.has_value()) {
|
|
1206
|
+
// This block is not exclusive but it is not necessary.
|
|
1207
|
+
// If multiple threads try to initialize the feature flag, we would only
|
|
1208
|
+
// be accessing the provider multiple times but the end state of this
|
|
1209
|
+
// instance and the returned flag value would be the same.
|
|
1210
|
+
|
|
1211
|
+
markFlagAsAccessed(65, "sweepActiveTouchOnChildNativeGesturesAndroid");
|
|
1212
|
+
|
|
1213
|
+
flagValue = currentProvider_->sweepActiveTouchOnChildNativeGesturesAndroid();
|
|
1214
|
+
sweepActiveTouchOnChildNativeGesturesAndroid_ = flagValue;
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
return flagValue.value();
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1202
1220
|
bool ReactNativeFeatureFlagsAccessor::traceTurboModulePromiseRejectionsOnAndroid() {
|
|
1203
1221
|
auto flagValue = traceTurboModulePromiseRejectionsOnAndroid_.load();
|
|
1204
1222
|
|
|
@@ -1208,7 +1226,7 @@ bool ReactNativeFeatureFlagsAccessor::traceTurboModulePromiseRejectionsOnAndroid
|
|
|
1208
1226
|
// be accessing the provider multiple times but the end state of this
|
|
1209
1227
|
// instance and the returned flag value would be the same.
|
|
1210
1228
|
|
|
1211
|
-
markFlagAsAccessed(
|
|
1229
|
+
markFlagAsAccessed(66, "traceTurboModulePromiseRejectionsOnAndroid");
|
|
1212
1230
|
|
|
1213
1231
|
flagValue = currentProvider_->traceTurboModulePromiseRejectionsOnAndroid();
|
|
1214
1232
|
traceTurboModulePromiseRejectionsOnAndroid_ = flagValue;
|
|
@@ -1226,7 +1244,7 @@ bool ReactNativeFeatureFlagsAccessor::updateRuntimeShadowNodeReferencesOnCommit(
|
|
|
1226
1244
|
// be accessing the provider multiple times but the end state of this
|
|
1227
1245
|
// instance and the returned flag value would be the same.
|
|
1228
1246
|
|
|
1229
|
-
markFlagAsAccessed(
|
|
1247
|
+
markFlagAsAccessed(67, "updateRuntimeShadowNodeReferencesOnCommit");
|
|
1230
1248
|
|
|
1231
1249
|
flagValue = currentProvider_->updateRuntimeShadowNodeReferencesOnCommit();
|
|
1232
1250
|
updateRuntimeShadowNodeReferencesOnCommit_ = flagValue;
|
|
@@ -1244,7 +1262,7 @@ bool ReactNativeFeatureFlagsAccessor::useAlwaysAvailableJSErrorHandling() {
|
|
|
1244
1262
|
// be accessing the provider multiple times but the end state of this
|
|
1245
1263
|
// instance and the returned flag value would be the same.
|
|
1246
1264
|
|
|
1247
|
-
markFlagAsAccessed(
|
|
1265
|
+
markFlagAsAccessed(68, "useAlwaysAvailableJSErrorHandling");
|
|
1248
1266
|
|
|
1249
1267
|
flagValue = currentProvider_->useAlwaysAvailableJSErrorHandling();
|
|
1250
1268
|
useAlwaysAvailableJSErrorHandling_ = flagValue;
|
|
@@ -1262,7 +1280,7 @@ bool ReactNativeFeatureFlagsAccessor::useFabricInterop() {
|
|
|
1262
1280
|
// be accessing the provider multiple times but the end state of this
|
|
1263
1281
|
// instance and the returned flag value would be the same.
|
|
1264
1282
|
|
|
1265
|
-
markFlagAsAccessed(
|
|
1283
|
+
markFlagAsAccessed(69, "useFabricInterop");
|
|
1266
1284
|
|
|
1267
1285
|
flagValue = currentProvider_->useFabricInterop();
|
|
1268
1286
|
useFabricInterop_ = flagValue;
|
|
@@ -1280,7 +1298,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeEqualsInNativeReadableArrayAndroi
|
|
|
1280
1298
|
// be accessing the provider multiple times but the end state of this
|
|
1281
1299
|
// instance and the returned flag value would be the same.
|
|
1282
1300
|
|
|
1283
|
-
markFlagAsAccessed(
|
|
1301
|
+
markFlagAsAccessed(70, "useNativeEqualsInNativeReadableArrayAndroid");
|
|
1284
1302
|
|
|
1285
1303
|
flagValue = currentProvider_->useNativeEqualsInNativeReadableArrayAndroid();
|
|
1286
1304
|
useNativeEqualsInNativeReadableArrayAndroid_ = flagValue;
|
|
@@ -1298,7 +1316,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeTransformHelperAndroid() {
|
|
|
1298
1316
|
// be accessing the provider multiple times but the end state of this
|
|
1299
1317
|
// instance and the returned flag value would be the same.
|
|
1300
1318
|
|
|
1301
|
-
markFlagAsAccessed(
|
|
1319
|
+
markFlagAsAccessed(71, "useNativeTransformHelperAndroid");
|
|
1302
1320
|
|
|
1303
1321
|
flagValue = currentProvider_->useNativeTransformHelperAndroid();
|
|
1304
1322
|
useNativeTransformHelperAndroid_ = flagValue;
|
|
@@ -1316,7 +1334,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeViewConfigsInBridgelessMode() {
|
|
|
1316
1334
|
// be accessing the provider multiple times but the end state of this
|
|
1317
1335
|
// instance and the returned flag value would be the same.
|
|
1318
1336
|
|
|
1319
|
-
markFlagAsAccessed(
|
|
1337
|
+
markFlagAsAccessed(72, "useNativeViewConfigsInBridgelessMode");
|
|
1320
1338
|
|
|
1321
1339
|
flagValue = currentProvider_->useNativeViewConfigsInBridgelessMode();
|
|
1322
1340
|
useNativeViewConfigsInBridgelessMode_ = flagValue;
|
|
@@ -1334,7 +1352,7 @@ bool ReactNativeFeatureFlagsAccessor::useOptimizedEventBatchingOnAndroid() {
|
|
|
1334
1352
|
// be accessing the provider multiple times but the end state of this
|
|
1335
1353
|
// instance and the returned flag value would be the same.
|
|
1336
1354
|
|
|
1337
|
-
markFlagAsAccessed(
|
|
1355
|
+
markFlagAsAccessed(73, "useOptimizedEventBatchingOnAndroid");
|
|
1338
1356
|
|
|
1339
1357
|
flagValue = currentProvider_->useOptimizedEventBatchingOnAndroid();
|
|
1340
1358
|
useOptimizedEventBatchingOnAndroid_ = flagValue;
|
|
@@ -1352,7 +1370,7 @@ bool ReactNativeFeatureFlagsAccessor::useRawPropsJsiValue() {
|
|
|
1352
1370
|
// be accessing the provider multiple times but the end state of this
|
|
1353
1371
|
// instance and the returned flag value would be the same.
|
|
1354
1372
|
|
|
1355
|
-
markFlagAsAccessed(
|
|
1373
|
+
markFlagAsAccessed(74, "useRawPropsJsiValue");
|
|
1356
1374
|
|
|
1357
1375
|
flagValue = currentProvider_->useRawPropsJsiValue();
|
|
1358
1376
|
useRawPropsJsiValue_ = flagValue;
|
|
@@ -1370,7 +1388,7 @@ bool ReactNativeFeatureFlagsAccessor::useShadowNodeStateOnClone() {
|
|
|
1370
1388
|
// be accessing the provider multiple times but the end state of this
|
|
1371
1389
|
// instance and the returned flag value would be the same.
|
|
1372
1390
|
|
|
1373
|
-
markFlagAsAccessed(
|
|
1391
|
+
markFlagAsAccessed(75, "useShadowNodeStateOnClone");
|
|
1374
1392
|
|
|
1375
1393
|
flagValue = currentProvider_->useShadowNodeStateOnClone();
|
|
1376
1394
|
useShadowNodeStateOnClone_ = flagValue;
|
|
@@ -1388,7 +1406,7 @@ bool ReactNativeFeatureFlagsAccessor::useSharedAnimatedBackend() {
|
|
|
1388
1406
|
// be accessing the provider multiple times but the end state of this
|
|
1389
1407
|
// instance and the returned flag value would be the same.
|
|
1390
1408
|
|
|
1391
|
-
markFlagAsAccessed(
|
|
1409
|
+
markFlagAsAccessed(76, "useSharedAnimatedBackend");
|
|
1392
1410
|
|
|
1393
1411
|
flagValue = currentProvider_->useSharedAnimatedBackend();
|
|
1394
1412
|
useSharedAnimatedBackend_ = flagValue;
|
|
@@ -1406,7 +1424,7 @@ bool ReactNativeFeatureFlagsAccessor::useTraitHiddenOnAndroid() {
|
|
|
1406
1424
|
// be accessing the provider multiple times but the end state of this
|
|
1407
1425
|
// instance and the returned flag value would be the same.
|
|
1408
1426
|
|
|
1409
|
-
markFlagAsAccessed(
|
|
1427
|
+
markFlagAsAccessed(77, "useTraitHiddenOnAndroid");
|
|
1410
1428
|
|
|
1411
1429
|
flagValue = currentProvider_->useTraitHiddenOnAndroid();
|
|
1412
1430
|
useTraitHiddenOnAndroid_ = flagValue;
|
|
@@ -1424,7 +1442,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModuleInterop() {
|
|
|
1424
1442
|
// be accessing the provider multiple times but the end state of this
|
|
1425
1443
|
// instance and the returned flag value would be the same.
|
|
1426
1444
|
|
|
1427
|
-
markFlagAsAccessed(
|
|
1445
|
+
markFlagAsAccessed(78, "useTurboModuleInterop");
|
|
1428
1446
|
|
|
1429
1447
|
flagValue = currentProvider_->useTurboModuleInterop();
|
|
1430
1448
|
useTurboModuleInterop_ = flagValue;
|
|
@@ -1442,7 +1460,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModules() {
|
|
|
1442
1460
|
// be accessing the provider multiple times but the end state of this
|
|
1443
1461
|
// instance and the returned flag value would be the same.
|
|
1444
1462
|
|
|
1445
|
-
markFlagAsAccessed(
|
|
1463
|
+
markFlagAsAccessed(79, "useTurboModules");
|
|
1446
1464
|
|
|
1447
1465
|
flagValue = currentProvider_->useTurboModules();
|
|
1448
1466
|
useTurboModules_ = flagValue;
|
|
@@ -1460,7 +1478,7 @@ double ReactNativeFeatureFlagsAccessor::viewCullingOutsetRatio() {
|
|
|
1460
1478
|
// be accessing the provider multiple times but the end state of this
|
|
1461
1479
|
// instance and the returned flag value would be the same.
|
|
1462
1480
|
|
|
1463
|
-
markFlagAsAccessed(
|
|
1481
|
+
markFlagAsAccessed(80, "viewCullingOutsetRatio");
|
|
1464
1482
|
|
|
1465
1483
|
flagValue = currentProvider_->viewCullingOutsetRatio();
|
|
1466
1484
|
viewCullingOutsetRatio_ = flagValue;
|
|
@@ -1478,7 +1496,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewHysteresisRatio() {
|
|
|
1478
1496
|
// be accessing the provider multiple times but the end state of this
|
|
1479
1497
|
// instance and the returned flag value would be the same.
|
|
1480
1498
|
|
|
1481
|
-
markFlagAsAccessed(
|
|
1499
|
+
markFlagAsAccessed(81, "virtualViewHysteresisRatio");
|
|
1482
1500
|
|
|
1483
1501
|
flagValue = currentProvider_->virtualViewHysteresisRatio();
|
|
1484
1502
|
virtualViewHysteresisRatio_ = flagValue;
|
|
@@ -1496,7 +1514,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewPrerenderRatio() {
|
|
|
1496
1514
|
// be accessing the provider multiple times but the end state of this
|
|
1497
1515
|
// instance and the returned flag value would be the same.
|
|
1498
1516
|
|
|
1499
|
-
markFlagAsAccessed(
|
|
1517
|
+
markFlagAsAccessed(82, "virtualViewPrerenderRatio");
|
|
1500
1518
|
|
|
1501
1519
|
flagValue = currentProvider_->virtualViewPrerenderRatio();
|
|
1502
1520
|
virtualViewPrerenderRatio_ = flagValue;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<e7e8d311c0d1cca4e28bee7ddcf5065c>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -97,6 +97,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
97
97
|
bool shouldPressibilityUseW3CPointerEventsForHover();
|
|
98
98
|
bool shouldTriggerResponderTransferOnScrollAndroid();
|
|
99
99
|
bool skipActivityIdentityAssertionOnHostPause();
|
|
100
|
+
bool sweepActiveTouchOnChildNativeGesturesAndroid();
|
|
100
101
|
bool traceTurboModulePromiseRejectionsOnAndroid();
|
|
101
102
|
bool updateRuntimeShadowNodeReferencesOnCommit();
|
|
102
103
|
bool useAlwaysAvailableJSErrorHandling();
|
|
@@ -125,7 +126,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
125
126
|
std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
|
|
126
127
|
bool wasOverridden_;
|
|
127
128
|
|
|
128
|
-
std::array<std::atomic<const char*>,
|
|
129
|
+
std::array<std::atomic<const char*>, 83> accessedFeatureFlags_;
|
|
129
130
|
|
|
130
131
|
std::atomic<std::optional<bool>> commonTestFlag_;
|
|
131
132
|
std::atomic<std::optional<bool>> cdpInteractionMetricsEnabled_;
|
|
@@ -192,6 +193,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
192
193
|
std::atomic<std::optional<bool>> shouldPressibilityUseW3CPointerEventsForHover_;
|
|
193
194
|
std::atomic<std::optional<bool>> shouldTriggerResponderTransferOnScrollAndroid_;
|
|
194
195
|
std::atomic<std::optional<bool>> skipActivityIdentityAssertionOnHostPause_;
|
|
196
|
+
std::atomic<std::optional<bool>> sweepActiveTouchOnChildNativeGesturesAndroid_;
|
|
195
197
|
std::atomic<std::optional<bool>> traceTurboModulePromiseRejectionsOnAndroid_;
|
|
196
198
|
std::atomic<std::optional<bool>> updateRuntimeShadowNodeReferencesOnCommit_;
|
|
197
199
|
std::atomic<std::optional<bool>> useAlwaysAvailableJSErrorHandling_;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<a0a1898f3a4c14179bd03d5dbe97adfa>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -287,6 +287,10 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
|
|
|
287
287
|
return false;
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
+
bool sweepActiveTouchOnChildNativeGesturesAndroid() override {
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
|
|
290
294
|
bool traceTurboModulePromiseRejectionsOnAndroid() override {
|
|
291
295
|
return false;
|
|
292
296
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<fc8f8541827a039fa5bc4a113e75fdf6>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -630,6 +630,15 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef
|
|
|
630
630
|
return ReactNativeFeatureFlagsDefaults::skipActivityIdentityAssertionOnHostPause();
|
|
631
631
|
}
|
|
632
632
|
|
|
633
|
+
bool sweepActiveTouchOnChildNativeGesturesAndroid() override {
|
|
634
|
+
auto value = values_["sweepActiveTouchOnChildNativeGesturesAndroid"];
|
|
635
|
+
if (!value.isNull()) {
|
|
636
|
+
return value.getBool();
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
return ReactNativeFeatureFlagsDefaults::sweepActiveTouchOnChildNativeGesturesAndroid();
|
|
640
|
+
}
|
|
641
|
+
|
|
633
642
|
bool traceTurboModulePromiseRejectionsOnAndroid() override {
|
|
634
643
|
auto value = values_["traceTurboModulePromiseRejectionsOnAndroid"];
|
|
635
644
|
if (!value.isNull()) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<5dcaab263795b1605da54dbbb617264f>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -90,6 +90,7 @@ class ReactNativeFeatureFlagsProvider {
|
|
|
90
90
|
virtual bool shouldPressibilityUseW3CPointerEventsForHover() = 0;
|
|
91
91
|
virtual bool shouldTriggerResponderTransferOnScrollAndroid() = 0;
|
|
92
92
|
virtual bool skipActivityIdentityAssertionOnHostPause() = 0;
|
|
93
|
+
virtual bool sweepActiveTouchOnChildNativeGesturesAndroid() = 0;
|
|
93
94
|
virtual bool traceTurboModulePromiseRejectionsOnAndroid() = 0;
|
|
94
95
|
virtual bool updateRuntimeShadowNodeReferencesOnCommit() = 0;
|
|
95
96
|
virtual bool useAlwaysAvailableJSErrorHandling() = 0;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<6bd64914d0e2f0c727490a420496fbb0>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -369,6 +369,11 @@ bool NativeReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause(
|
|
|
369
369
|
return ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause();
|
|
370
370
|
}
|
|
371
371
|
|
|
372
|
+
bool NativeReactNativeFeatureFlags::sweepActiveTouchOnChildNativeGesturesAndroid(
|
|
373
|
+
jsi::Runtime& /*runtime*/) {
|
|
374
|
+
return ReactNativeFeatureFlags::sweepActiveTouchOnChildNativeGesturesAndroid();
|
|
375
|
+
}
|
|
376
|
+
|
|
372
377
|
bool NativeReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid(
|
|
373
378
|
jsi::Runtime& /*runtime*/) {
|
|
374
379
|
return ReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid();
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<99624bd7682ad34476ac395e8acc43c7>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -166,6 +166,8 @@ class NativeReactNativeFeatureFlags
|
|
|
166
166
|
|
|
167
167
|
bool skipActivityIdentityAssertionOnHostPause(jsi::Runtime& runtime);
|
|
168
168
|
|
|
169
|
+
bool sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime& runtime);
|
|
170
|
+
|
|
169
171
|
bool traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime& runtime);
|
|
170
172
|
|
|
171
173
|
bool updateRuntimeShadowNodeReferencesOnCommit(jsi::Runtime& runtime);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native",
|
|
3
|
-
"version": "0.83.0-
|
|
3
|
+
"version": "0.83.0-rc.0",
|
|
4
4
|
"description": "A framework for building native apps using React",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -159,13 +159,13 @@
|
|
|
159
159
|
},
|
|
160
160
|
"dependencies": {
|
|
161
161
|
"@jest/create-cache-key-function": "^29.7.0",
|
|
162
|
-
"@react-native/assets-registry": "0.83.0-
|
|
163
|
-
"@react-native/codegen": "0.83.0-
|
|
164
|
-
"@react-native/community-cli-plugin": "0.83.0-
|
|
165
|
-
"@react-native/gradle-plugin": "0.83.0-
|
|
166
|
-
"@react-native/js-polyfills": "0.83.0-
|
|
167
|
-
"@react-native/normalize-colors": "0.83.0-
|
|
168
|
-
"@react-native/virtualized-lists": "0.83.0-
|
|
162
|
+
"@react-native/assets-registry": "0.83.0-rc.0",
|
|
163
|
+
"@react-native/codegen": "0.83.0-rc.0",
|
|
164
|
+
"@react-native/community-cli-plugin": "0.83.0-rc.0",
|
|
165
|
+
"@react-native/gradle-plugin": "0.83.0-rc.0",
|
|
166
|
+
"@react-native/js-polyfills": "0.83.0-rc.0",
|
|
167
|
+
"@react-native/normalize-colors": "0.83.0-rc.0",
|
|
168
|
+
"@react-native/virtualized-lists": "0.83.0-rc.0",
|
|
169
169
|
"abort-controller": "^3.0.0",
|
|
170
170
|
"anser": "^1.4.9",
|
|
171
171
|
"ansi-regex": "^5.0.0",
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
"commander": "^12.0.0",
|
|
176
176
|
"flow-enums-runtime": "^0.0.6",
|
|
177
177
|
"glob": "^7.1.1",
|
|
178
|
-
"hermes-compiler": "0.14.0
|
|
178
|
+
"hermes-compiler": "0.14.0",
|
|
179
179
|
"invariant": "^2.2.4",
|
|
180
180
|
"jest-environment-node": "^29.7.0",
|
|
181
181
|
"memoize-one": "^5.0.0",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
hermes-v0.14.0
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
HERMES_VERSION_NAME=0.14.0
|
|
1
|
+
HERMES_VERSION_NAME=0.14.0
|
|
2
2
|
HERMES_V1_VERSION_NAME=250829098.0.2
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<6bc2fbc946e21d0b51dd9bc71ac041e7>>
|
|
8
8
|
* @flow strict
|
|
9
9
|
* @noformat
|
|
10
10
|
*/
|
|
@@ -115,6 +115,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
|
|
|
115
115
|
shouldPressibilityUseW3CPointerEventsForHover: Getter<boolean>,
|
|
116
116
|
shouldTriggerResponderTransferOnScrollAndroid: Getter<boolean>,
|
|
117
117
|
skipActivityIdentityAssertionOnHostPause: Getter<boolean>,
|
|
118
|
+
sweepActiveTouchOnChildNativeGesturesAndroid: Getter<boolean>,
|
|
118
119
|
traceTurboModulePromiseRejectionsOnAndroid: Getter<boolean>,
|
|
119
120
|
updateRuntimeShadowNodeReferencesOnCommit: Getter<boolean>,
|
|
120
121
|
useAlwaysAvailableJSErrorHandling: Getter<boolean>,
|
|
@@ -473,6 +474,10 @@ export const shouldTriggerResponderTransferOnScrollAndroid: Getter<boolean> = cr
|
|
|
473
474
|
* Skip activity identity assertion in ReactHostImpl::onHostPause()
|
|
474
475
|
*/
|
|
475
476
|
export const skipActivityIdentityAssertionOnHostPause: Getter<boolean> = createNativeFlagGetter('skipActivityIdentityAssertionOnHostPause', false);
|
|
477
|
+
/**
|
|
478
|
+
* A flag to tell Fabric to sweep active touches from JSTouchDispatcher in Android when a child native gesture is started.
|
|
479
|
+
*/
|
|
480
|
+
export const sweepActiveTouchOnChildNativeGesturesAndroid: Getter<boolean> = createNativeFlagGetter('sweepActiveTouchOnChildNativeGesturesAndroid', true);
|
|
476
481
|
/**
|
|
477
482
|
* Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause.
|
|
478
483
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<0b1f3b307c28d6798d4c15029ad5bc58>>
|
|
8
8
|
* @flow strict
|
|
9
9
|
* @noformat
|
|
10
10
|
*/
|
|
@@ -90,6 +90,7 @@ export interface Spec extends TurboModule {
|
|
|
90
90
|
+shouldPressibilityUseW3CPointerEventsForHover?: () => boolean;
|
|
91
91
|
+shouldTriggerResponderTransferOnScrollAndroid?: () => boolean;
|
|
92
92
|
+skipActivityIdentityAssertionOnHostPause?: () => boolean;
|
|
93
|
+
+sweepActiveTouchOnChildNativeGesturesAndroid?: () => boolean;
|
|
93
94
|
+traceTurboModulePromiseRejectionsOnAndroid?: () => boolean;
|
|
94
95
|
+updateRuntimeShadowNodeReferencesOnCommit?: () => boolean;
|
|
95
96
|
+useAlwaysAvailableJSErrorHandling?: () => boolean;
|
|
@@ -94,24 +94,6 @@ export default class IntersectionObserver {
|
|
|
94
94
|
);
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
if (options != null && 'delay' in options) {
|
|
98
|
-
throw new Error(
|
|
99
|
-
"Failed to construct 'IntersectionObserver': The 'delay' option is not supported.",
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (options != null && 'scrollMargin' in options) {
|
|
104
|
-
throw new Error(
|
|
105
|
-
"Failed to construct 'IntersectionObserver': The 'scrollMargin' option is not supported.",
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (options != null && 'trackVisibility' in options) {
|
|
110
|
-
throw new Error(
|
|
111
|
-
"Failed to construct 'IntersectionObserver': The 'trackVisibility' option is not supported.",
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
97
|
this._callback = callback;
|
|
116
98
|
|
|
117
99
|
this._rootThresholds = normalizeRootThreshold(options?.rnRootThreshold);
|
|
@@ -170,36 +152,6 @@ export default class IntersectionObserver {
|
|
|
170
152
|
return this._rootThresholds;
|
|
171
153
|
}
|
|
172
154
|
|
|
173
|
-
/**
|
|
174
|
-
* The `delay` option is not supported.
|
|
175
|
-
* @throws {Error} Always throws an error indicating this property is not supported.
|
|
176
|
-
*/
|
|
177
|
-
get delay(): number {
|
|
178
|
-
throw new Error(
|
|
179
|
-
"Failed to read the 'delay' property from 'IntersectionObserver': This property is not supported.",
|
|
180
|
-
);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* The `scrollMargin` option is not supported.
|
|
185
|
-
* @throws {Error} Always throws an error indicating this property is not supported.
|
|
186
|
-
*/
|
|
187
|
-
get scrollMargin(): string {
|
|
188
|
-
throw new Error(
|
|
189
|
-
"Failed to read the 'scrollMargin' property from 'IntersectionObserver': This property is not supported.",
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* The `trackVisibility` option is not supported.
|
|
195
|
-
* @throws {Error} Always throws an error indicating this property is not supported.
|
|
196
|
-
*/
|
|
197
|
-
get trackVisibility(): boolean {
|
|
198
|
-
throw new Error(
|
|
199
|
-
"Failed to read the 'trackVisibility' property from 'IntersectionObserver': This property is not supported.",
|
|
200
|
-
);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
155
|
/**
|
|
204
156
|
* Adds an element to the set of target elements being watched by the
|
|
205
157
|
* `IntersectionObserver`.
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
#pragma once
|
|
9
|
-
|
|
10
|
-
#include "JsiIntegrationTest.h"
|
|
11
|
-
|
|
12
|
-
#include <folly/dynamic.h>
|
|
13
|
-
#include <folly/json.h>
|
|
14
|
-
#include <gmock/gmock.h>
|
|
15
|
-
#include <vector>
|
|
16
|
-
|
|
17
|
-
#include "FollyDynamicMatchers.h"
|
|
18
|
-
|
|
19
|
-
namespace facebook::react::jsinspector_modern {
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Base test class providing tracing-related test utilities for tests.
|
|
23
|
-
*/
|
|
24
|
-
template <typename EngineAdapter, typename Executor>
|
|
25
|
-
class TracingTestBase : public JsiIntegrationPortableTestBase<EngineAdapter, Executor> {
|
|
26
|
-
protected:
|
|
27
|
-
using JsiIntegrationPortableTestBase<EngineAdapter, Executor>::JsiIntegrationPortableTestBase;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Helper method to start tracing via Tracing.start CDP command.
|
|
31
|
-
*/
|
|
32
|
-
void startTracing()
|
|
33
|
-
{
|
|
34
|
-
this->expectMessageFromPage(JsonEq(R"({
|
|
35
|
-
"id": 1,
|
|
36
|
-
"result": {}
|
|
37
|
-
})"));
|
|
38
|
-
|
|
39
|
-
this->toPage_->sendMessage(R"({
|
|
40
|
-
"id": 1,
|
|
41
|
-
"method": "Tracing.start"
|
|
42
|
-
})");
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Helper method to end tracing and collect all trace events from potentially
|
|
47
|
-
* multiple chunked Tracing.dataCollected messages.
|
|
48
|
-
* \returns A vector containing all collected trace events
|
|
49
|
-
*/
|
|
50
|
-
std::vector<folly::dynamic> endTracingAndCollectEvents()
|
|
51
|
-
{
|
|
52
|
-
testing::InSequence s;
|
|
53
|
-
|
|
54
|
-
this->expectMessageFromPage(JsonEq(R"({
|
|
55
|
-
"id": 1,
|
|
56
|
-
"result": {}
|
|
57
|
-
})"));
|
|
58
|
-
|
|
59
|
-
std::vector<folly::dynamic> allTraceEvents;
|
|
60
|
-
|
|
61
|
-
EXPECT_CALL(this->fromPage(), onMessage(JsonParsed(AtJsonPtr("/method", "Tracing.dataCollected"))))
|
|
62
|
-
.Times(testing::AtLeast(1))
|
|
63
|
-
.WillRepeatedly(testing::Invoke([&allTraceEvents](const std::string &message) {
|
|
64
|
-
auto parsedMessage = folly::parseJson(message);
|
|
65
|
-
auto &events = parsedMessage.at("params").at("value");
|
|
66
|
-
allTraceEvents.insert(
|
|
67
|
-
allTraceEvents.end(), std::make_move_iterator(events.begin()), std::make_move_iterator(events.end()));
|
|
68
|
-
}));
|
|
69
|
-
|
|
70
|
-
this->expectMessageFromPage(JsonParsed(
|
|
71
|
-
testing::AllOf(AtJsonPtr("/method", "Tracing.tracingComplete"), AtJsonPtr("/params/dataLossOccurred", false))));
|
|
72
|
-
|
|
73
|
-
this->toPage_->sendMessage(R"({
|
|
74
|
-
"id": 1,
|
|
75
|
-
"method": "Tracing.end"
|
|
76
|
-
})");
|
|
77
|
-
|
|
78
|
-
return allTraceEvents;
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
} // namespace facebook::react::jsinspector_modern
|