react-native-tvos 0.77.0-0rc5 → 0.78.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/Animated/animations/Animation.js +22 -1
- package/Libraries/Animated/animations/DecayAnimation.js +1 -0
- package/Libraries/Animated/animations/SpringAnimation.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +1 -0
- package/Libraries/Animated/nodes/AnimatedAddition.js +9 -2
- package/Libraries/Animated/nodes/AnimatedColor.js +4 -1
- package/Libraries/Animated/nodes/AnimatedDiffClamp.js +10 -2
- package/Libraries/Animated/nodes/AnimatedDivision.js +9 -2
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +5 -1
- package/Libraries/Animated/nodes/AnimatedModulo.js +5 -2
- package/Libraries/Animated/nodes/AnimatedMultiplication.js +9 -2
- package/Libraries/Animated/nodes/AnimatedNode.js +25 -46
- package/Libraries/Animated/nodes/AnimatedObject.js +9 -2
- package/Libraries/Animated/nodes/AnimatedProps.js +5 -1
- package/Libraries/Animated/nodes/AnimatedStyle.js +5 -1
- package/Libraries/Animated/nodes/AnimatedSubtraction.js +9 -2
- package/Libraries/Animated/nodes/AnimatedTracking.js +5 -1
- package/Libraries/Animated/nodes/AnimatedTransform.js +5 -1
- package/Libraries/Animated/nodes/AnimatedValue.js +63 -4
- package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
- package/Libraries/Animated/useAnimatedProps.js +14 -56
- package/Libraries/AppDelegate/RCTAppDelegate.h +6 -48
- package/Libraries/AppDelegate/RCTAppDelegate.mm +5 -230
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.h +21 -0
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +123 -0
- package/Libraries/AppDelegate/RCTReactNativeFactory.h +98 -0
- package/Libraries/AppDelegate/RCTReactNativeFactory.mm +266 -0
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +1 -1
- package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +0 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
- package/Libraries/Components/LayoutConformance/LayoutConformance.d.ts +21 -0
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +59 -0
- package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +29 -0
- package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
- package/Libraries/Components/TV/TVFocusGuideView.js +0 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +5 -0
- package/Libraries/Components/TextInput/TextInput.flow.js +6 -0
- package/Libraries/Components/TextInput/TextInput.js +6 -0
- package/Libraries/Components/View/ViewPropTypes.d.ts +8 -7
- package/Libraries/Components/View/ViewPropTypes.js +0 -9
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/setUpBatchedBridge.js +1 -16
- package/Libraries/Core/setUpDeveloperTools.js +2 -3
- package/Libraries/EventEmitter/RCTEventEmitter.js +2 -6
- package/Libraries/Image/AssetSourceResolver.js +11 -0
- package/Libraries/Image/RCTImageLoader.mm +9 -1
- package/Libraries/Image/RCTImageView.mm +3 -3
- package/Libraries/Inspector/BorderBox.js +26 -14
- package/Libraries/Inspector/BoxInspector.js +60 -42
- package/Libraries/Inspector/ElementBox.js +55 -48
- package/Libraries/Inspector/StyleInspector.js +36 -30
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
- package/Libraries/Lists/FlatList.d.ts +1 -1
- package/Libraries/Modal/Modal.js +2 -0
- package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +1 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +0 -2
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +0 -2
- package/Libraries/Network/RCTNetworking.android.js +24 -16
- package/Libraries/Network/RCTNetworking.ios.js +1 -46
- package/Libraries/Network/RCTNetworking.js.flow +1 -46
- package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +57 -0
- package/Libraries/Pressability/Pressability.js +2 -2
- package/Libraries/ReactNative/UIManagerProperties.js +3 -1
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +15829 -26461
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3907 -2560
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4399 -2878
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +16103 -26908
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +4034 -2695
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4535 -3045
- package/Libraries/Renderer/shims/ReactNativeTypes.js +5 -6
- package/Libraries/StyleSheet/processTransform.js +6 -0
- package/Libraries/Text/Text/NSTextStorage+FontScaling.m +9 -0
- package/Libraries/Text/Text.d.ts +6 -1
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +2 -0
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +26 -0
- package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +2 -0
- package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +26 -1
- package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +2 -0
- package/Libraries/Text/TextInput/Singleline/RCTUITextField.h +1 -0
- package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +26 -0
- package/Libraries/Text/TextProps.js +2 -2
- package/Libraries/Utilities/BackHandler.android.js +5 -4
- package/Libraries/Utilities/BackHandler.ios.js +3 -4
- package/Libraries/Utilities/HMRClient.js +0 -28
- package/Libraries/Utilities/HMRClientProdShim.js +0 -1
- package/README-core.md +2 -2
- package/React/Base/RCTConvert.mm +3 -1
- package/React/Base/RCTVersion.m +2 -2
- package/React/CoreModules/RCTDevSettings.h +0 -1
- package/React/CoreModules/RCTDeviceInfo.mm +4 -0
- package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +3 -5
- package/React/DevSupport/RCTInspectorDevServerHelper.mm +1 -6
- package/React/DevSupport/RCTPausedInDebuggerOverlayController.mm +3 -5
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +0 -24
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +0 -28
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +90 -57
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +241 -104
- package/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryContentView.mm +0 -5
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +39 -10
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +3 -3
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +107 -34
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +5 -0
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +1 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +12 -4
- package/React/Fabric/Mounting/RCTComponentViewFactory.mm +3 -0
- package/React/Fabric/Mounting/RCTMountingManager.mm +6 -9
- package/React/Fabric/RCTScheduler.mm +1 -1
- package/React/I18n/strings/da.lproj/fbt_language_pack.bin +0 -0
- package/React/Modules/RCTUIManager.mm +1 -2
- package/React/React-RCTFBReactNativeSpec.podspec +1 -0
- package/React/React-RCTFabric.podspec +3 -2
- package/React/Tests/Text/RCTParagraphComponentViewTests.mm +12 -12
- package/React/Views/RCTComponentData.mm +1 -5
- package/React/Views/RCTLayout.m +3 -0
- package/React/Views/RCTShadowView.h +3 -3
- package/React/Views/RCTShadowView.m +52 -20
- package/React/Views/RCTTVView.m +5 -2
- package/React/Views/RCTView.m +6 -2
- package/React/Views/RCTViewManager.m +0 -7
- package/React/Views/ScrollView/RCTScrollView.m +109 -45
- package/React-Core.podspec +1 -1
- package/ReactAndroid/api/ReactAndroid.api +123 -227
- package/ReactAndroid/build.gradle.kts +8 -13
- package/ReactAndroid/cmake-utils/ReactNative-application.cmake +13 -3
- package/ReactAndroid/cmake-utils/default-app-setup/OnLoad.cpp +2 -0
- package/ReactAndroid/external-artifacts/build.gradle.kts +5 -5
- package/ReactAndroid/gradle.properties +3 -3
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesMemoryDumper.java → HermesMemoryDumper.kt} +5 -5
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesSamplingProfiler.java → HermesSamplingProfiler.kt} +8 -10
- package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +12 -59
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +12 -1
- package/ReactAndroid/src/main/java/com/facebook/react/{ReactPackageLogger.java → ReactPackageLogger.kt} +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.kt +5 -3
- package/ReactAndroid/src/main/java/com/facebook/react/common/network/OkHttpCallUtil.kt +4 -8
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHost.kt +11 -5
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHostDelegate.kt +0 -7
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +11 -23
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +3 -30
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/HMRClient.java +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +21 -26
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +1 -14
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.java +2 -11
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +88 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +39 -8
- package/ReactAndroid/src/main/java/com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +21 -21
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +36 -36
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +10 -10
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +40 -40
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.kt +55 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.kt +185 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/{HeadlessJsTaskEventListener.java → HeadlessJsTaskEventListener.kt} +5 -6
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.kt +20 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/LinearCountingRetryPolicy.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/NoRetryPolicy.kt +7 -8
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +8 -5
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.kt +11 -17
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.kt +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.kt +107 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +18 -19
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.kt +48 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +397 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostDelegate.kt +0 -10
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt +4 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +13 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.kt +15 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ComponentNameResolver.java → ComponentNameResolver.kt} +4 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/GuardedFrameCallback.kt +5 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +0 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.kt +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.kt +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{RootView.java → RootView.kt} +11 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewManager.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{UIBlock.java → UIBlock.kt} +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +2 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +25 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt +1 -1
- package/{Libraries/AppDelegate/RCTAppDelegate+Protected.h → ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerWithGeneratedInterface.kt} +3 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +12 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundDrawable.kt +46 -80
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BorderDrawable.kt +5 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CSSBackgroundDrawable.java +5 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/{BatchEventDispatchedListener.java → BatchEventDispatchedListener.kt} +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.kt +46 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.kt +40 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +2 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.kt +19 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.kt +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +241 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.kt +193 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt +44 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.kt +130 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.kt +77 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +196 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +16 -17
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +56 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarContainerView.kt +11 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/{FpsListener.java → FpsListener.kt} +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.kt +136 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt +152 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchShadowNode.kt +52 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +1 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +16 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +8 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +1 -9
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +111 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +91 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +14 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.java +22 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +43 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +86 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.java +44 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.java +7 -1
- package/ReactAndroid/src/main/jni/CMakeLists.txt +5 -6
- package/ReactAndroid/src/main/jni/first-party/yogajni/CMakeLists.txt +6 -1
- package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +96 -11
- package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +9 -0
- package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +1 -0
- package/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +0 -3
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +3 -0
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +41 -25
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +0 -2
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +63 -91
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +1 -7
- package/ReactAndroid/src/main/jni/react/fabric/MountItem.cpp +9 -9
- package/ReactAndroid/src/main/jni/react/fabric/MountItem.h +6 -10
- package/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp +0 -2
- package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +4 -0
- package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +1 -0
- package/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +49 -49
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +11 -11
- package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/OnLoad.cpp +1 -4
- package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/jni/JSLogging.cpp +4 -9
- package/ReactAndroid/src/main/jni/react/jni/JSLogging.h +0 -4
- package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.cpp +3 -4
- package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.cpp +3 -4
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp +6 -0
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h +1 -0
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp +6 -0
- package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h +1 -0
- package/ReactAndroid/src/main/jni/react/jscexecutor/OnLoad.cpp +3 -7
- package/ReactAndroid/src/main/jni/react/mapbuffer/CMakeLists.txt +0 -2
- package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/reactperflogger/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp +2 -8
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.h +2 -8
- package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.cpp +18 -17
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.h +1 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/turbomodule/CMakeLists.txt +0 -2
- package/ReactAndroid/src/main/jni/react/uimanager/CMakeLists.txt +0 -1
- package/ReactAndroid/src/main/res/views/view/values/ids.xml +5 -0
- package/ReactCommon/React-Fabric.podspec +8 -0
- package/ReactCommon/React-FabricComponents.podspec +2 -2
- package/ReactCommon/React-FabricImage.podspec +4 -1
- package/ReactCommon/cxxreact/CxxNativeModule.cpp +3 -3
- package/ReactCommon/cxxreact/Instance.cpp +6 -6
- package/ReactCommon/cxxreact/JSBigString.cpp +1 -1
- package/ReactCommon/cxxreact/JSExecutor.cpp +4 -2
- package/ReactCommon/cxxreact/ModuleRegistry.cpp +6 -6
- package/ReactCommon/cxxreact/NativeToJsBridge.cpp +3 -3
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/cxxreact/SystraceSection.h +8 -141
- package/ReactCommon/cxxreact/TraceSection.h +181 -0
- package/ReactCommon/cxxreact/tests/jsbigstring.cpp +19 -0
- package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +2 -2
- package/ReactCommon/jsc/JSCRuntime.cpp +0 -2
- package/ReactCommon/jsc/React-jsc.podspec +1 -1
- package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +27 -19
- package/ReactCommon/jserrorhandler/JsErrorHandler.h +5 -3
- package/ReactCommon/jserrorhandler/StackTraceParser.cpp +16 -16
- package/ReactCommon/jserrorhandler/StackTraceParser.h +1 -1
- package/ReactCommon/jserrorhandler/tests/StackTraceParserTest.cpp +252 -246
- package/ReactCommon/jsi/jsi/CMakeLists.txt +0 -3
- package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -1
- package/ReactCommon/jsi/jsi/JSIDynamic.h +1 -1
- package/ReactCommon/jsi/jsi/decorator.h +61 -0
- package/ReactCommon/jsi/jsi/jsi-inl.h +4 -0
- package/ReactCommon/jsi/jsi/jsi.cpp +37 -0
- package/ReactCommon/jsi/jsi/jsi.h +81 -0
- package/ReactCommon/jsi/jsi/test/testlib.cpp +88 -0
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +9 -9
- package/ReactCommon/jsinspector-modern/CMakeLists.txt +1 -1
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +3 -7
- package/ReactCommon/jsinspector-modern/HostTarget.cpp +22 -1
- package/ReactCommon/jsinspector-modern/HostTarget.h +1 -1
- package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +19 -4
- package/ReactCommon/jsinspector-modern/InspectorFlags.h +14 -0
- package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +21 -10
- package/ReactCommon/jsinspector-modern/TracingAgent.cpp +12 -11
- package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +2 -16
- package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +14 -14
- package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.h +7 -13
- package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestGenericEngineAdapter.cpp +1 -1
- package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestHermesEngineAdapter.cpp +1 -3
- package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +3 -3
- package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +1 -1
- package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +26 -0
- package/ReactCommon/jsinspector-modern/tracing/CdpTracing.h +21 -0
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +187 -0
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +126 -0
- package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +56 -0
- package/ReactCommon/react/featureflags/CMakeLists.txt +3 -0
- package/ReactCommon/react/featureflags/React-featureflags.podspec +7 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +15 -15
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +18 -18
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +88 -88
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +9 -9
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +17 -17
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +454 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +5 -5
- package/ReactCommon/react/featureflags/tests/ReactNativeFeatureFlagsDynamicProviderTest.cpp +78 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +2 -3
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +3 -3
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +13 -4
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +1 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +19 -11
- package/ReactCommon/react/nativemodule/cputime/CPUTime.h +55 -0
- package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.cpp +35 -0
- package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.h +28 -0
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +18 -18
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +8 -8
- package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.cpp +5 -8
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -3
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +22 -43
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.h +0 -15
- package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +22 -2
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +9 -4
- package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
- package/ReactCommon/react/renderer/animations/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +1 -1
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +25 -19
- package/ReactCommon/react/renderer/animations/primitives.h +1 -1
- package/ReactCommon/react/renderer/animations/utils.h +3 -4
- package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +31 -9
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +85 -29
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +2 -0
- package/ReactCommon/react/renderer/attributedstring/conversions.h +5 -0
- package/ReactCommon/react/renderer/componentregistry/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp +4 -1
- package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +2 -0
- package/ReactCommon/react/renderer/components/image/ImageEventEmitter.cpp +2 -2
- package/ReactCommon/react/renderer/components/image/ImageProps.cpp +5 -5
- package/ReactCommon/react/renderer/components/image/ImageProps.h +1 -1
- package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +38 -10
- package/ReactCommon/react/renderer/components/image/ImageShadowNode.h +1 -1
- package/ReactCommon/react/renderer/components/image/ImageState.cpp +2 -3
- package/ReactCommon/react/renderer/components/image/ImageState.h +9 -6
- package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -4
- package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.h +7 -0
- package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +2 -2
- package/ReactCommon/react/renderer/components/scrollview/CMakeLists.txt +2 -2
- package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.cpp +33 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.h +17 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.cpp +3 -2
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +2 -1
- package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -4
- package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchShadowNode.h +7 -0
- package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +12 -0
- package/ReactCommon/react/renderer/{uimanager/bindingUtils.h → components/text/ParagraphComponentDescriptor.cpp} +2 -8
- package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +10 -7
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp +23 -0
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +8 -1
- package/ReactCommon/react/renderer/components/textinput/BaseTextInputShadowNode.h +243 -0
- package/ReactCommon/react/renderer/components/textinput/TextInputState.cpp +71 -0
- package/ReactCommon/react/renderer/components/textinput/{platform/ios/react/renderer/components/iostextinput/TextInputState.h → TextInputState.h} +27 -7
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +6 -13
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h +0 -2
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +145 -144
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +27 -29
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputComponentDescriptor.h +4 -5
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp +0 -26
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.h +0 -6
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.cpp +0 -147
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.h +5 -57
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +60 -70
- package/ReactCommon/react/renderer/components/view/BaseViewProps.h +3 -3
- package/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h +18 -0
- package/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h +36 -0
- package/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h +28 -0
- package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +4 -0
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +0 -1
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +21 -22
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +3 -1
- package/ReactCommon/react/renderer/components/view/conversions.h +117 -43
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +3 -2
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +3 -1
- package/ReactCommon/react/renderer/components/view/primitives.h +1 -1
- package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +12 -12
- package/ReactCommon/react/renderer/core/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/core/ComponentDescriptor.cpp +4 -2
- package/ReactCommon/react/renderer/core/ComponentDescriptor.h +4 -2
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +17 -2
- package/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp +26 -0
- package/ReactCommon/react/renderer/core/DynamicPropsUtilities.h +4 -0
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +3 -3
- package/ReactCommon/react/renderer/core/Props.cpp +16 -5
- package/ReactCommon/react/renderer/core/Props.h +11 -4
- package/ReactCommon/react/renderer/core/RawProps.cpp +30 -5
- package/ReactCommon/react/renderer/core/RawProps.h +10 -1
- package/ReactCommon/react/renderer/core/RawPropsParser.cpp +7 -2
- package/ReactCommon/react/renderer/core/RawPropsParser.h +7 -1
- package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +1 -0
- package/ReactCommon/react/renderer/core/RawValue.h +315 -22
- package/ReactCommon/react/renderer/core/tests/DynamicPropsUtilitiesTest.cpp +95 -4
- package/ReactCommon/react/renderer/debug/debugStringConvertibleUtils.h +19 -4
- package/ReactCommon/react/renderer/graphics/CMakeLists.txt +7 -1
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +7 -5
- package/ReactCommon/react/renderer/graphics/Transform.cpp +11 -2
- package/ReactCommon/react/renderer/graphics/Transform.h +2 -1
- package/ReactCommon/react/renderer/imagemanager/CMakeLists.txt +4 -2
- package/ReactCommon/react/renderer/imagemanager/ImageManager.h +7 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +43 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +36 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +43 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +94 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +101 -0
- package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageManager.cpp +9 -1
- package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageRequestParams.h +30 -0
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageManager.mm +9 -0
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageRequestParams.h +30 -0
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImageManager.mm +2 -2
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +187 -152
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +4 -5
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +10 -16
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -12
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +44 -14
- package/ReactCommon/react/renderer/mounting/stubs/StubViewTree.cpp +8 -4
- package/ReactCommon/react/renderer/mounting/stubs/stubs.cpp +1 -1
- package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +116 -193
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +0 -3
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.cpp +7 -4
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.h +2 -1
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp +7 -8
- package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.cpp +6 -6
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +3 -1
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +2 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +11 -11
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +14 -15
- package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +4 -3
- package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +6 -37
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +0 -3
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +15 -11
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +1 -0
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +56 -2
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +23 -3
- package/ReactCommon/react/renderer/textlayoutmanager/CMakeLists.txt +1 -2
- package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutManager.cpp +26 -0
- package/ReactCommon/react/renderer/textlayoutmanager/{platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h → TextLayoutManager.h} +18 -17
- package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +2 -3
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +77 -89
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +6 -10
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +11 -5
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +23 -1
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +11 -32
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +9 -23
- package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.cpp +88 -0
- package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h +50 -0
- package/ReactCommon/react/renderer/uimanager/CMakeLists.txt +0 -1
- package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h +3 -40
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +23 -18
- package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -31
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +0 -4
- package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +10 -10
- package/ReactCommon/react/runtime/CMakeLists.txt +0 -1
- package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -2
- package/ReactCommon/react/runtime/ReactInstance.cpp +43 -57
- package/ReactCommon/react/runtime/TimerManager.cpp +4 -4
- package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +5 -1
- package/ReactCommon/react/runtime/hermes/HermesInstance.h +0 -2
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +2 -6
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +6 -15
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +3 -1
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +15 -15
- package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +5 -4
- package/ReactCommon/react/test_utils/shadowTreeGeneration.h +0 -3
- package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.cpp +33 -17
- package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h +8 -2
- package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.cpp → ReactPerfettoLogger.cpp} +25 -24
- package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.h → ReactPerfettoLogger.h} +9 -9
- package/ReactCommon/yoga/yoga/YGEnums.cpp +6 -0
- package/ReactCommon/yoga/yoga/YGEnums.h +4 -1
- package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +124 -24
- package/ReactCommon/yoga/yoga/YGNodeStyle.h +22 -1
- package/ReactCommon/yoga/yoga/YGValue.h +3 -0
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +6 -6
- package/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp +2 -2
- package/ReactCommon/yoga/yoga/algorithm/FlexLine.h +1 -1
- package/ReactCommon/yoga/yoga/algorithm/PixelGrid.cpp +9 -6
- package/ReactCommon/yoga/yoga/enums/Unit.h +4 -1
- package/ReactCommon/yoga/yoga/node/Node.cpp +8 -8
- package/ReactCommon/yoga/yoga/node/Node.h +5 -5
- package/ReactCommon/yoga/yoga/style/Style.h +14 -12
- package/ReactCommon/yoga/yoga/style/StyleLength.h +14 -7
- package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +139 -0
- package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
- package/ReactCommon/yoga/yoga/style/StyleValuePool.h +60 -3
- package/gradle/libs.versions.toml +6 -2
- package/index.js +5 -0
- package/package.json +17 -15
- package/react-native.config.js +6 -0
- package/scripts/cocoapods/codegen_utils.rb +4 -4
- package/scripts/cocoapods/new_architecture.rb +3 -3
- package/scripts/cocoapods/utils.rb +4 -3
- package/scripts/codegen/generate-artifacts-executor.js +8 -4
- package/scripts/generate-codegen-artifacts.js +6 -1
- package/scripts/react-native-xcode.sh +1 -1
- package/scripts/react_native_pods.rb +3 -3
- package/scripts/xcode/ccache-clang++.sh +1 -1
- package/scripts/xcode/ccache-clang.sh +1 -1
- package/sdks/.hermesversion +1 -1
- package/sdks/hermes-engine/hermes-utils.rb +2 -2
- package/sdks/hermes-engine/utils/build-hermes-xcode.sh +1 -1
- package/sdks/hermesc/linux64-bin/hermesc +0 -0
- package/sdks/hermesc/osx-bin/hermes +0 -0
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
- package/src/private/animated/NativeAnimatedValidation.js +1 -1
- package/src/private/featureflags/README.md +5 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +32 -26
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -5
- package/src/private/renderer/errorhandling/ErrorHandlers.js +12 -55
- package/src/private/specs/modules/{NativeJSCSamplingProfiler.js → NativeCPUTime.js} +7 -2
- package/src/private/specs/modules/NativeFantom.js +37 -0
- package/src/private/utilities/ensureInstance.js +21 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +49 -6
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +17 -9
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +11 -11
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +1 -1
- package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -1
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
- package/src/private/webapis/performance/Performance.js +0 -12
- package/src/private/webapis/performance/specs/NativePerformance.js +0 -11
- package/types/index.d.ts +1 -0
- package/types/public/ReactNativeTVTypes.d.ts +49 -51
- package/Libraries/HeapCapture/HeapCapture.js +0 -29
- package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -13
- package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -13
- package/Libraries/Performance/SamplingProfiler.js +0 -39
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +0 -334
- package/React/Inspector/RCTInspectorPackagerConnection.m +0 -325
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedResultAsyncTask.java +0 -50
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java +0 -314
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSCHeapCapture.java +0 -76
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/EmptyReactNativeConfig.kt +0 -36
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/GuardedFrameCallback.kt +0 -33
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/ReactNativeConfig.kt +0 -54
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +0 -83
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.java +0 -121
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +0 -214
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.java +0 -22
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/XmlFormat.kt +0 -143
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.java +0 -17
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +0 -124
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.java +0 -58
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java +0 -422
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +0 -98
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +0 -25
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.java +0 -20
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +0 -45
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.java +0 -37
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.java +0 -19
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.java +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java +0 -257
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.java +0 -210
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +0 -43
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +0 -39
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +0 -165
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.java +0 -85
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +0 -204
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.java +0 -161
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +0 -232
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java +0 -70
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/LegacyLineHeightSpan.kt +0 -69
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.java +0 -114
- package/ReactAndroid/src/main/jni/first-party/fb/CMakeLists.txt +0 -31
- package/ReactAndroid/src/main/jni/first-party/fb/assert.cpp +0 -39
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ALog.h +0 -82
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h +0 -31
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Countable.h +0 -45
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Doxyfile +0 -18
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h +0 -93
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ProgramLocation.h +0 -58
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/RefPtr.h +0 -266
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/StaticInitialized.h +0 -37
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ThreadLocal.h +0 -112
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/assert.h +0 -43
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/log.h +0 -350
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/noncopyable.h +0 -20
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/nonmovable.h +0 -20
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/visibility.h +0 -10
- package/ReactAndroid/src/main/jni/first-party/fb/log.cpp +0 -102
- package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.cpp +0 -47
- package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.h +0 -38
- package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.cpp +0 -41
- package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.h +0 -35
- package/ReactAndroid/src/main/jni/react/perftests/OnLoad.cpp +0 -243
- package/ReactAndroid/src/main/jni/third-party/jsc/CMakeLists.txt +0 -15
- package/ReactCommon/React-nativeconfig.podspec +0 -36
- package/ReactCommon/cxxreact/tests/main.cpp +0 -15
- package/ReactCommon/react/config/CMakeLists.txt +0 -20
- package/ReactCommon/react/config/ReactNativeConfig.cpp +0 -28
- package/ReactCommon/react/config/ReactNativeConfig.h +0 -42
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.cpp +0 -95
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.h +0 -80
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputState.cpp +0 -10
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +0 -78
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h +0 -69
- package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp +0 -123
- package/ReactCommon/react/renderer/uimanager/bindingUtils.cpp +0 -79
- package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +0 -413
- package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +0 -181
- package/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js +0 -327
- /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewComponentDescriptor.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewComponentDescriptor.h} +0 -0
- /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.cpp → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.cpp} +0 -0
- /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.h} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<3cd802bdd1d383ea0668e43319d53b3f>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -31,9 +31,7 @@ public interface ReactNativeFeatureFlagsProvider {
|
|
|
31
31
|
|
|
32
32
|
@DoNotStrip public fun disableMountItemReorderingAndroid(): Boolean
|
|
33
33
|
|
|
34
|
-
@DoNotStrip public fun
|
|
35
|
-
|
|
36
|
-
@DoNotStrip public fun enableAndroidLineHeightCentering(): Boolean
|
|
34
|
+
@DoNotStrip public fun enableAccumulatedUpdatesInRawPropsAndroid(): Boolean
|
|
37
35
|
|
|
38
36
|
@DoNotStrip public fun enableBridgelessArchitecture(): Boolean
|
|
39
37
|
|
|
@@ -49,14 +47,14 @@ public interface ReactNativeFeatureFlagsProvider {
|
|
|
49
47
|
|
|
50
48
|
@DoNotStrip public fun enableFabricRenderer(): Boolean
|
|
51
49
|
|
|
52
|
-
@DoNotStrip public fun enableFabricRendererExclusively(): Boolean
|
|
53
|
-
|
|
54
50
|
@DoNotStrip public fun enableFixForViewCommandRace(): Boolean
|
|
55
51
|
|
|
56
52
|
@DoNotStrip public fun enableGranularShadowTreeStateReconciliation(): Boolean
|
|
57
53
|
|
|
58
54
|
@DoNotStrip public fun enableIOSViewClipToPaddingBox(): Boolean
|
|
59
55
|
|
|
56
|
+
@DoNotStrip public fun enableImagePrefetchingAndroid(): Boolean
|
|
57
|
+
|
|
60
58
|
@DoNotStrip public fun enableLayoutAnimationsOnAndroid(): Boolean
|
|
61
59
|
|
|
62
60
|
@DoNotStrip public fun enableLayoutAnimationsOnIOS(): Boolean
|
|
@@ -79,12 +77,12 @@ public interface ReactNativeFeatureFlagsProvider {
|
|
|
79
77
|
|
|
80
78
|
@DoNotStrip public fun excludeYogaFromRawProps(): Boolean
|
|
81
79
|
|
|
80
|
+
@DoNotStrip public fun fixDifferentiatorEmittingUpdatesWithWrongParentTag(): Boolean
|
|
81
|
+
|
|
82
82
|
@DoNotStrip public fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
|
|
83
83
|
|
|
84
84
|
@DoNotStrip public fun fixMountingCoordinatorReportedPendingTransactionsOnAndroid(): Boolean
|
|
85
85
|
|
|
86
|
-
@DoNotStrip public fun fuseboxEnabledDebug(): Boolean
|
|
87
|
-
|
|
88
86
|
@DoNotStrip public fun fuseboxEnabledRelease(): Boolean
|
|
89
87
|
|
|
90
88
|
@DoNotStrip public fun initEagerTurboModulesOnNativeModulesQueueAndroid(): Boolean
|
|
@@ -107,6 +105,8 @@ public interface ReactNativeFeatureFlagsProvider {
|
|
|
107
105
|
|
|
108
106
|
@DoNotStrip public fun useOptimizedEventBatchingOnAndroid(): Boolean
|
|
109
107
|
|
|
108
|
+
@DoNotStrip public fun useRawPropsJsiValue(): Boolean
|
|
109
|
+
|
|
110
110
|
@DoNotStrip public fun useRuntimeShadowNodeReferenceUpdate(): Boolean
|
|
111
111
|
|
|
112
112
|
@DoNotStrip public fun useTurboModuleInterop(): Boolean
|
package/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt
CHANGED
|
@@ -31,12 +31,12 @@ public class InteropEventEmitter(private val reactContext: ReactContext) : RCTEv
|
|
|
31
31
|
private var eventDispatcherOverride: EventDispatcher? = null
|
|
32
32
|
|
|
33
33
|
@Deprecated("Deprecated in Java")
|
|
34
|
-
override fun receiveEvent(
|
|
34
|
+
override fun receiveEvent(targetTag: Int, eventName: String, params: WritableMap?) {
|
|
35
35
|
val dispatcher: EventDispatcher? =
|
|
36
36
|
eventDispatcherOverride
|
|
37
|
-
?: UIManagerHelper.getEventDispatcherForReactTag(reactContext,
|
|
37
|
+
?: UIManagerHelper.getEventDispatcherForReactTag(reactContext, targetTag)
|
|
38
38
|
val surfaceId = UIManagerHelper.getSurfaceId(reactContext)
|
|
39
|
-
dispatcher?.dispatchEvent(InteropEvent(eventName,
|
|
39
|
+
dispatcher?.dispatchEvent(InteropEvent(eventName, params, surfaceId, targetTag))
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
@Deprecated("Deprecated in Java")
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
package com.facebook.react.jstasks
|
|
9
|
+
|
|
10
|
+
import com.facebook.react.bridge.WritableMap
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Class that holds the various parameters needed to start a JS task.
|
|
14
|
+
*
|
|
15
|
+
* @property taskKey the key for the JS task to execute. This is the same key that you call
|
|
16
|
+
* `AppRegistry.registerTask` with in JS.
|
|
17
|
+
* @property data a map of parameters passed to the JS task executor.
|
|
18
|
+
* @property timeout the amount of time (in ms) after which the React instance should be terminated
|
|
19
|
+
* regardless of whether the task has completed or not. This is meant as a safeguard against
|
|
20
|
+
* accidentally keeping the device awake for long periods of time because JS crashed or some
|
|
21
|
+
* request timed out. A value of 0 means no timeout (should only be used for long-running tasks
|
|
22
|
+
* such as music playback).
|
|
23
|
+
* @property allowedInForeground whether to allow this task to run while the app is in the
|
|
24
|
+
* foreground (i.e. there is a host in resumed mode for the current ReactContext). Only set this
|
|
25
|
+
* to true if you really need it. Note that tasks run in the same JS thread as UI code, so doing
|
|
26
|
+
* expensive operations would degrade user experience.
|
|
27
|
+
* @property allowedInForeground whether to allow this task to run while the app is in the
|
|
28
|
+
* foreground (i.e. there is a host in resumed mode for the current ReactContext). Only set this
|
|
29
|
+
* to true if you really need it. Note that tasks run in the same JS thread as UI code, so doing
|
|
30
|
+
* expensive operations would degrade user experience.
|
|
31
|
+
* @property retryPolicy the number of times & delays the task should be retried on error.
|
|
32
|
+
*/
|
|
33
|
+
public class HeadlessJsTaskConfig
|
|
34
|
+
@JvmOverloads
|
|
35
|
+
constructor(
|
|
36
|
+
public val taskKey: String,
|
|
37
|
+
public val data: WritableMap,
|
|
38
|
+
public val timeout: Long = 0,
|
|
39
|
+
public val isAllowedInForeground: Boolean = false,
|
|
40
|
+
public val retryPolicy: HeadlessJsTaskRetryPolicy? = NoRetryPolicy.INSTANCE
|
|
41
|
+
) {
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Copy constructor to create a HeadlessJsTaskConfig from an existing one. Equivalent to calling
|
|
45
|
+
* [HeadlessJsTaskConfig] with `false` for `allowedInBackground`.
|
|
46
|
+
*/
|
|
47
|
+
public constructor(
|
|
48
|
+
source: HeadlessJsTaskConfig
|
|
49
|
+
) : this(
|
|
50
|
+
source.taskKey,
|
|
51
|
+
source.data.copy(),
|
|
52
|
+
source.timeout,
|
|
53
|
+
source.isAllowedInForeground,
|
|
54
|
+
source.retryPolicy?.copy())
|
|
55
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
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
|
+
package com.facebook.react.jstasks
|
|
9
|
+
|
|
10
|
+
import android.util.SparseArray
|
|
11
|
+
import com.facebook.infer.annotation.Assertions
|
|
12
|
+
import com.facebook.react.bridge.ReactContext
|
|
13
|
+
import com.facebook.react.bridge.ReactSoftExceptionLogger.logSoftException
|
|
14
|
+
import com.facebook.react.bridge.UiThreadUtil
|
|
15
|
+
import com.facebook.react.common.LifecycleState
|
|
16
|
+
import com.facebook.react.modules.appregistry.AppRegistry
|
|
17
|
+
import java.lang.ref.WeakReference
|
|
18
|
+
import java.util.WeakHashMap
|
|
19
|
+
import java.util.concurrent.ConcurrentHashMap
|
|
20
|
+
import java.util.concurrent.CopyOnWriteArraySet
|
|
21
|
+
import java.util.concurrent.atomic.AtomicInteger
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Helper class for dealing with JS tasks. Handles per-ReactContext active task tracking, starting /
|
|
25
|
+
* stopping tasks and notifying listeners.
|
|
26
|
+
*/
|
|
27
|
+
public class HeadlessJsTaskContext private constructor(reactContext: ReactContext) {
|
|
28
|
+
private val reactContext = WeakReference(reactContext)
|
|
29
|
+
private val headlessJsTaskEventListeners: MutableSet<HeadlessJsTaskEventListener> =
|
|
30
|
+
CopyOnWriteArraySet()
|
|
31
|
+
private val lastTaskId = AtomicInteger(0)
|
|
32
|
+
private val activeTasks: MutableSet<Int> = CopyOnWriteArraySet()
|
|
33
|
+
private val activeTaskConfigs: MutableMap<Int, HeadlessJsTaskConfig> = ConcurrentHashMap()
|
|
34
|
+
private val taskTimeouts = SparseArray<Runnable>()
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Register a task lifecycle event listener. Synchronized in order to prevent race conditions with
|
|
38
|
+
* finishTask, as the listener will be invoked for already running tasks.
|
|
39
|
+
*/
|
|
40
|
+
@Synchronized
|
|
41
|
+
public fun addTaskEventListener(listener: HeadlessJsTaskEventListener) {
|
|
42
|
+
headlessJsTaskEventListeners.add(listener)
|
|
43
|
+
for (activeTaskId in activeTasks) {
|
|
44
|
+
listener.onHeadlessJsTaskStart(activeTaskId)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Unregister a task lifecycle event listener. */
|
|
49
|
+
public fun removeTaskEventListener(listener: HeadlessJsTaskEventListener) {
|
|
50
|
+
headlessJsTaskEventListeners.remove(listener)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Get whether there are any running JS tasks at the moment. */
|
|
54
|
+
public fun hasActiveTasks(): Boolean = activeTasks.isNotEmpty()
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Start a JS task. Handles invoking [AppRegistry.startHeadlessTask] and notifying listeners.
|
|
58
|
+
*
|
|
59
|
+
* @return a unique id representing this task instance.
|
|
60
|
+
*/
|
|
61
|
+
@Synchronized
|
|
62
|
+
public fun startTask(taskConfig: HeadlessJsTaskConfig): Int =
|
|
63
|
+
lastTaskId.incrementAndGet().apply { startTask(taskConfig, this) }
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Start a JS task the provided task id. Handles invoking [AppRegistry.startHeadlessTask] and
|
|
67
|
+
* notifying listeners.
|
|
68
|
+
*/
|
|
69
|
+
@Synchronized
|
|
70
|
+
private fun startTask(taskConfig: HeadlessJsTaskConfig, taskId: Int) {
|
|
71
|
+
UiThreadUtil.assertOnUiThread()
|
|
72
|
+
val reactContext =
|
|
73
|
+
Assertions.assertNotNull(
|
|
74
|
+
reactContext.get(),
|
|
75
|
+
"Tried to start a task on a react context that has already been destroyed")
|
|
76
|
+
check(
|
|
77
|
+
!(reactContext.lifecycleState == LifecycleState.RESUMED &&
|
|
78
|
+
!taskConfig.isAllowedInForeground)) {
|
|
79
|
+
"Tried to start task ${taskConfig.taskKey} while in foreground, but this is not allowed."
|
|
80
|
+
}
|
|
81
|
+
activeTasks.add(taskId)
|
|
82
|
+
activeTaskConfigs[taskId] = HeadlessJsTaskConfig(taskConfig)
|
|
83
|
+
if (reactContext.hasActiveReactInstance()) {
|
|
84
|
+
reactContext
|
|
85
|
+
.getJSModule(AppRegistry::class.java)
|
|
86
|
+
.startHeadlessTask(taskId, taskConfig.taskKey, taskConfig.data)
|
|
87
|
+
} else {
|
|
88
|
+
logSoftException(
|
|
89
|
+
"HeadlessJsTaskContext",
|
|
90
|
+
RuntimeException("Cannot start headless task, CatalystInstance not available"))
|
|
91
|
+
}
|
|
92
|
+
if (taskConfig.timeout > 0) {
|
|
93
|
+
scheduleTaskTimeout(taskId, taskConfig.timeout)
|
|
94
|
+
}
|
|
95
|
+
for (listener in headlessJsTaskEventListeners) {
|
|
96
|
+
listener.onHeadlessJsTaskStart(taskId)
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Retry a running JS task with a delay. Invokes [ ][HeadlessJsTaskContext.startTask] as long as
|
|
102
|
+
* the process does not get killed.
|
|
103
|
+
*
|
|
104
|
+
* @return true if a retry attempt has been posted.
|
|
105
|
+
*/
|
|
106
|
+
@Synchronized
|
|
107
|
+
public fun retryTask(taskId: Int): Boolean {
|
|
108
|
+
val sourceTaskConfig = activeTaskConfigs[taskId]
|
|
109
|
+
checkNotNull(sourceTaskConfig) { "Tried to retrieve non-existent task config with id $taskId." }
|
|
110
|
+
|
|
111
|
+
val retryPolicy = sourceTaskConfig.retryPolicy
|
|
112
|
+
if (retryPolicy == null || !retryPolicy.canRetry()) {
|
|
113
|
+
return false
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
removeTimeout(taskId)
|
|
117
|
+
val taskConfig =
|
|
118
|
+
HeadlessJsTaskConfig(
|
|
119
|
+
sourceTaskConfig.taskKey,
|
|
120
|
+
sourceTaskConfig.data,
|
|
121
|
+
sourceTaskConfig.timeout,
|
|
122
|
+
sourceTaskConfig.isAllowedInForeground,
|
|
123
|
+
retryPolicy.update())
|
|
124
|
+
|
|
125
|
+
val retryAttempt = Runnable { startTask(taskConfig, taskId) }
|
|
126
|
+
|
|
127
|
+
UiThreadUtil.runOnUiThread(retryAttempt, retryPolicy.delay.toLong())
|
|
128
|
+
return true
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Finish a JS task. Doesn't actually stop the task on the JS side, only removes it from the list
|
|
133
|
+
* of active tasks and notifies listeners.
|
|
134
|
+
*
|
|
135
|
+
* @param taskId the unique id returned by [.startTask].
|
|
136
|
+
*/
|
|
137
|
+
@Synchronized
|
|
138
|
+
public fun finishTask(taskId: Int) {
|
|
139
|
+
val removed = activeTasks.remove(taskId)
|
|
140
|
+
activeTaskConfigs.remove(taskId)
|
|
141
|
+
removeTimeout(taskId)
|
|
142
|
+
if (removed) {
|
|
143
|
+
UiThreadUtil.runOnUiThread {
|
|
144
|
+
for (listener in headlessJsTaskEventListeners) {
|
|
145
|
+
listener.onHeadlessJsTaskFinish(taskId)
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
private fun removeTimeout(taskId: Int) {
|
|
152
|
+
val runnable = taskTimeouts[taskId]
|
|
153
|
+
if (runnable != null) {
|
|
154
|
+
UiThreadUtil.removeOnUiThread(runnable)
|
|
155
|
+
taskTimeouts.remove(taskId)
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Check if a given task is currently running. A task is stopped if either [finishTask] is called
|
|
161
|
+
* or it times out.
|
|
162
|
+
*/
|
|
163
|
+
@Synchronized public fun isTaskRunning(taskId: Int): Boolean = taskId in activeTasks
|
|
164
|
+
|
|
165
|
+
private fun scheduleTaskTimeout(taskId: Int, timeout: Long) {
|
|
166
|
+
val runnable = Runnable { finishTask(taskId) }
|
|
167
|
+
taskTimeouts.append(taskId, runnable)
|
|
168
|
+
UiThreadUtil.runOnUiThread(runnable, timeout)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
public companion object {
|
|
172
|
+
private val INSTANCES = WeakHashMap<ReactContext, HeadlessJsTaskContext>()
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Get the task helper instance for a particular [ReactContext]. There is only one instance per
|
|
176
|
+
* context.
|
|
177
|
+
*
|
|
178
|
+
* **Note:** do not hold long-lived references to the object returned here, as that will cause
|
|
179
|
+
* memory leaks. Instead, just call this method on-demand.
|
|
180
|
+
*/
|
|
181
|
+
@JvmStatic
|
|
182
|
+
public fun getInstance(context: ReactContext): HeadlessJsTaskContext =
|
|
183
|
+
INSTANCES.getOrPut(context) { HeadlessJsTaskContext(context) }
|
|
184
|
+
}
|
|
185
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
package com.facebook.react.jstasks
|
|
8
|
+
package com.facebook.react.jstasks
|
|
9
9
|
|
|
10
10
|
/** Listener interface for task lifecycle events. */
|
|
11
11
|
public interface HeadlessJsTaskEventListener {
|
|
@@ -15,12 +15,11 @@ public interface HeadlessJsTaskEventListener {
|
|
|
15
15
|
*
|
|
16
16
|
* @param taskId the unique identifier of this task instance
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
public fun onHeadlessJsTaskStart(taskId: Int)
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* Called when a JS task finishes (i.e. when
|
|
22
|
-
*
|
|
23
|
-
* thread.
|
|
21
|
+
* Called when a JS task finishes (i.e. when [HeadlessJsTaskSupportModule.notifyTaskFinished] is
|
|
22
|
+
* called, or when it times out), on the UI thread.
|
|
24
23
|
*/
|
|
25
|
-
|
|
24
|
+
public fun onHeadlessJsTaskFinish(taskId: Int)
|
|
26
25
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
package com.facebook.react.jstasks
|
|
9
|
+
|
|
10
|
+
import javax.annotation.CheckReturnValue
|
|
11
|
+
|
|
12
|
+
public interface HeadlessJsTaskRetryPolicy {
|
|
13
|
+
public fun canRetry(): Boolean
|
|
14
|
+
|
|
15
|
+
public val delay: Int
|
|
16
|
+
|
|
17
|
+
@CheckReturnValue public fun update(): HeadlessJsTaskRetryPolicy?
|
|
18
|
+
|
|
19
|
+
public fun copy(): HeadlessJsTaskRetryPolicy?
|
|
20
|
+
}
|
|
@@ -12,11 +12,11 @@ public class LinearCountingRetryPolicy(
|
|
|
12
12
|
private val delayBetweenAttemptsInMs: Int
|
|
13
13
|
) : HeadlessJsTaskRetryPolicy {
|
|
14
14
|
|
|
15
|
-
override
|
|
15
|
+
public override fun canRetry(): Boolean = retryAttempts > 0
|
|
16
16
|
|
|
17
|
-
override
|
|
17
|
+
override val delay: Int = delayBetweenAttemptsInMs
|
|
18
18
|
|
|
19
|
-
override
|
|
19
|
+
public override fun update(): HeadlessJsTaskRetryPolicy {
|
|
20
20
|
val remainingRetryAttempts = retryAttempts - 1
|
|
21
21
|
|
|
22
22
|
return if (remainingRetryAttempts > 0) {
|
|
@@ -26,6 +26,6 @@ public class LinearCountingRetryPolicy(
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
override
|
|
29
|
+
public override fun copy(): HeadlessJsTaskRetryPolicy =
|
|
30
30
|
LinearCountingRetryPolicy(retryAttempts, delayBetweenAttemptsInMs)
|
|
31
31
|
}
|
|
@@ -9,20 +9,19 @@ package com.facebook.react.jstasks
|
|
|
9
9
|
|
|
10
10
|
internal class NoRetryPolicy private constructor() : HeadlessJsTaskRetryPolicy {
|
|
11
11
|
|
|
12
|
-
override
|
|
12
|
+
override fun canRetry(): Boolean = false
|
|
13
13
|
|
|
14
|
-
override
|
|
15
|
-
throw IllegalStateException("Should not retrieve delay as canRetry is: ${canRetry()}")
|
|
16
|
-
}
|
|
14
|
+
override val delay: Int
|
|
15
|
+
get() = throw IllegalStateException("Should not retrieve delay as canRetry is: ${canRetry()}")
|
|
17
16
|
|
|
18
|
-
override
|
|
17
|
+
override fun update(): HeadlessJsTaskRetryPolicy {
|
|
19
18
|
throw IllegalStateException("Should not update as canRetry is: ${canRetry()}")
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
// Class is immutable so no need to copy
|
|
23
|
-
override
|
|
22
|
+
override fun copy(): HeadlessJsTaskRetryPolicy = this
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
@JvmField
|
|
24
|
+
companion object {
|
|
25
|
+
@JvmField val INSTANCE: NoRetryPolicy = NoRetryPolicy()
|
|
27
26
|
}
|
|
28
27
|
}
|
package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt
CHANGED
|
@@ -13,6 +13,7 @@ import androidx.appcompat.app.AppCompatDelegate
|
|
|
13
13
|
import com.facebook.fbreact.specs.NativeAppearanceSpec
|
|
14
14
|
import com.facebook.react.bridge.Arguments
|
|
15
15
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
16
|
+
import com.facebook.react.bridge.UiThreadUtil
|
|
16
17
|
import com.facebook.react.module.annotations.ReactModule
|
|
17
18
|
|
|
18
19
|
/** Module that exposes the user's preferred color scheme. */
|
|
@@ -58,11 +59,13 @@ constructor(
|
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
public override fun setColorScheme(style: String) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
UiThreadUtil.runOnUiThread {
|
|
63
|
+
when (style) {
|
|
64
|
+
"dark" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
|
65
|
+
"light" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
|
|
66
|
+
"unspecified" ->
|
|
67
|
+
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
|
68
|
+
}
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
71
|
|
|
@@ -10,11 +10,10 @@ package com.facebook.react.modules.fresco
|
|
|
10
10
|
import com.facebook.common.logging.FLog
|
|
11
11
|
import com.facebook.drawee.backends.pipeline.DraweeConfig
|
|
12
12
|
import com.facebook.drawee.backends.pipeline.Fresco
|
|
13
|
-
import com.facebook.imagepipeline.backends.okhttp3.OkHttpImagePipelineConfigFactory
|
|
13
|
+
import com.facebook.imagepipeline.backends.okhttp3.OkHttpImagePipelineConfigFactory
|
|
14
14
|
import com.facebook.imagepipeline.core.DownsampleMode
|
|
15
15
|
import com.facebook.imagepipeline.core.ImagePipeline
|
|
16
16
|
import com.facebook.imagepipeline.core.ImagePipelineConfig
|
|
17
|
-
import com.facebook.imagepipeline.decoder.ImageDecoderConfig
|
|
18
17
|
import com.facebook.imagepipeline.listener.RequestListener
|
|
19
18
|
import com.facebook.react.bridge.LifecycleEventListener
|
|
20
19
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
@@ -80,9 +79,6 @@ constructor(
|
|
|
80
79
|
if (!hasBeenInitialized()) {
|
|
81
80
|
val pipelineConfig = config ?: getDefaultConfig(reactContext)
|
|
82
81
|
val draweeConfigBuilder = DraweeConfig.newBuilder()
|
|
83
|
-
if (ReactNativeFeatureFlags.loadVectorDrawablesOnImages()) {
|
|
84
|
-
draweeConfigBuilder.addCustomDrawableFactory(XmlFormat.getDrawableFactory())
|
|
85
|
-
}
|
|
86
82
|
Fresco.initialize(
|
|
87
83
|
reactContext.applicationContext,
|
|
88
84
|
pipelineConfig,
|
|
@@ -158,22 +154,20 @@ constructor(
|
|
|
158
154
|
requestListeners.add(SystraceRequestListener())
|
|
159
155
|
val client = OkHttpClientProvider.createClient()
|
|
160
156
|
|
|
161
|
-
// Add support for XML drawable images
|
|
162
|
-
val decoderConfigBuilder = ImageDecoderConfig.Builder()
|
|
163
|
-
if (ReactNativeFeatureFlags.loadVectorDrawablesOnImages()) {
|
|
164
|
-
XmlFormat.addDecodingCapability(decoderConfigBuilder, context)
|
|
165
|
-
}
|
|
166
|
-
|
|
167
157
|
// make sure to forward cookies for any requests via the okHttpClient
|
|
168
158
|
// so that image requests to endpoints that use cookies still work
|
|
169
159
|
val container = OkHttpCompat.getCookieJarContainer(client)
|
|
170
|
-
val handler = ForwardingCookieHandler(
|
|
160
|
+
val handler = ForwardingCookieHandler()
|
|
171
161
|
container.setCookieJar(JavaNetCookieJar(handler))
|
|
172
|
-
|
|
173
|
-
.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
162
|
+
val builder =
|
|
163
|
+
OkHttpImagePipelineConfigFactory.newBuilder(context.applicationContext, client)
|
|
164
|
+
.setNetworkFetcher(ReactOkHttpNetworkFetcher(client))
|
|
165
|
+
.setDownsampleMode(DownsampleMode.AUTO)
|
|
166
|
+
.setRequestListeners(requestListeners)
|
|
167
|
+
builder
|
|
168
|
+
.experiment()
|
|
169
|
+
.setBinaryXmlEnabled(ReactNativeFeatureFlags.loadVectorDrawablesOnImages())
|
|
170
|
+
return builder
|
|
177
171
|
}
|
|
178
172
|
}
|
|
179
173
|
}
|
package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.kt
CHANGED
|
@@ -60,9 +60,9 @@ internal class ReactOkHttpNetworkFetcher(private val okHttpClient: OkHttpClient)
|
|
|
60
60
|
val headers = OkHttpCompat.getHeadersFromMap(requestHeaders)
|
|
61
61
|
val request =
|
|
62
62
|
Request.Builder()
|
|
63
|
+
.headers(headers)
|
|
63
64
|
.cacheControl(cacheControlBuilder.build())
|
|
64
65
|
.url(uri.toString())
|
|
65
|
-
.headers(headers)
|
|
66
66
|
.get()
|
|
67
67
|
.build()
|
|
68
68
|
fetchWithRequest(fetchState, callback, request)
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
package com.facebook.react.modules.network
|
|
9
|
+
|
|
10
|
+
import okhttp3.CookieJar
|
|
11
|
+
|
|
12
|
+
public interface CookieJarContainer : CookieJar {
|
|
13
|
+
public fun setCookieJar(cookieJar: CookieJar)
|
|
14
|
+
|
|
15
|
+
public fun removeCookieJar()
|
|
16
|
+
}
|
package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.kt
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
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
|
+
package com.facebook.react.modules.network
|
|
9
|
+
|
|
10
|
+
import android.webkit.CookieManager
|
|
11
|
+
import com.facebook.react.bridge.Callback
|
|
12
|
+
import com.facebook.react.bridge.ReactContext
|
|
13
|
+
import java.io.IOException
|
|
14
|
+
import java.net.CookieHandler
|
|
15
|
+
import java.net.URI
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Cookie handler that forwards all cookies to the WebView CookieManager.
|
|
19
|
+
*
|
|
20
|
+
* This class relies on CookieManager to persist cookies to disk so cookies may be lost if the
|
|
21
|
+
* application is terminated before it syncs.
|
|
22
|
+
*/
|
|
23
|
+
public class ForwardingCookieHandler() : CookieHandler() {
|
|
24
|
+
|
|
25
|
+
@Deprecated("Use the default constructor", ReplaceWith("ForwardingCookieHandler()"))
|
|
26
|
+
public constructor(@Suppress("UNUSED_PARAMETER") reactContext: ReactContext) : this() {}
|
|
27
|
+
|
|
28
|
+
@Throws(IOException::class)
|
|
29
|
+
override fun get(uri: URI, headers: Map<String, List<String>>): Map<String, List<String>> {
|
|
30
|
+
val cookies = cookieManager?.getCookie(uri.toString())
|
|
31
|
+
if (cookies.isNullOrEmpty()) {
|
|
32
|
+
return emptyMap()
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return mapOf(COOKIE_HEADER to listOf(cookies))
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@Throws(IOException::class)
|
|
39
|
+
override fun put(uri: URI, headers: Map<String, List<String>>) {
|
|
40
|
+
val url = uri.toString()
|
|
41
|
+
for ((key, value) in headers) {
|
|
42
|
+
if (isCookieHeader(key)) {
|
|
43
|
+
addCookies(url, value)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public fun clearCookies(callback: Callback): Unit {
|
|
49
|
+
cookieManager?.removeAllCookies { value -> callback.invoke(value) }
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public fun destroy(): Unit = Unit
|
|
53
|
+
|
|
54
|
+
public fun addCookies(url: String, cookies: List<String>): Unit {
|
|
55
|
+
for (cookie in cookies) {
|
|
56
|
+
addCookieAsync(url, cookie)
|
|
57
|
+
}
|
|
58
|
+
cookieManager?.flush()
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private fun addCookieAsync(url: String, cookie: String) {
|
|
62
|
+
cookieManager?.setCookie(url, cookie, null)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private var cookieManager: CookieManager? = null
|
|
66
|
+
/**
|
|
67
|
+
* Instantiating CookieManager will load the Chromium task taking a 100ish ms so we do it lazily
|
|
68
|
+
* to make sure it's done on a background thread as needed.
|
|
69
|
+
*/
|
|
70
|
+
get() {
|
|
71
|
+
if (field == null) {
|
|
72
|
+
try {
|
|
73
|
+
field = CookieManager.getInstance()
|
|
74
|
+
} catch (ex: IllegalArgumentException) {
|
|
75
|
+
// https://bugs.chromium.org/p/chromium/issues/detail?id=559720
|
|
76
|
+
return null
|
|
77
|
+
} catch (exception: Exception) {
|
|
78
|
+
// Ideally we would like to catch a `MissingWebViewPackageException` here.
|
|
79
|
+
// That API is private so we can't access it.
|
|
80
|
+
// Historically we used string matching on the error message to understand
|
|
81
|
+
// if the exception was a Missing Webview One.
|
|
82
|
+
// OEMs have been customizing that message making really hard to catch it.
|
|
83
|
+
// Therefore we result to returning null as a default instead of rethrowing
|
|
84
|
+
// the exception as it will result in a app crash at runtime.
|
|
85
|
+
// a) We will return null for all the other unhandled conditions when a webview provider
|
|
86
|
+
// is
|
|
87
|
+
// not found.
|
|
88
|
+
// b) We already have null checks in place for `getCookieManager()` calls.
|
|
89
|
+
// c) We have annotated the method as @Nullable to notify future devs about our return
|
|
90
|
+
// type.
|
|
91
|
+
return null
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return field
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
private companion object {
|
|
99
|
+
private const val VERSION_ZERO_HEADER = "Set-cookie"
|
|
100
|
+
private const val VERSION_ONE_HEADER = "Set-cookie2"
|
|
101
|
+
private const val COOKIE_HEADER = "Cookie"
|
|
102
|
+
|
|
103
|
+
private fun isCookieHeader(name: String): Boolean =
|
|
104
|
+
name.equals(VERSION_ZERO_HEADER, ignoreCase = true) ||
|
|
105
|
+
name.equals(VERSION_ONE_HEADER, ignoreCase = true)
|
|
106
|
+
}
|
|
107
|
+
}
|