react-native-tvos 0.86.0-2 → 0.87.0-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/ActionSheetIOS/ActionSheetIOS.js +19 -24
- package/Libraries/Alert/Alert.js +38 -1
- package/Libraries/Animated/AnimatedExports.js +22 -0
- package/Libraries/Animated/AnimatedExports.js.flow +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +120 -3
- package/Libraries/Animated/Easing.js +4 -3
- package/Libraries/Animated/NativeAnimatedAllowlist.js +37 -0
- package/Libraries/Animated/animations/Animation.js +14 -5
- package/Libraries/Animated/animations/DecayAnimation.js +1 -0
- package/Libraries/Animated/animations/SpringAnimation.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +9 -0
- package/Libraries/Animated/createAnimatedComponent.js +3 -3
- package/Libraries/Animated/nodes/AnimatedColor.js +8 -8
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +106 -0
- package/Libraries/Animated/nodes/AnimatedProps.js +27 -3
- package/Libraries/Animated/nodes/AnimatedValue.js +8 -0
- package/Libraries/Animated/nodes/AnimatedValueXY.js +2 -2
- package/Libraries/AppDelegate/RCTAppDelegate.h +5 -9
- package/Libraries/AppDelegate/RCTAppDelegate.mm +0 -20
- package/Libraries/AppDelegate/RCTAppSetupUtils.h +0 -18
- package/Libraries/AppDelegate/RCTAppSetupUtils.mm +0 -78
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +18 -17
- package/Libraries/AppDelegate/RCTReactNativeFactory.h +5 -41
- package/Libraries/AppDelegate/RCTReactNativeFactory.mm +0 -82
- package/Libraries/AppDelegate/RCTRootViewFactory.h +4 -1
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +3 -98
- package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +1 -0
- package/Libraries/AppState/AppState.d.ts +4 -1
- package/Libraries/AppState/AppState.js +32 -17
- package/Libraries/BatchedBridge/MessageQueue.js +42 -51
- package/Libraries/BatchedBridge/NativeModules.js +7 -0
- package/Libraries/Blob/Blob.js +7 -1
- package/Libraries/Blob/FileReader.js +6 -0
- package/Libraries/Blob/URLSearchParams.js.flow +1 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +20 -9
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -43
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +59 -49
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -2
- package/Libraries/Components/Button.js +96 -182
- package/Libraries/Components/Clipboard/Clipboard.js +5 -0
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -2
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +8 -69
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +10 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +2 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +26 -31
- package/Libraries/Components/Keyboard/Keyboard.js +23 -60
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +15 -7
- package/Libraries/Components/Pressable/Pressable.js +39 -17
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +5 -6
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +4 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +17 -0
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -2
- package/Libraries/Components/RefreshControl/RefreshControl.js +40 -50
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +8 -8
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
- package/Libraries/Components/ScrollView/ScrollView.d.ts +55 -43
- package/Libraries/Components/ScrollView/ScrollView.js +202 -115
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +4 -4
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.d.ts +7 -54
- package/Libraries/Components/StatusBar/StatusBar.js +85 -161
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -2
- package/Libraries/Components/Switch/Switch.js +76 -75
- package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -2
- package/Libraries/Components/TV/TVEventHandler.js +16 -1
- package/Libraries/Components/TextInput/InputAccessoryView.js +13 -61
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -2
- package/Libraries/Components/TextInput/TextInput.d.ts +9 -2
- package/Libraries/Components/TextInput/TextInput.flow.js +19 -2
- package/Libraries/Components/TextInput/TextInput.js +116 -111
- package/Libraries/Components/TextInput/TextInputNativeCommands.js +3 -3
- package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +25 -19
- package/Libraries/Components/Touchable/Touchable.js +94 -95
- package/Libraries/Components/Touchable/TouchableHighlight.js +46 -114
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +13 -25
- package/Libraries/Components/Touchable/TouchableOpacity.js +14 -84
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +4 -3
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -2
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -0
- package/Libraries/Components/View/View.js +85 -64
- package/Libraries/Components/View/ViewAccessibility.d.ts +11 -1
- package/Libraries/Components/View/ViewAccessibility.js +16 -5
- package/Libraries/Components/View/ViewNativeComponent.js +6 -8
- package/Libraries/Components/View/ViewPropTypes.js +55 -9
- package/Libraries/Core/InitializeCore.js +9 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/Timers/JSTimers.js +53 -52
- package/Libraries/Core/setUpGlobals.js +9 -4
- package/Libraries/Core/setUpNavigator.js +6 -1
- package/Libraries/Core/setUpReactDevTools.js +0 -118
- package/Libraries/Core/setUpXHR.js +6 -2
- package/Libraries/Debugging/DebuggingOverlay.js +2 -2
- package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -2
- package/Libraries/EventEmitter/NativeEventEmitter.js +29 -0
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +7 -7
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +3 -0
- package/Libraries/Image/AssetSourceResolver.js +18 -27
- package/Libraries/Image/Image.android.js +13 -2
- package/Libraries/Image/Image.ios.js +3 -1
- package/Libraries/Image/ImageBackground.js +30 -18
- package/Libraries/Image/ImageProps.js +116 -117
- package/Libraries/Image/ImageSource.d.ts +1 -1
- package/Libraries/Image/ImageSource.js +9 -9
- package/Libraries/Image/ImageSourceUtils.js +10 -7
- package/Libraries/Image/ImageTypes.flow.js +2 -0
- package/Libraries/Image/ImageViewNativeComponent.js +1 -1
- package/Libraries/Image/RCTImageLoader.mm +60 -63
- package/Libraries/Image/RCTImageStoreManager.h +0 -2
- package/Libraries/Image/RelativeImageStub.js +1 -1
- package/Libraries/Image/resolveAssetSource.js +1 -1
- package/Libraries/Interaction/PanResponder.js +102 -97
- package/Libraries/LayoutAnimation/LayoutAnimation.js +22 -6
- package/Libraries/Linking/Linking.js +24 -23
- package/Libraries/Lists/FlatList.d.ts +6 -17
- package/Libraries/Lists/FlatList.js +7 -8
- package/Libraries/Lists/SectionList.js +7 -0
- package/Libraries/Lists/VirtualizedList.js +3 -0
- package/Libraries/Lists/VirtualizedSectionList.js +4 -0
- package/Libraries/LogBox/LogBox.js +3 -3
- package/Libraries/LogBox/UI/AnsiHighlight.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +4 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +3 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +8 -2
- package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +9 -2
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +17 -4
- package/Libraries/LogBox/UI/LogBoxInspectorSection.js +3 -1
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -1
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -0
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +4 -2
- package/Libraries/LogBox/UI/LogBoxMessage.js +18 -5
- package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +4 -1
- package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +1 -0
- package/Libraries/LogBox/UI/LogBoxStyle.js +0 -4
- package/Libraries/Modal/Modal.d.ts +5 -4
- package/Libraries/Modal/Modal.js +71 -37
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -2
- package/Libraries/NativeComponent/BaseViewConfig.android.js +17 -0
- package/Libraries/NativeComponent/ViewConfig.js +3 -3
- package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -1
- package/Libraries/Network/RCTHTTPRequestHandler.h +1 -1
- package/Libraries/Performance/Systrace.js +36 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +4 -2
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +29 -17
- package/Libraries/Pressability/Pressability.js +1 -1
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +4 -0
- package/Libraries/ReactNative/AppContainer-dev.js +3 -1
- package/Libraries/ReactNative/AppRegistry.flow.js +1 -0
- package/Libraries/ReactNative/AppRegistry.js +15 -11
- package/Libraries/ReactNative/AppRegistryImpl.js +57 -11
- package/Libraries/ReactNative/DisplayMode.js +1 -1
- package/Libraries/ReactNative/FabricUIManager.js +29 -26
- package/Libraries/ReactNative/I18nManager.js +20 -0
- package/Libraries/ReactNative/UIManager.js +53 -0
- package/Libraries/ReactNative/renderApplication.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -126
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +5 -41
- package/Libraries/Renderer/shims/ReactNativeTypes.js +36 -36
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +4 -4
- package/Libraries/Settings/Settings.ios.js +22 -0
- package/Libraries/Share/Share.js +25 -28
- package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +6 -0
- package/Libraries/StyleSheet/StyleSheet.js +42 -2
- package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
- package/Libraries/StyleSheet/StyleSheetExports.js +7 -5
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +24 -3
- package/Libraries/StyleSheet/StyleSheetTypes.js +34 -6
- package/Libraries/StyleSheet/flattenStyle.js +28 -13
- package/Libraries/StyleSheet/private/_TransformStyle.js +16 -14
- package/Libraries/Text/Text.js +12 -9
- package/Libraries/Text/TextEffectNativeComponent.js +31 -0
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +0 -1
- package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +0 -1
- package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +0 -1
- package/Libraries/Text/TextProps.js +59 -93
- package/Libraries/Text/requireNativeTextEffect.js +28 -0
- package/Libraries/TurboModule/RCTExport.js +1 -1
- package/Libraries/Types/CoreEventTypes.d.ts +8 -0
- package/Libraries/Types/CoreEventTypes.js +32 -29
- package/Libraries/Types/UIManagerJSInterface.js +2 -2
- package/Libraries/Utilities/Appearance.d.ts +32 -17
- package/Libraries/Utilities/Appearance.js +35 -18
- package/Libraries/Utilities/BackHandler.android.js +13 -33
- package/Libraries/Utilities/BackHandler.js.flow +18 -2
- package/Libraries/Utilities/DevSettings.js +8 -1
- package/Libraries/Utilities/Dimensions.js +18 -12
- package/Libraries/Utilities/PixelRatio.js +5 -2
- package/Libraries/Utilities/Platform.js.flow +4 -0
- package/Libraries/Utilities/PlatformTypes.js +77 -0
- package/Libraries/Utilities/differ/deepDiffer.js +5 -2
- package/Libraries/Utilities/useColorScheme.js +11 -1
- package/Libraries/Utilities/useWindowDimensions.js +6 -0
- package/Libraries/Vibration/Vibration.js +14 -11
- package/Libraries/vendor/emitter/EventEmitter.js +3 -3
- package/React/Base/RCTBridge+Private.h +0 -22
- package/React/Base/RCTBridge.h +10 -8
- package/React/Base/RCTBridge.mm +5 -447
- package/React/Base/RCTBridgeDelegate.h +1 -56
- package/React/Base/RCTBridgeModule.h +0 -9
- package/React/Base/RCTBridgeProxy.h +8 -0
- package/React/Base/RCTBridgeProxy.mm +3 -20
- package/React/Base/RCTBundleManager.h +0 -3
- package/React/Base/RCTBundleManager.m +0 -31
- package/React/Base/RCTBundleURLProvider.mm +4 -4
- package/React/Base/RCTCallableJSModules.m +0 -18
- package/React/Base/RCTConstants.h +1 -0
- package/React/Base/RCTConstants.m +1 -0
- package/React/Base/RCTConvert.mm +3 -0
- package/React/Base/RCTDisplayLink.h +3 -1
- package/React/Base/RCTJavaScriptExecutor.h +0 -69
- package/React/Base/RCTModuleData.mm +2 -483
- package/React/Base/RCTModuleRegistry.m +0 -25
- package/React/Base/RCTRootView.h +0 -11
- package/React/Base/RCTRootView.m +3 -461
- package/React/Base/RCTUtils.h +0 -3
- package/React/Base/RCTUtils.mm +17 -27
- package/React/Base/RCTVersion.m +2 -2
- package/React/Base/RCTViewRegistry.m +1 -29
- package/React/Base/Surface/RCTSurface.mm +1 -582
- package/React/Base/Surface/RCTSurfaceRootShadowView.m +0 -89
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +0 -1
- package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +0 -2
- package/React/CoreModules/RCTAlertController.mm +1 -0
- package/React/CoreModules/RCTAlertManager.mm +0 -5
- package/React/CoreModules/RCTLogBox.mm +0 -11
- package/React/CoreModules/RCTLogBoxView.h +0 -3
- package/React/CoreModules/RCTLogBoxView.mm +0 -31
- package/React/CoreModules/RCTPerfMonitor.mm +0 -2
- package/React/CoreModules/RCTStatusBarManager.mm +0 -11
- package/React/CxxModule/RCTCxxUtils.h +0 -8
- package/React/CxxModule/RCTCxxUtils.mm +0 -17
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +179 -7
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +100 -2
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +373 -119
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ComponentDescriptors.cpp +1 -1
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ComponentDescriptors.h +1 -1
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.cpp +71 -71
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.h +96 -96
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.cpp +357 -363
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.h +211 -212
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/RCTComponentViewHelpers.h +107 -107
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ShadowNodes.cpp +1 -1
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ShadowNodes.h +11 -11
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/States.h +2 -2
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.h +4 -0
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +4 -0
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.h +4 -0
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.mm +5 -0
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +0 -1
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +14 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +12 -3
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.mm +12 -26
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +39 -4
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +18 -22
- package/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm +0 -18
- package/React/Fabric/Mounting/RCTComponentViewFactory.mm +9 -5
- package/React/Fabric/RCTSurfacePresenter.mm +86 -5
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +2 -0
- package/React/I18n/RCTLocalizedString.mm +38 -2
- package/React/Modules/RCTEventEmitter.m +30 -10
- package/React/Modules/RCTI18nUtil.m +3 -1
- package/React/Modules/RCTUIManager.mm +0 -1501
- package/React/React-RCTFBReactNativeSpec.podspec +1 -1
- package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +27 -0
- package/React/Views/RCTModalHostViewController.h +0 -18
- package/React/Views/RCTModalHostViewManager.h +0 -24
- package/React/Views/RCTShadowView.h +0 -2
- package/React/Views/RCTShadowView.m +0 -723
- package/React/Views/RCTView.h +0 -19
- package/React/Views/RCTViewManager.m +0 -53
- package/React/Views/ScrollView/RCTScrollView.h +0 -92
- package/React/Views/ScrollView/RCTScrollableProtocol.h +0 -4
- package/React-Core-prebuilt.podspec +45 -17
- package/React-Core.podspec +9 -2
- package/ReactAndroid/api/ReactAndroid.api +128 -142
- package/ReactAndroid/build.gradle.kts +26 -21
- package/ReactAndroid/external-artifacts/build.gradle.kts +49 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/hermes-engine/build.gradle.kts +19 -20
- package/ReactAndroid/src/debug/AndroidManifest.xml +6 -0
- package/ReactAndroid/src/debugOptimized/AndroidManifest.xml +22 -0
- package/ReactAndroid/src/main/java/com/facebook/react/BaseReactPackage.kt +3 -7
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +4 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +4 -6
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +5 -7
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.kt +212 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +0 -16
- package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.kt +287 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ColorPropConverter.kt +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +15 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.kt +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/MapBuffer.kt +50 -2
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.kt +63 -22
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/WritableMapBuffer.kt +33 -0
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt +4 -12
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactActivityDelegate.kt +14 -10
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.kt +50 -47
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.kt +0 -4
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.kt +10 -10
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LocalNetworkPermissionUtil.kt +49 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/MultipartStreamReader.kt +101 -26
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +40 -38
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +1 -10
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.kt +0 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +15 -11
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +7 -13
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +195 -194
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SynchronousMountItem.kt +12 -8
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +30 -66
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +51 -111
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +11 -23
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +12 -24
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +57 -123
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt +7 -5
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -5
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +11 -23
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlags.kt +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +0 -4
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +53 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +2 -77
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.kt +9 -4
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +4 -19
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.kt +1 -5
- package/ReactAndroid/src/main/java/com/facebook/react/touch/ReactInterceptingViewGroup.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +46 -9
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +1 -49
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/HasChildPressedStateDelay.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.kt +796 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +2 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.kt +27 -27
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.kt +184 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.kt +486 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ShadowNodeRegistry.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/SkewMatrixHelper.kt +200 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIBlock.kt +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.kt +645 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.kt +2 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.kt +142 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupManager.kt +0 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.kt +527 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/ColorStop.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +7 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayout.kt +8 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +0 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ReactProgressBarViewManager.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaView.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.kt +1729 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +15 -15
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.kt +1297 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollViewManager.kt +13 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.kt +1392 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +14 -14
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainer.kt +19 -33
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateClassic.kt +8 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateExperimental.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/generate-nested-scroll-view.js +13 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.kt +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/MutableSpannableLayout.kt +107 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/PreparedLayoutTextView.kt +122 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +91 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.kt +41 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.kt +48 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextDecorationStyle.kt +200 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextEffectRegistry.kt +45 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextEffectSpanFactory.kt +17 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +361 -15
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/AnimatedEffectSpan.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/{DrawCommandSpan.kt → CanvasEffectSpan.kt} +3 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +23 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactStrikethroughSpan.kt +30 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactUnderlineSpan.kt +25 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/StatefulSpan.kt +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextEffectSpan.kt +19 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TouchableSpan.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +81 -9
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +7 -21
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +9 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/VirtualViewRenderState.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/view/ReactVirtualView.kt +7 -8
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.kt +45 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaBoxSizing.kt +27 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfig.kt +15 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIBase.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDimension.kt +27 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.kt +31 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaEdge.kt +41 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaErrata.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.kt +27 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaFlexDirection.kt +31 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.kt +33 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.kt +43 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaLogLevel.kt +39 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaMeasureMode.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.kt +16 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.kt +12 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.kt +762 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.kt +27 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaOverflow.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.kt +24 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaWrap.kt +29 -0
- package/ReactAndroid/src/main/jni/CMakeLists.txt +1 -2
- package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +94 -0
- package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionDelegateImpl.cpp +3 -0
- package/ReactAndroid/src/main/jni/react/fabric/AndroidAnimationChoreographer.h +10 -10
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +3 -0
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +12 -15
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +1 -3
- package/ReactAndroid/src/main/jni/react/fabric/test/FabricMountingManagerTest.cpp +159 -0
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +69 -153
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +15 -33
- package/ReactAndroid/src/main/jni/react/jni/JReactMarker.cpp +10 -24
- package/ReactAndroid/src/main/jni/react/jni/JReactMarker.h +0 -2
- package/ReactAndroid/src/main/jni/react/mapbuffer/react/common/mapbuffer/JWritableMapBuffer.cpp +13 -0
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +4 -1
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +8 -0
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +4 -0
- package/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +5 -0
- package/ReactAndroid/src/main/res/views/uimanager/values-zu/strings.xml +3 -0
- package/ReactApple/RCTAnimatedModuleProvider/React-RCTAnimatedModuleProvider.podspec +63 -0
- package/ReactCommon/React-Fabric.podspec +2 -0
- package/ReactCommon/ReactCommon.podspec +2 -12
- package/ReactCommon/cmake-utils/react-native-flags.cmake +1 -3
- package/ReactCommon/cxxreact/CMakeLists.txt +1 -0
- package/ReactCommon/cxxreact/ErrorUtils.h +2 -32
- package/ReactCommon/cxxreact/Instance.cpp +1 -26
- package/ReactCommon/cxxreact/Instance.h +0 -2
- package/ReactCommon/cxxreact/NativeToJsBridge.cpp +3 -2
- package/ReactCommon/cxxreact/RAMBundleRegistry.cpp +0 -12
- package/ReactCommon/cxxreact/RAMBundleRegistry.h +0 -5
- package/ReactCommon/cxxreact/React-cxxreact.podspec +2 -1
- package/ReactCommon/cxxreact/ReactMarker.cpp +4 -30
- package/ReactCommon/cxxreact/ReactMarker.h +38 -21
- package/ReactCommon/cxxreact/ReactNativeVersion.h +3 -3
- package/ReactCommon/cxxreact/TraceSection.h +1 -1
- package/ReactCommon/cxxreact/tests/methodcall.cpp +4 -0
- package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +6 -79
- package/ReactCommon/jserrorhandler/ErrorUtils.cpp +42 -0
- package/{React/CxxLogUtils/RCTDefaultCxxLogFunction.h → ReactCommon/jserrorhandler/ErrorUtils.h} +2 -2
- package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -1
- package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +2 -3
- package/ReactCommon/jsi/jsi/hermes-interfaces.h +53 -0
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +2 -1
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +3 -14
- package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +4 -13
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +54 -0
- package/ReactCommon/jsinspector-modern/HostTarget.h +0 -7
- package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.cpp +10 -7
- package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +4 -1
- package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +7 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +20 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.h +16 -0
- package/ReactCommon/jsinspector-modern/SessionState.h +31 -0
- package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +53 -0
- package/ReactCommon/jsinspector-modern/tracing/HostTracingProfile.h +14 -1
- package/ReactCommon/jsinspector-modern/tracing/TraceRecordingState.h +11 -0
- package/ReactCommon/react/bridging/ArrayBuffer.h +180 -0
- package/ReactCommon/react/bridging/Bridging.h +1 -0
- package/ReactCommon/react/bridging/Convert.h +12 -0
- package/ReactCommon/react/bridging/React-bridging.podspec +44 -0
- package/ReactCommon/react/bridging/tests/BridgingTest.cpp +185 -11
- package/ReactCommon/react/bridging/tests/ClassTest.cpp +22 -0
- package/ReactCommon/react/cxxstableapi/CMakeLists.txt +18 -0
- package/ReactCommon/react/cxxstableapi/FrameworksGuard.h +35 -0
- package/ReactCommon/react/cxxstableapi/PrivateGuard.h +34 -0
- package/ReactCommon/react/cxxstableapi/React-cxxstableapi.podspec +34 -0
- package/ReactCommon/react/cxxstableapi/UmbrellaGuard.h +53 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +21 -45
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +26 -56
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +134 -242
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +14 -26
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +20 -44
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +43 -97
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSCanary.h +10 -6
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -7
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -8
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +7 -13
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +1 -0
- package/ReactCommon/react/nativemodule/core/iostests/RCTTurboModuleTests.mm +49 -0
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.cpp +4 -0
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h +4 -0
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +1 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +1 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +4 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +4 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +60 -3
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.h +0 -9
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +37 -139
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleWithJSIBindings.h +0 -3
- package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +6 -0
- package/ReactCommon/react/nativemodule/dom/NativeDOM.cpp +10 -4
- package/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +25 -55
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +11 -23
- package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +4 -0
- package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.h +1 -1
- package/ReactCommon/react/nativemodule/webperformance/React-webperformancenativemodule.podspec +1 -0
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +95 -63
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +20 -1
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +7 -10
- package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.cpp +20 -1
- package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.h +1 -0
- package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.cpp +67 -6
- package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.h +12 -0
- package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +25 -13
- package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.h +7 -0
- package/ReactCommon/react/renderer/animated/tests/AnimationDriverTests.cpp +48 -0
- package/ReactCommon/react/renderer/animated/tests/DecayAnimationDriverTest.cpp +245 -0
- package/ReactCommon/react/renderer/animated/tests/ManagedPropsMountingOverrideTests.cpp +204 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -1
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +17 -0
- package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +0 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +6 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +25 -1
- package/ReactCommon/react/renderer/attributedstring/conversions.h +29 -1
- package/ReactCommon/react/renderer/attributedstring/primitives.h +4 -2
- package/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp +73 -0
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +6 -0
- package/ReactCommon/react/renderer/components/image/ImageProps.cpp +79 -126
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.cpp +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropState.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +5 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp +5 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.cpp +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerInteropComponentDescriptor.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +5 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm +5 -0
- package/ReactCommon/react/renderer/components/scrollview/BaseScrollViewProps.cpp +253 -379
- package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.cpp +36 -55
- package/ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp +17 -27
- package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +8 -10
- package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.cpp +19 -0
- package/ReactCommon/react/renderer/components/text/TextEffectComponentDescriptor.h +17 -0
- package/ReactCommon/react/renderer/components/text/TextEffectProps.cpp +59 -0
- package/ReactCommon/react/renderer/components/text/TextEffectProps.h +30 -0
- package/{Libraries/Text/VirtualText/RCTVirtualTextView.mm → ReactCommon/react/renderer/components/text/TextEffectShadowNode.cpp} +4 -6
- package/ReactCommon/react/renderer/components/text/TextEffectShadowNode.h +26 -0
- package/ReactCommon/react/renderer/components/text/platform/android/react/renderer/components/text/HostPlatformParagraphProps.cpp +18 -28
- package/ReactCommon/react/renderer/components/text/tests/BaseTextShadowNodeTest.cpp +15 -0
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +42 -50
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +168 -754
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +0 -9
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +262 -326
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +0 -6
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +2 -12
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +73 -27
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +7 -9
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -11
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +94 -180
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +2 -2
- package/ReactCommon/react/renderer/components/view/primitives.h +5 -0
- package/ReactCommon/react/renderer/components/view/propsConversions.h +74 -42
- package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +5 -5
- package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +353 -6
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +41 -16
- package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +19 -0
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +20 -4
- package/ReactCommon/react/renderer/core/LayoutMetrics.h +3 -0
- package/ReactCommon/react/renderer/core/Props.cpp +8 -39
- package/ReactCommon/react/renderer/core/Props.h +63 -13
- package/ReactCommon/react/renderer/core/RawProps.cpp +20 -3
- package/ReactCommon/react/renderer/core/RawProps.h +44 -0
- package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +11 -27
- package/ReactCommon/react/renderer/core/RawPropsKeyMap.h +3 -3
- package/ReactCommon/react/renderer/core/RawPropsParser.cpp +4 -6
- package/ReactCommon/react/renderer/core/RawPropsParser.h +3 -3
- package/ReactCommon/react/renderer/core/ShadowNode.cpp +27 -19
- package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +2 -0
- package/ReactCommon/react/renderer/core/StateData.h +4 -4
- package/ReactCommon/react/renderer/core/propsConversions.h +3 -7
- package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +8 -0
- package/ReactCommon/react/renderer/core/tests/FindNodeAtPointTest.cpp +7 -7
- package/ReactCommon/react/renderer/core/tests/LayoutableShadowNodeTest.cpp +19 -19
- package/ReactCommon/react/renderer/core/tests/PropsConceptsTest.cpp +135 -0
- package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +43 -53
- package/ReactCommon/react/renderer/element/tests/ElementTest.cpp +3 -3
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +17 -0
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +123 -33
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +26 -14
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +96 -53
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +4 -0
- package/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +96 -1
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +29 -318
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +105 -33
- package/ReactCommon/react/renderer/mounting/ShadowTree.h +2 -0
- package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +11 -3
- package/ReactCommon/react/renderer/mounting/tests/OrderIndexTest.cpp +1 -1
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +15 -250
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeReactBranchingTest.cpp +141 -0
- package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +1 -1
- package/ReactCommon/react/renderer/runtimescheduler/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +1 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +22 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +13 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +13 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h +9 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +43 -5
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h +17 -1
- package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -0
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +113 -8
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +14 -6
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +3 -2
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +1 -85
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +0 -6
- package/ReactCommon/react/renderer/scheduler/tests/SchedulerDelegateInvalidationTest.cpp +671 -0
- package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +22 -5
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +4 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.h +11 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +65 -26
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +193 -1
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextPrimitivesConversions.h +14 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +2 -1
- package/ReactCommon/react/renderer/textlayoutmanager/tests/TextLayoutManagerTest.cpp +86 -5
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +89 -94
- package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -2
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +1 -1
- package/ReactCommon/react/renderer/uimanager/tests/FabricUIManagerTest.cpp +144 -3
- package/ReactCommon/react/renderer/uimanager/tests/FindShadowNodeByTagTest.cpp +1 -52
- package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +4 -4
- package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +88 -39
- package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +12 -2
- package/ReactCommon/react/runtime/PlatformTimerRegistry.h +10 -0
- package/ReactCommon/react/runtime/ReactInstance.cpp +79 -64
- package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +0 -89
- package/ReactCommon/react/runtime/iostests/MainQueueCoordinatorTests.mm +99 -0
- package/ReactCommon/react/runtime/iostests/RCTInstanceTests.mm +244 -0
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/ObjCTimerRegistry.h +1 -1
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +47 -30
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTJscInstance.mm +3 -2
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTPerformanceLoggerUtils.mm +3 -2
- package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +27 -3
- package/ReactCommon/react/runtime/tests/cxx/RuntimeExecutorShutdownTest.cpp +155 -0
- package/ReactCommon/react/utils/Telemetry.h +0 -13
- package/ReactCommon/react/utils/tests/Base64Tests.cpp +36 -0
- package/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +0 -1
- package/ReactCommon/runtimeexecutor/platform/ios/ReactCommon/RuntimeExecutorSyncUIThreadUtils.mm +21 -38
- package/ReactCommon/yoga/Yoga.podspec +1 -1
- package/ReactCommon/yoga/yoga/YGEnums.cpp +2 -0
- package/ReactCommon/yoga/yoga/YGEnums.h +1 -0
- package/ReactCommon/yoga/yoga/YGNode.cpp +27 -0
- package/ReactCommon/yoga/yoga/YGNode.h +69 -0
- package/ReactCommon/yoga/yoga/YGNodeLayout.h +0 -2
- package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +2 -1
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +294 -17
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +1 -1
- package/ReactCommon/yoga/yoga/config/Config.h +1 -1
- package/ReactCommon/yoga/yoga/enums/Errata.h +1 -0
- package/ReactCommon/yoga/yoga/node/LayoutResults.h +8 -0
- package/ReactCommon/yoga/yoga/node/Node.cpp +32 -0
- package/ReactCommon/yoga/yoga/node/Node.h +33 -0
- package/cli.js +3 -182
- package/flow/bom.js.flow +42 -42
- package/flow/cssom.js.flow +21 -21
- package/flow/dom.js.flow +128 -128
- package/flow/global.js +6 -0
- package/gradle/libs.versions.toml +7 -5
- package/index.js +53 -86
- package/index.js.flow +53 -23
- package/package.json +41 -52
- package/react-native.config.js +82 -1
- package/scripts/cocoapods/fabric.rb +1 -1
- package/scripts/cocoapods/jsengine.rb +1 -1
- package/scripts/cocoapods/new_architecture.rb +1 -1
- package/scripts/cocoapods/rncore.rb +36 -78
- package/scripts/cocoapods/rncore_facades.rb +232 -0
- package/scripts/cocoapods/rndependencies.rb +64 -3
- package/scripts/cocoapods/rndeps_facades.rb +193 -0
- package/scripts/cocoapods/spm.rb +78 -11
- package/scripts/cocoapods/utils.rb +5 -7
- package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +0 -1
- package/scripts/codegen/templates/Package.swift.spm-template +97 -0
- package/scripts/codegen/templates/ReactCodegen.podspec.template +1 -1
- package/scripts/hermes/hermes-utils.js +27 -58
- package/scripts/react-native-xcode.sh +20 -0
- package/scripts/react_native_pods.rb +71 -21
- package/scripts/react_native_pods_utils/script_phases.sh +4 -3
- package/scripts/replace-rncore-version.js +57 -86
- package/scripts/setup-apple-spm.js +1267 -0
- package/scripts/spm/__doc__/rfc-spm-xcframework.md +707 -0
- package/scripts/spm/__doc__/spm-autolinking-plugins.md +244 -0
- package/scripts/spm/__doc__/spm-header-paths-contract.md +97 -0
- package/scripts/spm/__doc__/spm-plugins-assessment.md +128 -0
- package/scripts/spm/__doc__/spm-scripts.md +486 -0
- package/scripts/spm/autolinking-plugins.js +331 -0
- package/scripts/spm/download-spm-artifacts.js +1409 -0
- package/scripts/spm/expand-spm-dependencies.js +216 -0
- package/scripts/spm/flavored-frameworks.js +1008 -0
- package/scripts/spm/generate-spm-autolinking-config.js +221 -0
- package/scripts/spm/generate-spm-autolinking.js +1888 -0
- package/scripts/spm/generate-spm-package.js +302 -0
- package/scripts/spm/generate-spm-xcodeproj.js +2266 -0
- package/scripts/spm/read-podspec.js +695 -0
- package/scripts/spm/scaffold-package-swift.js +1206 -0
- package/scripts/spm/spm-pbxproj.js +654 -0
- package/scripts/spm/spm-types.js +520 -0
- package/scripts/spm/spm-utils.js +645 -0
- package/scripts/spm/sync-spm-autolinking.js +160 -0
- package/sdks/.hermesv1version +1 -1
- package/sdks/hermes-engine/hermes-engine.podspec +9 -39
- package/sdks/hermes-engine/hermes-utils.rb +20 -74
- package/sdks/hermes-engine/utils/replace_hermes_version.js +18 -4
- package/sdks/hermes-engine/version.properties +1 -2
- package/settings.gradle.kts +0 -43
- package/src/asset-registry.js +29 -0
- package/src/private/animated/NativeAnimatedHelper.js +45 -21
- package/src/private/assets/AssetRegistry.js +52 -0
- package/src/private/{specs_DEPRECATED/components → components/activityindicator/specs}/ActivityIndicatorViewNativeComponent.js +5 -5
- package/src/private/{specs_DEPRECATED/components → components/debuggingoverlay/specs}/DebuggingOverlayNativeComponent.js +8 -8
- package/src/private/{specs_DEPRECATED/components → components/drawerlayoutandroid/specs}/AndroidDrawerLayoutNativeComponent.js +8 -8
- package/src/private/{specs_DEPRECATED/components → components/inputaccessoryview/specs}/RCTInputAccessoryViewNativeComponent.js +4 -4
- package/src/private/{specs_DEPRECATED/components → components/modal/specs}/RCTModalHostViewNativeComponent.js +4 -9
- package/src/private/{specs_DEPRECATED/components → components/progressbarandroid/specs}/ProgressBarAndroidNativeComponent.js +5 -5
- package/src/private/{specs_DEPRECATED/components → components/refreshcontrol/specs}/AndroidSwipeRefreshLayoutNativeComponent.js +7 -7
- package/src/private/{specs_DEPRECATED/components → components/refreshcontrol/specs}/PullToRefreshViewNativeComponent.js +7 -7
- package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +2 -2
- package/src/private/{specs_DEPRECATED/components → components/safeareaview/specs}/RCTSafeAreaViewNativeComponent.js +3 -3
- package/src/private/components/scrollview/HScrollViewNativeComponents.js +1 -1
- package/src/private/{specs_DEPRECATED/components → components/scrollview/specs}/AndroidHorizontalScrollContentViewNativeComponent.js +3 -3
- package/src/private/{specs_DEPRECATED/components → components/switch/specs}/AndroidSwitchNativeComponent.js +7 -7
- package/src/private/{specs_DEPRECATED/components → components/switch/specs}/SwitchNativeComponent.js +10 -7
- package/src/private/{specs_DEPRECATED/components → components/unimplementedview/specs}/UnimplementedNativeViewNativeComponent.js +4 -4
- package/src/private/components/virtualcollection/Virtual.js +5 -5
- package/src/private/components/virtualcollection/VirtualCollectionView.js +2 -6
- package/src/private/components/virtualcollection/column/VirtualColumn.js +1 -1
- package/src/private/components/virtualcollection/row/VirtualRow.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +3 -1
- package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +4 -4
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +4 -2
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +46 -70
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +88 -94
- package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
- package/src/private/renderer/events/ReactNativeResponder.js +49 -4
- package/src/private/renderer/events/ResponderTouchHistoryStore.js +11 -2
- package/src/private/renderer/events/dispatchNativeEvent.js +71 -36
- package/src/private/setup/setUpDOM.js +19 -9
- package/src/private/setup/setUpIntersectionObserver.js +7 -0
- package/src/private/setup/setUpMutationObserver.js +3 -1
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +9 -9
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +24 -24
- package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +28 -28
- package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +45 -25
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +44 -24
- package/src/private/specs_DEPRECATED/modules/NativeAppState.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +8 -6
- package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +7 -7
- package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +11 -11
- package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +7 -7
- package/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +13 -13
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +9 -6
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +8 -5
- package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +5 -5
- package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +5 -5
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +6 -4
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +35 -31
- package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +24 -24
- package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSourceCode.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerAndroid.js +5 -17
- package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerIOS.js +10 -15
- package/src/private/specs_DEPRECATED/modules/NativeTiming.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +35 -22
- package/src/private/specs_DEPRECATED/modules/NativeVibration.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +7 -7
- package/src/private/types/HostInstance.js +38 -80
- package/src/private/viewtransition/specs/NativeViewTransition.js +6 -4
- package/src/private/webapis/dom/abort-api/AbortController.js +92 -0
- package/src/private/webapis/dom/abort-api/AbortSignal.js +243 -0
- package/src/private/webapis/dom/events/CustomEvent.js +1 -1
- package/src/private/webapis/dom/events/Event.js +12 -12
- package/src/private/webapis/dom/events/EventTarget.js +146 -37
- package/src/private/webapis/dom/events/internals/EventInternals.js +36 -0
- package/src/private/webapis/dom/events/internals/EventTargetInternals.js +38 -3
- package/src/private/webapis/dom/nodes/ReactNativeDocument.js +11 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +105 -4
- package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +11 -0
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +9 -0
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +34 -7
- package/src/private/webapis/dom/nodes/ReadOnlyText.js +33 -0
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +46 -42
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +12 -0
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +4 -2
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +10 -0
- package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +4 -3
- package/src/private/webapis/errors/DOMException.js +50 -50
- package/src/private/webapis/geometry/DOMRectList.js +12 -0
- package/src/private/webapis/geometry/DOMRectList.js.flow +3 -1
- package/src/private/webapis/html/events/MessageEvent.js +3 -3
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +13 -0
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +3 -7
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +5 -5
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
- package/src/private/webapis/mutationobserver/MutationObserver.js +7 -7
- package/src/private/webapis/mutationobserver/MutationRecord.js +12 -0
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +5 -7
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +5 -5
- package/src/private/webapis/performance/EventTiming.js +3 -3
- package/src/private/webapis/performance/PerformanceEntry.js +3 -3
- package/src/private/webapis/performance/PerformanceObserver.js +4 -4
- package/src/private/webapis/performance/ResourceTiming.js +13 -13
- package/src/private/webapis/performance/UserTiming.js +3 -3
- package/src/private/webapis/performance/internals/Utilities.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +26 -20
- package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
- package/src/private/webapis/websockets/events/CloseEvent.js +3 -3
- package/src/private/webapis/xhr/events/ProgressEvent.js +3 -3
- package/src/react-private-interface.js +145 -0
- package/src/react-private-interface.js.flow +48 -0
- package/src/setup-env.js +22 -0
- package/src/types/globals.d.ts +33 -1
- package/src/unstable-internals-do-not-use.d.ts +214 -0
- package/src/unstable-internals-do-not-use.js +76 -0
- package/third-party-podspecs/ReactNativeDependencies.podspec +2 -2
- package/types/index.d.ts +0 -1
- package/types/public/DeprecatedPropertiesAlias.d.ts +0 -4
- package/types/public/ReactNativeTypes.d.ts +4 -2
- package/Libraries/AppDelegate/RCTArchConfiguratorProtocol.h +0 -38
- package/Libraries/Image/AssetRegistry.js +0 -14
- package/Libraries/Image/RCTImageShadowView.h +0 -17
- package/Libraries/Image/RCTImageShadowView.mm +0 -28
- package/Libraries/Image/RCTImageView.h +0 -32
- package/Libraries/Image/RCTImageView.mm +0 -507
- package/Libraries/Image/RCTImageViewManager.h +0 -17
- package/Libraries/Image/RCTImageViewManager.mm +0 -115
- package/Libraries/Interaction/InteractionManager.d.ts +0 -87
- package/Libraries/Interaction/InteractionManager.js +0 -189
- package/Libraries/Text/BaseText/RCTBaseTextShadowView.h +0 -35
- package/Libraries/Text/BaseText/RCTBaseTextShadowView.mm +0 -162
- package/Libraries/Text/BaseText/RCTBaseTextViewManager.h +0 -21
- package/Libraries/Text/BaseText/RCTBaseTextViewManager.mm +0 -64
- package/Libraries/Text/RCTTextAttributes.h +0 -107
- package/Libraries/Text/RCTTextAttributes.mm +0 -358
- package/Libraries/Text/RawText/RCTRawTextShadowView.h +0 -23
- package/Libraries/Text/RawText/RCTRawTextShadowView.mm +0 -38
- package/Libraries/Text/RawText/RCTRawTextViewManager.h +0 -21
- package/Libraries/Text/RawText/RCTRawTextViewManager.mm +0 -32
- package/Libraries/Text/Text/RCTTextShadowView.h +0 -33
- package/Libraries/Text/Text/RCTTextShadowView.mm +0 -469
- package/Libraries/Text/Text/RCTTextView.h +0 -34
- package/Libraries/Text/Text/RCTTextView.mm +0 -308
- package/Libraries/Text/Text/RCTTextViewManager.h +0 -19
- package/Libraries/Text/Text/RCTTextViewManager.mm +0 -97
- package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.h +0 -21
- package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm +0 -67
- package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.h +0 -21
- package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.mm +0 -30
- package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.h +0 -30
- package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm +0 -367
- package/Libraries/Text/TextInput/RCTBaseTextInputView.h +0 -68
- package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +0 -858
- package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.h +0 -17
- package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +0 -181
- package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.h +0 -17
- package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.mm +0 -24
- package/Libraries/Text/TextInput/RCTInputAccessoryView.h +0 -22
- package/Libraries/Text/TextInput/RCTInputAccessoryView.mm +0 -82
- package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.h +0 -17
- package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.mm +0 -78
- package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.h +0 -17
- package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.mm +0 -33
- package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.h +0 -21
- package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.mm +0 -43
- package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.h +0 -21
- package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm +0 -35
- package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.h +0 -17
- package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.mm +0 -42
- package/Libraries/Text/VirtualText/RCTVirtualTextView.h +0 -28
- package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.h +0 -17
- package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.mm +0 -30
- package/Libraries/Utilities/SceneTracker.js +0 -42
- package/Libraries/Wrapper/Example/RCTWrapperExampleView.h +0 -21
- package/Libraries/Wrapper/Example/RCTWrapperExampleView.m +0 -57
- package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.h +0 -21
- package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.m +0 -27
- package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.h +0 -25
- package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.m +0 -50
- package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.h +0 -23
- package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.m +0 -35
- package/Libraries/Wrapper/RCTWrapper.h +0 -73
- package/Libraries/Wrapper/RCTWrapperShadowView.h +0 -27
- package/Libraries/Wrapper/RCTWrapperShadowView.m +0 -138
- package/Libraries/Wrapper/RCTWrapperView.h +0 -42
- package/Libraries/Wrapper/RCTWrapperView.m +0 -99
- package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.h +0 -30
- package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.m +0 -137
- package/Libraries/Wrapper/RCTWrapperViewManager.h +0 -25
- package/Libraries/Wrapper/RCTWrapperViewManager.m +0 -31
- package/React/Base/RCTRootContentView.h +0 -43
- package/React/Base/RCTRootContentView.m +0 -111
- package/React/Base/RCTRootViewInternal.h +0 -40
- package/React/CxxBridge/RCTCxxBridge.mm +0 -1572
- package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.h +0 -25
- package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.mm +0 -34
- package/React/CxxBridge/RCTObjcExecutor.h +0 -34
- package/React/CxxBridge/RCTObjcExecutor.mm +0 -150
- package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -34
- package/React/CxxModule/DispatchMessageQueueThread.h +0 -50
- package/React/CxxModule/RCTCxxMethod.h +0 -17
- package/React/CxxModule/RCTCxxMethod.mm +0 -147
- package/React/CxxModule/RCTNativeModule.h +0 -34
- package/React/CxxModule/RCTNativeModule.mm +0 -241
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +0 -205
- package/React/Tests/Text/RCTTextAttributesTest.mm +0 -49
- package/React/Views/RCTActivityIndicatorView.h +0 -16
- package/React/Views/RCTActivityIndicatorView.m +0 -26
- package/React/Views/RCTActivityIndicatorViewManager.h +0 -23
- package/React/Views/RCTActivityIndicatorViewManager.m +0 -65
- package/React/Views/RCTDebuggingOverlayManager.h +0 -17
- package/React/Views/RCTDebuggingOverlayManager.m +0 -68
- package/React/Views/RCTModalHostView.h +0 -72
- package/React/Views/RCTModalHostView.m +0 -302
- package/React/Views/RCTModalHostViewController.m +0 -107
- package/React/Views/RCTModalHostViewManager.m +0 -131
- package/React/Views/RCTModalManager.h +0 -22
- package/React/Views/RCTModalManager.m +0 -46
- package/React/Views/RCTRootShadowView.h +0 -35
- package/React/Views/RCTRootShadowView.m +0 -53
- package/React/Views/RCTShadowView+Internal.h +0 -18
- package/React/Views/RCTShadowView+Internal.m +0 -23
- package/React/Views/RCTSwitch.h +0 -24
- package/React/Views/RCTSwitch.m +0 -26
- package/React/Views/RCTSwitchManager.h +0 -19
- package/React/Views/RCTSwitchManager.m +0 -72
- package/React/Views/RCTTVView.h +0 -105
- package/React/Views/RCTTVView.m +0 -602
- package/React/Views/RefreshControl/RCTRefreshControl.h +0 -26
- package/React/Views/RefreshControl/RCTRefreshControl.m +0 -232
- package/React/Views/RefreshControl/RCTRefreshControlManager.h +0 -19
- package/React/Views/RefreshControl/RCTRefreshControlManager.m +0 -49
- package/React/Views/SafeAreaView/RCTSafeAreaShadowView.h +0 -21
- package/React/Views/SafeAreaView/RCTSafeAreaShadowView.m +0 -57
- package/React/Views/SafeAreaView/RCTSafeAreaView.h +0 -27
- package/React/Views/SafeAreaView/RCTSafeAreaView.m +0 -79
- package/React/Views/SafeAreaView/RCTSafeAreaViewLocalData.h +0 -25
- package/React/Views/SafeAreaView/RCTSafeAreaViewLocalData.m +0 -25
- package/React/Views/SafeAreaView/RCTSafeAreaViewManager.h +0 -21
- package/React/Views/SafeAreaView/RCTSafeAreaViewManager.m +0 -32
- package/React/Views/ScrollView/RCTScrollContentShadowView.h +0 -19
- package/React/Views/ScrollView/RCTScrollContentShadowView.m +0 -35
- package/React/Views/ScrollView/RCTScrollContentView.h +0 -19
- package/React/Views/ScrollView/RCTScrollContentView.m +0 -36
- package/React/Views/ScrollView/RCTScrollContentViewManager.h +0 -17
- package/React/Views/ScrollView/RCTScrollContentViewManager.m +0 -31
- package/React/Views/ScrollView/RCTScrollView.m +0 -1508
- package/React/Views/ScrollView/RCTScrollViewManager.h +0 -25
- package/React/Views/ScrollView/RCTScrollViewManager.m +0 -208
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +0 -251
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java +0 -315
- package/ReactAndroid/src/main/java/com/facebook/react/common/ClearableSynchronizedPool.kt +0 -51
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +0 -89
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +0 -736
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +0 -221
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +0 -399
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactZIndexedViewGroup.kt +0 -35
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +0 -346
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +0 -666
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +0 -147
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupDrawingOrderHelper.kt +0 -113
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +0 -614
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +0 -1949
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +0 -1646
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +0 -1744
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +0 -51
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaBoxSizing.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDimension.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +0 -37
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaEdge.java +0 -47
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaErrata.java +0 -41
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaFlexDirection.java +0 -37
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +0 -39
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.java +0 -35
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +0 -49
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaLogLevel.java +0 -45
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaMeasureMode.java +0 -35
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +0 -928
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaOverflow.java +0 -35
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.java +0 -35
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.java +0 -43
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaWrap.java +0 -35
- package/ReactAndroid/src/main/jni/react/fabric/JAnimationBackendChoreographer.cpp +0 -23
- package/ReactAndroid/src/main/jni/react/fabric/JAnimationBackendChoreographer.h +0 -37
- package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +0 -135
- package/ReactCommon/cxxreact/JSIndexedRAMBundle.h +0 -72
- package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.cpp +0 -143
- package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.h +0 -55
- package/ReactCommon/hermes/inspector-modern/chrome/Registration.cpp +0 -78
- package/ReactCommon/hermes/inspector-modern/chrome/Registration.h +0 -39
- package/ReactCommon/hermes/inspector-modern/chrome/tests/ConnectionDemuxTests.cpp +0 -148
- package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +0 -168
- package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.cpp +0 -416
- package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.h +0 -31
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +0 -134
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +0 -290
- package/ReactCommon/react/renderer/core/RawPropsKey.cpp +0 -62
- package/ReactCommon/react/renderer/core/RawPropsKey.h +0 -39
- package/ReactCommon/react/renderer/mounting/internal/DiffMap.h +0 -170
- package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +0 -95
- package/ReactCommon/react/renderer/mounting/internal/TinyMap.h +0 -147
- package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +0 -154
- package/interface.js +0 -21
- package/jest-preset.js +0 -26
- package/rn-get-polyfills.js +0 -13
- package/sdks/.hermesversion +0 -1
- package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +0 -13
- package/types/tsconfig.json +0 -15
- /package/ReactCommon/{cxxreact → react/utils}/MoveWrapper.h +0 -0
|
@@ -0,0 +1,671 @@
|
|
|
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
|
+
// Standalone reproduction of the use-after-free race between Scheduler
|
|
9
|
+
// teardown and pending rendering-update lambdas previously enqueued via
|
|
10
|
+
// runtimeScheduler_->scheduleRenderingUpdate inside
|
|
11
|
+
// Scheduler::uiManagerDidFinishTransaction (and its sibling
|
|
12
|
+
// uiManagerDidDispatchCommand). The lambda captures the delegate by raw
|
|
13
|
+
// pointer; if the delegate is destroyed (as part of an instance teardown
|
|
14
|
+
// triggered by an uncaught fatal error) before the lambda runs, the
|
|
15
|
+
// dereference is a use-after-free unless the invalidation-token guard in
|
|
16
|
+
// Scheduler::setDelegate is enabled at queue time.
|
|
17
|
+
//
|
|
18
|
+
// The test drives the *real* Scheduler::uiManagerDidFinishTransaction so the
|
|
19
|
+
// rendering-update lambda is enqueued via the regular code path into a real
|
|
20
|
+
// RuntimeScheduler's pending-rendering-updates queue. The teardown is
|
|
21
|
+
// initiated by an uncaught JSI host-function throw routed through
|
|
22
|
+
// RuntimeScheduler's onTaskError callback (the test's analog of the host
|
|
23
|
+
// fatal handler), then we trigger an event loop tick to drain the queue.
|
|
24
|
+
//
|
|
25
|
+
// Fantom is intentionally not used here: it shares the global runtime VM
|
|
26
|
+
// across tests, which would interfere with this test's contract that no
|
|
27
|
+
// further JS executes after a fatal-driven instance teardown.
|
|
28
|
+
|
|
29
|
+
#include <gtest/gtest.h>
|
|
30
|
+
#include <hermes/hermes.h>
|
|
31
|
+
#include <jsi/jsi.h>
|
|
32
|
+
|
|
33
|
+
#include <ReactCommon/RuntimeExecutor.h>
|
|
34
|
+
#include <react/featureflags/ReactNativeFeatureFlags.h>
|
|
35
|
+
#include <react/featureflags/ReactNativeFeatureFlagsDefaults.h>
|
|
36
|
+
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
|
37
|
+
#include <react/renderer/components/root/RootComponentDescriptor.h>
|
|
38
|
+
#include <react/renderer/components/root/RootProps.h>
|
|
39
|
+
#include <react/renderer/components/view/ViewComponentDescriptor.h>
|
|
40
|
+
#include <react/renderer/core/EventBeat.h>
|
|
41
|
+
#include <react/renderer/core/EventDispatcher.h>
|
|
42
|
+
#include <react/renderer/element/ComponentBuilder.h>
|
|
43
|
+
#include <react/renderer/element/Element.h>
|
|
44
|
+
#include <react/renderer/element/testUtils.h>
|
|
45
|
+
#include <react/renderer/mounting/MountingCoordinator.h>
|
|
46
|
+
#include <react/renderer/mounting/ShadowTreeRevision.h>
|
|
47
|
+
#include <react/renderer/runtimescheduler/RuntimeScheduler.h>
|
|
48
|
+
#include <react/renderer/scheduler/Scheduler.h>
|
|
49
|
+
#include <react/renderer/scheduler/SchedulerDelegate.h>
|
|
50
|
+
#include <react/renderer/scheduler/SchedulerToolbox.h>
|
|
51
|
+
#include <react/renderer/scheduler/SurfaceHandler.h>
|
|
52
|
+
#include <react/renderer/telemetry/TransactionTelemetry.h>
|
|
53
|
+
#include <react/renderer/uimanager/primitives.h>
|
|
54
|
+
#include <react/utils/ContextContainer.h>
|
|
55
|
+
|
|
56
|
+
#include <folly/dynamic.h>
|
|
57
|
+
#include <cstdint>
|
|
58
|
+
#include <functional>
|
|
59
|
+
#include <memory>
|
|
60
|
+
#include <queue>
|
|
61
|
+
#include <utility>
|
|
62
|
+
|
|
63
|
+
namespace facebook::react {
|
|
64
|
+
|
|
65
|
+
namespace {
|
|
66
|
+
|
|
67
|
+
// Magic sentinels embedded in RecordingDelegate to detect post-destruction
|
|
68
|
+
// access without requiring AddressSanitizer. The destructor flips kAlive ->
|
|
69
|
+
// kDestroyed as its first action; if a captured raw pointer is dereferenced
|
|
70
|
+
// after the destructor ran, the next read of aliveMagic_ will either see
|
|
71
|
+
// kDestroyed (best case) or whatever stomped the slab on heap reuse — both
|
|
72
|
+
// will fail the ASSERT_EQ check inside the recording delegate's methods.
|
|
73
|
+
constexpr uint64_t kAlive = 0xA11FED01A11FED01ULL;
|
|
74
|
+
constexpr uint64_t kDestroyed = 0xDEADBEEFDEADBEEFULL;
|
|
75
|
+
|
|
76
|
+
// Minimal SchedulerDelegate that records calls and, more importantly, guards
|
|
77
|
+
// every method body with a magic-sentinel check so a use-after-free shows up
|
|
78
|
+
// as an explicit gtest failure (or, when the binary runs under ASan, the
|
|
79
|
+
// sanitizer trips on the vptr load before our check even runs). aliveMagic_
|
|
80
|
+
// is intentionally the first member so it sits at a predictable offset for
|
|
81
|
+
// debugger / ASan inspection.
|
|
82
|
+
class RecordingDelegate : public SchedulerDelegate {
|
|
83
|
+
public:
|
|
84
|
+
RecordingDelegate() = default;
|
|
85
|
+
|
|
86
|
+
~RecordingDelegate() noexcept override {
|
|
87
|
+
aliveMagic_ = kDestroyed;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
void schedulerDidFinishTransaction(
|
|
91
|
+
const std::shared_ptr<const MountingCoordinator>& /*unused*/) override {
|
|
92
|
+
ASSERT_EQ(aliveMagic_, kAlive)
|
|
93
|
+
<< "schedulerDidFinishTransaction invoked after delegate destruction";
|
|
94
|
+
++didFinishTransactionCount_;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
void schedulerShouldRenderTransactions(
|
|
98
|
+
const std::shared_ptr<const MountingCoordinator>& /*unused*/) override {
|
|
99
|
+
// This is the call the rendering-update lambda makes inside
|
|
100
|
+
// Scheduler::uiManagerDidFinishTransaction. Reaching this method with
|
|
101
|
+
// the magic sentinel flipped means the lambda raced past delegate
|
|
102
|
+
// destruction — the use-after-free this test is designed to detect.
|
|
103
|
+
ASSERT_EQ(aliveMagic_, kAlive)
|
|
104
|
+
<< "schedulerShouldRenderTransactions invoked after delegate "
|
|
105
|
+
<< "destruction (use-after-free)";
|
|
106
|
+
++shouldRenderTransactionsCount_;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
void schedulerShouldMergeReactRevision(SurfaceId /*unused*/) override {}
|
|
110
|
+
void schedulerDidRequestPreliminaryViewAllocation(
|
|
111
|
+
const ShadowNode& /*unused*/) override {}
|
|
112
|
+
void schedulerDidDispatchCommand(
|
|
113
|
+
const ShadowView& /*unused*/,
|
|
114
|
+
const std::string& commandName,
|
|
115
|
+
const folly::dynamic& /*unused*/) override {
|
|
116
|
+
// Mirrors the schedulerShouldRenderTransactions guard above. This is the
|
|
117
|
+
// call the rendering-update lambda enqueued by
|
|
118
|
+
// Scheduler::uiManagerDidDispatchCommand makes (e.g. for `scrollTo`).
|
|
119
|
+
ASSERT_EQ(aliveMagic_, kAlive)
|
|
120
|
+
<< "schedulerDidDispatchCommand invoked after delegate destruction "
|
|
121
|
+
<< "(commandName=" << commandName << ")";
|
|
122
|
+
++didDispatchCommandCount_;
|
|
123
|
+
}
|
|
124
|
+
void schedulerDidSendAccessibilityEvent(
|
|
125
|
+
const ShadowView& /*unused*/,
|
|
126
|
+
const std::string& /*unused*/) override {}
|
|
127
|
+
void schedulerDidSetIsJSResponder(
|
|
128
|
+
const ShadowView& /*unused*/,
|
|
129
|
+
bool /*unused*/,
|
|
130
|
+
bool /*unused*/) override {}
|
|
131
|
+
void schedulerShouldSynchronouslyUpdateViewOnUIThread(
|
|
132
|
+
Tag /*unused*/,
|
|
133
|
+
const folly::dynamic& /*unused*/) override {}
|
|
134
|
+
void schedulerDidUpdateShadowTree(
|
|
135
|
+
const std::unordered_map<Tag, folly::dynamic>& /*unused*/) override {}
|
|
136
|
+
void schedulerDidCaptureViewSnapshot(Tag /*unused*/, SurfaceId /*unused*/)
|
|
137
|
+
override {}
|
|
138
|
+
void schedulerDidSetViewSnapshot(
|
|
139
|
+
Tag /*unused*/,
|
|
140
|
+
Tag /*unused*/,
|
|
141
|
+
SurfaceId /*unused*/) override {}
|
|
142
|
+
void schedulerDidClearPendingSnapshots() override {}
|
|
143
|
+
|
|
144
|
+
int didFinishTransactionCount() const {
|
|
145
|
+
return didFinishTransactionCount_;
|
|
146
|
+
}
|
|
147
|
+
int shouldRenderTransactionsCount() const {
|
|
148
|
+
return shouldRenderTransactionsCount_;
|
|
149
|
+
}
|
|
150
|
+
int didDispatchCommandCount() const {
|
|
151
|
+
return didDispatchCommandCount_;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private:
|
|
155
|
+
uint64_t aliveMagic_{kAlive};
|
|
156
|
+
int didFinishTransactionCount_{0};
|
|
157
|
+
int shouldRenderTransactionsCount_{0};
|
|
158
|
+
int didDispatchCommandCount_{0};
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
// EventBeat stub. Scheduler instantiates one through the toolbox factory but
|
|
162
|
+
// our test never drives any platform-side beat, so the default request() and
|
|
163
|
+
// induce() implementations (which assume a scheduler-backed beat) are fine.
|
|
164
|
+
class StubEventBeat : public EventBeat {
|
|
165
|
+
public:
|
|
166
|
+
StubEventBeat(
|
|
167
|
+
std::shared_ptr<OwnerBox> ownerBox,
|
|
168
|
+
RuntimeScheduler& runtimeScheduler)
|
|
169
|
+
: EventBeat(std::move(ownerBox), runtimeScheduler) {}
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
// A FIFO of work items installed as the runtime executor. The test drains it
|
|
173
|
+
// explicitly via tick()/flush() so the JS thread's progress is fully under
|
|
174
|
+
// test control relative to teardown. This keeps the cascade ordering
|
|
175
|
+
// deterministic across runs.
|
|
176
|
+
class TestExecutorQueue {
|
|
177
|
+
public:
|
|
178
|
+
void enqueue(std::function<void()> work) {
|
|
179
|
+
queue_.push(std::move(work));
|
|
180
|
+
}
|
|
181
|
+
void tick() {
|
|
182
|
+
if (queue_.empty()) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
auto work = std::move(queue_.front());
|
|
186
|
+
queue_.pop();
|
|
187
|
+
work();
|
|
188
|
+
}
|
|
189
|
+
void flush() {
|
|
190
|
+
while (!queue_.empty()) {
|
|
191
|
+
tick();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
private:
|
|
196
|
+
std::queue<std::function<void()>> queue_;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
// Feature flags relevant to this test:
|
|
200
|
+
// - enableSchedulerDelegateInvalidation: the token guard under test.
|
|
201
|
+
// - enableRuntimeSchedulerQueueClearingOnError: a RuntimeScheduler_Modern
|
|
202
|
+
// fallback that drops queued work before host error handling tears down the
|
|
203
|
+
// delegate.
|
|
204
|
+
// - enableBridgelessArchitecture: forced ON so the Scheduler picks
|
|
205
|
+
// RuntimeScheduler_Modern. Modern queues rendering updates in
|
|
206
|
+
// pendingRenderingUpdates_ and drains them at end-of-tick, which is the
|
|
207
|
+
// ordering required to expose the race. RuntimeScheduler_Legacy runs
|
|
208
|
+
// scheduleRenderingUpdate inline, collapsing the window we want to test.
|
|
209
|
+
class TestFeatureFlags : public ReactNativeFeatureFlagsDefaults {
|
|
210
|
+
public:
|
|
211
|
+
explicit TestFeatureFlags(
|
|
212
|
+
bool guardEnabled,
|
|
213
|
+
bool queueClearingOnErrorEnabled = false)
|
|
214
|
+
: guardEnabled_(guardEnabled),
|
|
215
|
+
queueClearingOnErrorEnabled_(queueClearingOnErrorEnabled) {}
|
|
216
|
+
|
|
217
|
+
bool enableBridgelessArchitecture() override {
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
bool enableRuntimeSchedulerQueueClearingOnError() override {
|
|
221
|
+
return queueClearingOnErrorEnabled_;
|
|
222
|
+
}
|
|
223
|
+
bool enableSchedulerDelegateInvalidation() override {
|
|
224
|
+
return guardEnabled_;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
private:
|
|
228
|
+
bool guardEnabled_;
|
|
229
|
+
bool queueClearingOnErrorEnabled_;
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// Builds a ComponentRegistryFactory with just the descriptors needed for the
|
|
233
|
+
// test's shadow tree (Root + View). Matches the signature SchedulerToolbox
|
|
234
|
+
// expects.
|
|
235
|
+
ComponentRegistryFactory makeComponentRegistryFactory() {
|
|
236
|
+
return [](const EventDispatcher::Weak& eventDispatcher,
|
|
237
|
+
const std::shared_ptr<const ContextContainer>& contextContainer)
|
|
238
|
+
-> SharedComponentDescriptorRegistry {
|
|
239
|
+
ComponentDescriptorProviderRegistry providerRegistry{};
|
|
240
|
+
providerRegistry.add(
|
|
241
|
+
concreteComponentDescriptorProvider<RootComponentDescriptor>());
|
|
242
|
+
providerRegistry.add(
|
|
243
|
+
concreteComponentDescriptorProvider<ViewComponentDescriptor>());
|
|
244
|
+
return providerRegistry.createComponentDescriptorRegistry(
|
|
245
|
+
ComponentDescriptorParameters{
|
|
246
|
+
.eventDispatcher = eventDispatcher,
|
|
247
|
+
.contextContainer = contextContainer,
|
|
248
|
+
.flavor = nullptr});
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Test fixture: stands up the minimum infrastructure required to construct
|
|
253
|
+
// a real Scheduler and drive uiManagerDidFinishTransaction end-to-end.
|
|
254
|
+
class SchedulerDelegateInvalidationTest : public ::testing::Test {
|
|
255
|
+
protected:
|
|
256
|
+
void setUp(bool guardEnabled, bool queueClearingOnErrorEnabled = false) {
|
|
257
|
+
ReactNativeFeatureFlags::override(
|
|
258
|
+
std::make_unique<TestFeatureFlags>(
|
|
259
|
+
guardEnabled, queueClearingOnErrorEnabled));
|
|
260
|
+
|
|
261
|
+
runtime_ = facebook::hermes::makeHermesRuntime(
|
|
262
|
+
::hermes::vm::RuntimeConfig::Builder()
|
|
263
|
+
.withMicrotaskQueue(true)
|
|
264
|
+
.build());
|
|
265
|
+
executorQueue_ = std::make_unique<TestExecutorQueue>();
|
|
266
|
+
|
|
267
|
+
RuntimeExecutor runtimeExecutor =
|
|
268
|
+
[this](
|
|
269
|
+
std::function<void(facebook::jsi::Runtime & runtime)>&& callback) {
|
|
270
|
+
executorQueue_->enqueue(
|
|
271
|
+
[this, callback = std::move(callback)]() mutable {
|
|
272
|
+
callback(*runtime_);
|
|
273
|
+
});
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
// onTaskError stands in for a host-side fatal handler that initiates an
|
|
277
|
+
// instance teardown. When a JS task throws (uncaught at the JSI host
|
|
278
|
+
// boundary), RuntimeScheduler routes the error here; the test fixture
|
|
279
|
+
// treats that as a fatal and tears down the instance in the same order
|
|
280
|
+
// a host-side invalidate path would:
|
|
281
|
+
// 1. unregister all surfaces (clears their per-surface UIManager
|
|
282
|
+
// pointer; a real host would also stop running surfaces first),
|
|
283
|
+
// 2. clear the scheduler delegate (setDelegate(nullptr)),
|
|
284
|
+
// 3. drop the surface presenter that backed the delegate.
|
|
285
|
+
//
|
|
286
|
+
// Note: step 1 does NOT drain RuntimeScheduler_Modern's
|
|
287
|
+
// pendingRenderingUpdates_. That's exactly the point of the test —
|
|
288
|
+
// surface-level shutdown can't reach the lambda race; the race lives in
|
|
289
|
+
// the runtime scheduler's queue and is only closed by the invalidation
|
|
290
|
+
// token guard added in Scheduler::setDelegate or by runtime-scheduler-level
|
|
291
|
+
// queue clearing on error.
|
|
292
|
+
auto onTaskError = [this](
|
|
293
|
+
jsi::Runtime& /*runtime*/, jsi::JSError& /*error*/) {
|
|
294
|
+
jsThrowObserved_ = true;
|
|
295
|
+
if (scheduler_ && surfaceHandler_ &&
|
|
296
|
+
surfaceHandler_->getStatus() !=
|
|
297
|
+
SurfaceHandler::Status::Unregistered) {
|
|
298
|
+
scheduler_->unregisterSurface(*surfaceHandler_);
|
|
299
|
+
}
|
|
300
|
+
if (scheduler_) {
|
|
301
|
+
scheduler_->setDelegate(nullptr);
|
|
302
|
+
}
|
|
303
|
+
delegate_.reset();
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
runtimeScheduler_ = std::make_shared<RuntimeScheduler>(
|
|
307
|
+
runtimeExecutor,
|
|
308
|
+
[]() { return HighResTimeStamp::now(); },
|
|
309
|
+
std::move(onTaskError));
|
|
310
|
+
|
|
311
|
+
contextContainer_ = std::make_shared<ContextContainer>();
|
|
312
|
+
contextContainer_->insert(
|
|
313
|
+
RuntimeSchedulerKey,
|
|
314
|
+
std::weak_ptr<RuntimeScheduler>(runtimeScheduler_));
|
|
315
|
+
|
|
316
|
+
SchedulerToolbox toolbox{};
|
|
317
|
+
toolbox.contextContainer = contextContainer_;
|
|
318
|
+
toolbox.runtimeExecutor = runtimeExecutor;
|
|
319
|
+
toolbox.componentRegistryFactory = makeComponentRegistryFactory();
|
|
320
|
+
toolbox.eventBeatFactory =
|
|
321
|
+
[this](std::shared_ptr<EventBeat::OwnerBox> ownerBox) {
|
|
322
|
+
return std::make_unique<StubEventBeat>(
|
|
323
|
+
std::move(ownerBox), *runtimeScheduler_);
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
delegate_ = std::make_unique<RecordingDelegate>();
|
|
327
|
+
scheduler_ = std::make_unique<Scheduler>(
|
|
328
|
+
toolbox, /*animationDelegate=*/nullptr, delegate_.get());
|
|
329
|
+
|
|
330
|
+
// Register a surface with the scheduler so the teardown path mirrors
|
|
331
|
+
// production cascade ordering (per-surface unregister BEFORE delegate
|
|
332
|
+
// drop). The handler is intentionally not started — we never run the
|
|
333
|
+
// surface through the UIManager, since the test feeds a coordinator
|
|
334
|
+
// directly to uiManagerDidFinishTransaction. SurfaceHandler must reach
|
|
335
|
+
// Status::Unregistered before destruction, so TearDown also handles
|
|
336
|
+
// the case where onTaskError didn't run.
|
|
337
|
+
surfaceHandler_ = std::make_unique<SurfaceHandler>(
|
|
338
|
+
/*moduleName=*/"", /*surfaceId=*/11);
|
|
339
|
+
scheduler_->registerSurface(*surfaceHandler_);
|
|
340
|
+
|
|
341
|
+
coordinator_ = makeCoordinator(/*surfaceId=*/11);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
void TearDown() override {
|
|
345
|
+
if (surfaceHandler_ && scheduler_ &&
|
|
346
|
+
surfaceHandler_->getStatus() != SurfaceHandler::Status::Unregistered) {
|
|
347
|
+
scheduler_->unregisterSurface(*surfaceHandler_);
|
|
348
|
+
}
|
|
349
|
+
surfaceHandler_.reset();
|
|
350
|
+
scheduler_.reset();
|
|
351
|
+
delegate_.reset();
|
|
352
|
+
coordinator_.reset();
|
|
353
|
+
rootShadowNode_.reset();
|
|
354
|
+
runtimeScheduler_.reset();
|
|
355
|
+
contextContainer_.reset();
|
|
356
|
+
executorQueue_.reset();
|
|
357
|
+
runtime_.reset();
|
|
358
|
+
ReactNativeFeatureFlags::dangerouslyReset();
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// Builds a real RootShadowNode at the given surfaceId and wraps it in a
|
|
362
|
+
// ShadowTreeRevision + MountingCoordinator. This is what
|
|
363
|
+
// Scheduler::uiManagerDidFinishTransaction reads getSurfaceId() from at
|
|
364
|
+
// queue time. Saves the rootShadowNode in the fixture so dispatch-command
|
|
365
|
+
// tests can pass it to Scheduler::uiManagerDidDispatchCommand.
|
|
366
|
+
std::shared_ptr<MountingCoordinator> makeCoordinator(SurfaceId surfaceId) {
|
|
367
|
+
auto builder = simpleComponentBuilder(contextContainer_);
|
|
368
|
+
std::shared_ptr<RootShadowNode> rootShadowNode;
|
|
369
|
+
auto element = Element<RootShadowNode>()
|
|
370
|
+
.reference(rootShadowNode)
|
|
371
|
+
.surfaceId(surfaceId)
|
|
372
|
+
.tag(1)
|
|
373
|
+
.props([] {
|
|
374
|
+
auto props = std::make_shared<RootProps>();
|
|
375
|
+
return props;
|
|
376
|
+
});
|
|
377
|
+
builder.build(element);
|
|
378
|
+
rootShadowNode_ = rootShadowNode;
|
|
379
|
+
|
|
380
|
+
ShadowTreeRevision revision{
|
|
381
|
+
.rootShadowNode = rootShadowNode, .number = 1, .telemetry = {}};
|
|
382
|
+
return std::make_shared<MountingCoordinator>(revision);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// Drives one event-loop tick by scheduling a no-op task and processing the
|
|
386
|
+
// resulting executor queue entries. The end-of-tick drain in
|
|
387
|
+
// RuntimeScheduler_Modern flushes pendingRenderingUpdates_, where the
|
|
388
|
+
// lambda enqueued by uiManagerDidFinishTransaction lives.
|
|
389
|
+
void runOneEventLoopTick() {
|
|
390
|
+
runtimeScheduler_->scheduleWork(
|
|
391
|
+
[](jsi::Runtime& /*unused*/) { /* no-op */ });
|
|
392
|
+
executorQueue_->flush();
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// Schedules a JS task whose host function throws an uncaught Error. When
|
|
396
|
+
// the task runs and the throw escapes the host-function boundary,
|
|
397
|
+
// RuntimeScheduler routes it through the onTaskError callback installed
|
|
398
|
+
// in setUp(), which in turn simulates a host-driven instance-teardown
|
|
399
|
+
// cascade by dropping the delegate.
|
|
400
|
+
void scheduleJSThrowingTask() {
|
|
401
|
+
auto throwingHostFn = jsi::Function::createFromHostFunction(
|
|
402
|
+
*runtime_,
|
|
403
|
+
jsi::PropNameID::forUtf8(*runtime_, "throwUncaught"),
|
|
404
|
+
0,
|
|
405
|
+
[](jsi::Runtime& runtime,
|
|
406
|
+
const jsi::Value& /*unused*/,
|
|
407
|
+
const jsi::Value* /*args*/,
|
|
408
|
+
size_t /*count*/) -> jsi::Value {
|
|
409
|
+
// Simulates an uncaught JS error at the JSI host-function boundary
|
|
410
|
+
// — the same shape as the "Exception in HostFunction" surfaces
|
|
411
|
+
// that propagate to a host-side fatal handler in production.
|
|
412
|
+
throw jsi::JSError(runtime, "simulated uncaught fatal");
|
|
413
|
+
});
|
|
414
|
+
runtimeScheduler_->scheduleTask(
|
|
415
|
+
SchedulerPriority::NormalPriority, std::move(throwingHostFn));
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
void schedulePostErrorTask() {
|
|
419
|
+
runtimeScheduler_->scheduleTask(
|
|
420
|
+
SchedulerPriority::NormalPriority,
|
|
421
|
+
[this](jsi::Runtime& /*runtime*/) { postErrorTaskRan_ = true; });
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
std::unique_ptr<facebook::hermes::HermesRuntime> runtime_;
|
|
425
|
+
std::unique_ptr<TestExecutorQueue> executorQueue_;
|
|
426
|
+
std::shared_ptr<RuntimeScheduler> runtimeScheduler_;
|
|
427
|
+
std::shared_ptr<ContextContainer> contextContainer_;
|
|
428
|
+
std::unique_ptr<RecordingDelegate> delegate_;
|
|
429
|
+
std::unique_ptr<Scheduler> scheduler_;
|
|
430
|
+
std::unique_ptr<SurfaceHandler> surfaceHandler_;
|
|
431
|
+
std::shared_ptr<MountingCoordinator> coordinator_;
|
|
432
|
+
std::shared_ptr<RootShadowNode> rootShadowNode_;
|
|
433
|
+
bool jsThrowObserved_{false};
|
|
434
|
+
bool postErrorTaskRan_{false};
|
|
435
|
+
};
|
|
436
|
+
|
|
437
|
+
} // namespace
|
|
438
|
+
|
|
439
|
+
// ---------------------------------------------------------------------------
|
|
440
|
+
// Test 1 — Sanity: with the delegate alive, uiManagerDidFinishTransaction
|
|
441
|
+
// enqueues a lambda that calls schedulerShouldRenderTransactions on the
|
|
442
|
+
// next event loop tick. Establishes the baseline behavior that the next
|
|
443
|
+
// two tests perturb.
|
|
444
|
+
// ---------------------------------------------------------------------------
|
|
445
|
+
TEST_F(
|
|
446
|
+
SchedulerDelegateInvalidationTest,
|
|
447
|
+
Sanity_LambdaRunsOnNextTickWhenDelegateAlive) {
|
|
448
|
+
setUp(/*guardEnabled=*/true);
|
|
449
|
+
|
|
450
|
+
scheduler_->uiManagerDidFinishTransaction(
|
|
451
|
+
coordinator_, /*mountSynchronously=*/false);
|
|
452
|
+
|
|
453
|
+
// Synchronously, schedulerDidFinishTransaction was called once
|
|
454
|
+
// (Scheduler.cpp dispatches it unconditionally, before the
|
|
455
|
+
// scheduleRenderingUpdate enqueue). schedulerShouldRenderTransactions
|
|
456
|
+
// has NOT been called yet — that one sits in the rendering-update queue.
|
|
457
|
+
EXPECT_EQ(delegate_->didFinishTransactionCount(), 1);
|
|
458
|
+
EXPECT_EQ(delegate_->shouldRenderTransactionsCount(), 0);
|
|
459
|
+
|
|
460
|
+
runOneEventLoopTick();
|
|
461
|
+
|
|
462
|
+
EXPECT_EQ(delegate_->shouldRenderTransactionsCount(), 1);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// ---------------------------------------------------------------------------
|
|
466
|
+
// Test 2 — JS-throw-initiated teardown, guard ENABLED.
|
|
467
|
+
//
|
|
468
|
+
// Cascade replicated in C++:
|
|
469
|
+
// (a) earlier transaction enqueued a rendering-update lambda into
|
|
470
|
+
// pendingRenderingUpdates_ via Scheduler::uiManagerDidFinishTransaction
|
|
471
|
+
// (b) JS throws — uncaught at the JSI host-function boundary
|
|
472
|
+
// (c) RuntimeScheduler routes the error to onTaskError, which simulates a
|
|
473
|
+
// host-driven instance teardown by dropping the delegate
|
|
474
|
+
// (d) the next tick drains the previously-queued rendering update
|
|
475
|
+
//
|
|
476
|
+
// With the guard ON, step (c) flipped the invalidation token; the pending
|
|
477
|
+
// lambda observes that and returns before touching the freed delegate. Safe.
|
|
478
|
+
// ---------------------------------------------------------------------------
|
|
479
|
+
TEST_F(
|
|
480
|
+
SchedulerDelegateInvalidationTest,
|
|
481
|
+
GuardEnabled_JSThrowInitiatedTeardownIsSafe) {
|
|
482
|
+
setUp(/*guardEnabled=*/true);
|
|
483
|
+
|
|
484
|
+
// (a) Pre-throw transaction: lambda lands in pendingRenderingUpdates_.
|
|
485
|
+
scheduler_->uiManagerDidFinishTransaction(
|
|
486
|
+
coordinator_, /*mountSynchronously=*/false);
|
|
487
|
+
EXPECT_EQ(delegate_->shouldRenderTransactionsCount(), 0);
|
|
488
|
+
|
|
489
|
+
// (b) Schedule a JS task that throws uncaught. Draining the executor queue
|
|
490
|
+
// runs the task; the throw flows through to onTaskError → teardown.
|
|
491
|
+
scheduleJSThrowingTask();
|
|
492
|
+
executorQueue_->flush();
|
|
493
|
+
|
|
494
|
+
// Sanity: the simulated fatal cascade fired and the delegate is gone.
|
|
495
|
+
EXPECT_TRUE(jsThrowObserved_);
|
|
496
|
+
EXPECT_EQ(scheduler_->getDelegate(), nullptr);
|
|
497
|
+
|
|
498
|
+
// (d) Drain the pending rendering update. Guard is on → lambda no-ops.
|
|
499
|
+
runOneEventLoopTick();
|
|
500
|
+
|
|
501
|
+
SUCCEED();
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
// ---------------------------------------------------------------------------
|
|
505
|
+
// Test 3 — JS-throw-initiated teardown, guard DISABLED but runtime-scheduler
|
|
506
|
+
// queue clearing ENABLED.
|
|
507
|
+
//
|
|
508
|
+
// Same cascade as Test 2 but with the scheduler invalidation guard OFF. The
|
|
509
|
+
// runtime scheduler clears pendingRenderingUpdates_ before onTaskError tears
|
|
510
|
+
// down the delegate, so the later tick has no stale delegate lambda to drain.
|
|
511
|
+
// ---------------------------------------------------------------------------
|
|
512
|
+
TEST_F(
|
|
513
|
+
SchedulerDelegateInvalidationTest,
|
|
514
|
+
GuardDisabled_QueueClearingOnError_JSThrowInitiatedTeardownIsSafe) {
|
|
515
|
+
setUp(
|
|
516
|
+
/*guardEnabled=*/false,
|
|
517
|
+
/*queueClearingOnErrorEnabled=*/true);
|
|
518
|
+
|
|
519
|
+
scheduler_->uiManagerDidFinishTransaction(
|
|
520
|
+
coordinator_, /*mountSynchronously=*/false);
|
|
521
|
+
EXPECT_EQ(delegate_->shouldRenderTransactionsCount(), 0);
|
|
522
|
+
|
|
523
|
+
scheduleJSThrowingTask();
|
|
524
|
+
schedulePostErrorTask();
|
|
525
|
+
executorQueue_->flush();
|
|
526
|
+
EXPECT_TRUE(jsThrowObserved_);
|
|
527
|
+
EXPECT_EQ(scheduler_->getDelegate(), nullptr);
|
|
528
|
+
EXPECT_FALSE(postErrorTaskRan_);
|
|
529
|
+
|
|
530
|
+
runOneEventLoopTick();
|
|
531
|
+
|
|
532
|
+
SUCCEED();
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// ---------------------------------------------------------------------------
|
|
536
|
+
// Test 4 — JS-throw-initiated teardown, guard DISABLED.
|
|
537
|
+
//
|
|
538
|
+
// Same cascade as Test 2 but with the guard OFF. The previously-enqueued
|
|
539
|
+
// lambda has no working token check, so when the rendering-update drain
|
|
540
|
+
// runs after teardown it dereferences the destroyed delegate.
|
|
541
|
+
//
|
|
542
|
+
// EXPECT_DEATH catches the abort: either RecordingDelegate's magic-sentinel
|
|
543
|
+
// ASSERT_EQ inside schedulerShouldRenderTransactions trips, or ASan reports
|
|
544
|
+
// heap-use-after-free on the vptr load before our assertion runs.
|
|
545
|
+
// ---------------------------------------------------------------------------
|
|
546
|
+
#if GTEST_HAS_DEATH_TEST
|
|
547
|
+
TEST_F(
|
|
548
|
+
SchedulerDelegateInvalidationTest,
|
|
549
|
+
GuardDisabled_JSThrowInitiatedTeardownIsUAF) {
|
|
550
|
+
EXPECT_DEATH(
|
|
551
|
+
{
|
|
552
|
+
setUp(/*guardEnabled=*/false);
|
|
553
|
+
|
|
554
|
+
// (a) Pre-throw transaction: lambda lands in
|
|
555
|
+
// pendingRenderingUpdates_.
|
|
556
|
+
scheduler_->uiManagerDidFinishTransaction(
|
|
557
|
+
coordinator_, /*mountSynchronously=*/false);
|
|
558
|
+
|
|
559
|
+
// (b) Uncaught JS throw → onTaskError → teardown drops the delegate.
|
|
560
|
+
// (c) Note: with guard DISABLED, setDelegate(nullptr) does NOT flip
|
|
561
|
+
// the invalidation token — Scheduler::setDelegate gates that branch
|
|
562
|
+
// on the feature flag — so the pending lambda has no signal that
|
|
563
|
+
// the delegate is going away.
|
|
564
|
+
scheduleJSThrowingTask();
|
|
565
|
+
executorQueue_->flush();
|
|
566
|
+
|
|
567
|
+
// (d) Drain the pending rendering update. The lambda dereferences
|
|
568
|
+
// the destroyed delegate → UAF.
|
|
569
|
+
runOneEventLoopTick();
|
|
570
|
+
},
|
|
571
|
+
"");
|
|
572
|
+
}
|
|
573
|
+
#endif
|
|
574
|
+
|
|
575
|
+
// ---------------------------------------------------------------------------
|
|
576
|
+
// Test 5 — Same race as Test 2, but enqueued via the second lambda site:
|
|
577
|
+
// Scheduler::uiManagerDidDispatchCommand. This is the path the in-app
|
|
578
|
+
// reproduction observed (a `scrollTo` command issued from a tap, queued
|
|
579
|
+
// just before the cascade fatal). With the guard ON the lambda observes
|
|
580
|
+
// the invalidation token and no-ops.
|
|
581
|
+
// ---------------------------------------------------------------------------
|
|
582
|
+
TEST_F(
|
|
583
|
+
SchedulerDelegateInvalidationTest,
|
|
584
|
+
GuardEnabled_DispatchCommandLambda_JSThrowInitiatedTeardownIsSafe) {
|
|
585
|
+
setUp(/*guardEnabled=*/true);
|
|
586
|
+
ASSERT_NE(rootShadowNode_, nullptr);
|
|
587
|
+
|
|
588
|
+
// (a) Pre-throw command: enqueues a rendering-update lambda inside
|
|
589
|
+
// Scheduler::uiManagerDidDispatchCommand that captures the delegate by
|
|
590
|
+
// raw pointer and the invalidation token by shared_ptr.
|
|
591
|
+
scheduler_->uiManagerDidDispatchCommand(
|
|
592
|
+
rootShadowNode_, "scrollTo", folly::dynamic::array());
|
|
593
|
+
EXPECT_EQ(delegate_->didDispatchCommandCount(), 0);
|
|
594
|
+
|
|
595
|
+
// (b) Uncaught JS throw → onTaskError → unregister surface → drop delegate.
|
|
596
|
+
scheduleJSThrowingTask();
|
|
597
|
+
executorQueue_->flush();
|
|
598
|
+
EXPECT_TRUE(jsThrowObserved_);
|
|
599
|
+
EXPECT_EQ(scheduler_->getDelegate(), nullptr);
|
|
600
|
+
|
|
601
|
+
// (c) Drain the pending rendering update. Guard ON → lambda no-ops.
|
|
602
|
+
runOneEventLoopTick();
|
|
603
|
+
|
|
604
|
+
SUCCEED();
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
// ---------------------------------------------------------------------------
|
|
608
|
+
// Test 6 — Same race as Test 3, but enqueued via
|
|
609
|
+
// Scheduler::uiManagerDidDispatchCommand. Guard OFF → lambda dereferences
|
|
610
|
+
// the destroyed delegate → UAF caught by the magic sentinel inside
|
|
611
|
+
// schedulerDidDispatchCommand or by ASan on the vptr load.
|
|
612
|
+
// ---------------------------------------------------------------------------
|
|
613
|
+
#if GTEST_HAS_DEATH_TEST
|
|
614
|
+
TEST_F(
|
|
615
|
+
SchedulerDelegateInvalidationTest,
|
|
616
|
+
GuardDisabled_DispatchCommandLambda_JSThrowInitiatedTeardownIsUAF) {
|
|
617
|
+
EXPECT_DEATH(
|
|
618
|
+
{
|
|
619
|
+
setUp(/*guardEnabled=*/false);
|
|
620
|
+
ASSERT_NE(rootShadowNode_, nullptr);
|
|
621
|
+
|
|
622
|
+
scheduler_->uiManagerDidDispatchCommand(
|
|
623
|
+
rootShadowNode_, "scrollTo", folly::dynamic::array());
|
|
624
|
+
|
|
625
|
+
scheduleJSThrowingTask();
|
|
626
|
+
executorQueue_->flush();
|
|
627
|
+
|
|
628
|
+
runOneEventLoopTick();
|
|
629
|
+
},
|
|
630
|
+
"");
|
|
631
|
+
}
|
|
632
|
+
#endif
|
|
633
|
+
|
|
634
|
+
// ---------------------------------------------------------------------------
|
|
635
|
+
// Test 7 — Architectural assertion: surface-shutdown alone does NOT drain
|
|
636
|
+
// pendingRenderingUpdates_ in RuntimeScheduler_Modern.
|
|
637
|
+
//
|
|
638
|
+
// This is the explicit refutation of the implicit reading "if the host just
|
|
639
|
+
// stops/unregisters all surfaces before dropping the delegate, the lambda
|
|
640
|
+
// race wouldn't be reachable." It would not — surface-shutdown clears the
|
|
641
|
+
// per-surface UIManager pointer but doesn't touch the runtime scheduler's
|
|
642
|
+
// pending-rendering-updates queue. The lambda still runs and still calls
|
|
643
|
+
// the delegate. Only the invalidation-token guard (or, longer-term, a
|
|
644
|
+
// runtime-scheduler-level shutdown signal) closes this race.
|
|
645
|
+
// ---------------------------------------------------------------------------
|
|
646
|
+
TEST_F(
|
|
647
|
+
SchedulerDelegateInvalidationTest,
|
|
648
|
+
UnregisterSurface_DoesNotDrainPendingRenderingUpdates) {
|
|
649
|
+
setUp(/*guardEnabled=*/true);
|
|
650
|
+
|
|
651
|
+
// (a) Enqueue a rendering-update lambda for the registered surface.
|
|
652
|
+
scheduler_->uiManagerDidFinishTransaction(
|
|
653
|
+
coordinator_, /*mountSynchronously=*/false);
|
|
654
|
+
EXPECT_EQ(delegate_->shouldRenderTransactionsCount(), 0);
|
|
655
|
+
|
|
656
|
+
// (b) Unregister the surface — the host's per-surface shutdown step.
|
|
657
|
+
// Crucially, no JS throw and no setDelegate(nullptr) here: the delegate
|
|
658
|
+
// remains alive, only the surface's UIManager pointer is cleared.
|
|
659
|
+
ASSERT_NE(scheduler_->getDelegate(), nullptr);
|
|
660
|
+
scheduler_->unregisterSurface(*surfaceHandler_);
|
|
661
|
+
EXPECT_EQ(surfaceHandler_->getStatus(), SurfaceHandler::Status::Unregistered);
|
|
662
|
+
EXPECT_NE(scheduler_->getDelegate(), nullptr);
|
|
663
|
+
|
|
664
|
+
// (c) Drain the rendering-update queue. The pending lambda was NOT
|
|
665
|
+
// affected by the surface unregister — it still runs and still calls the
|
|
666
|
+
// (still-alive) delegate.
|
|
667
|
+
runOneEventLoopTick();
|
|
668
|
+
EXPECT_EQ(delegate_->shouldRenderTransactionsCount(), 1);
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
} // namespace facebook::react
|