Commit Graph

12270 Commits

Author SHA1 Message Date
Phillip Pan b6b247b874 move host:didInitializeRuntime: to public api
Summary:
Changelog: [Internal]

it appears that having some access to jsi in userland will be necessary for framework developers, so i'm moving this API to the public header.

bypass-github-export-checks

Reviewed By: mdvacca

Differential Revision: D46385184

fbshipit-source-id: 7261c0a8ba8c8c9302f65d440a3a3fb2782c0666
2023-06-05 21:31:29 -07:00
David Vacca 80134f7211 Revert changes on ReactHostDelegate (#37712)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37712

This diff is reverting a change on ReactHostDelegate (D45662329) that caused MobileConfig to not being properly initialize in fb4a.

bypass-github-export-checks

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D46468413

fbshipit-source-id: 4013ba1b5bdfa50e4cf500bb1524e92303826d90
2023-06-05 20:48:09 -07:00
Phillip Pan 7b763cd3db clean up comments and imports in RCTHost header
Summary:
Changelog: [Internal]

now that we've wrapped up the first iteration of the venice stable apis, let's clean up old comments and reorganize things to prepare this header for documentation.

bypass-github-export-checks

Reviewed By: mdvacca

Differential Revision: D46334662

fbshipit-source-id: 68d6d2e41d7f7c5b1c69f3bb72482c418e771f72
2023-06-05 19:48:29 -07:00
tarunrajput 5062553c62 Add enterKeyHint in TextInput type declaration (#37624)
Summary:
Resolves: https://github.com/facebook/react-native/issues/37622

Related:
https://github.com/facebook/react-native/pull/34482
https://reactnative.dev/docs/textinput#enterkeyhint

## Changelog:

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[Internal][Added]: Add enterKeyHint in TextInput type declaration

Pull Request resolved: https://github.com/facebook/react-native/pull/37624

Reviewed By: cortinico, NickGerleman

Differential Revision: D46292040

Pulled By: lunaleaps

fbshipit-source-id: a037b7f8dd0d60880dcf1aec64749546fa54a95d
2023-06-05 13:08:05 -07:00
Phillip Pan 46d14ceab2 delete RCTHostCreationHelpers (#37703)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37703

Changelog: [Internal]

i did too good of a job refactoring that these functions don't abstract any arguments away anymore, so let's just delete it

Reviewed By: javache

Differential Revision: D46303713

fbshipit-source-id: 7e0508a7296ebc3d5c62cf0824071bd2ef041193
2023-06-05 12:31:19 -07:00
Phillip Pan e0a1a18d4b introduce RCTContextContainerHandling (#37702)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37702

Changelog: [Internal]

the context container is a DI object in our internal infra. the delegate method `createContextContainer` is used to pass down internal implementations that may be used in our infra, notably the `ReactNativeConfig`. this API used to be required for the app delegate to implement.

in this change, i introduce a protocol, `RCTContextContainerHandling`, where we shift the burden of creating the DI container to our internal infra where userland can now optionally add dependencies to this.

this also removes more C++ boilerplate for the bridgeless setup.

Reviewed By: sammy-SC

Differential Revision: D46245433

fbshipit-source-id: 552a9ab0b6a178bab592743863694ff886b152f8
2023-06-05 12:31:19 -07:00
Phillip Pan 2861dd2b1e remove bindingsInstallFunc argument from bridgeless api (#37604)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37604

Changelog: [Internal]

this isn't needed anymore, so we can delete it and remove it from our public api

Reviewed By: javache

Differential Revision: D46215054

fbshipit-source-id: 97bc7821aeea47223a4b10684efe750ff1899fa2
2023-06-05 12:31:19 -07:00
Phillip Pan 50fd76ab04 introduce internal delegate callback for jsi runtime initialization (#37605)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37605

Changelog: [Internal]

in this stack, i remove the `bindingsInstallFunc` argument from `RCTHost`'s public API.

the bindingsInstallFunc is a lambda that provides a runtime parameter, which the consumer can "install bindings" to. we have our specific use case for this internally, but there's no need to expose this.

in this change, i introduce a delegate callback path that notifies an internal delegate that the react runtime has been created.

Reviewed By: javache

Differential Revision: D46215051

fbshipit-source-id: 732d6949064b0948b5cf883dc3c0ab494c2ecd94
2023-06-05 12:31:19 -07:00
Siddarth Kumar e73c00f576 Add getProperties to Parsers and update usages (#37633)
Summary:
[Codegen 138] This PR introduces `getProperties` to Parser base class and implements the function in Typescript and Flow Parsers.
This PR also gets rid of `getProperties` from :
- `packages/react-native-codegen/src/parsers/typescript/components/componentsUtils.js`
- `packages/react-native-codegen/src/parsers/flow/components/componentsUtils.js`
and updates the usages with `getProperties` from the respective parser objects as requested on https://github.com/facebook/react-native/issues/34872

## Changelog:

[Internal] [Changed] - Add getProperties  to Parsers base class and update usages.

Pull Request resolved: https://github.com/facebook/react-native/pull/37633

Test Plan:
Run yarn jest react-native-codegen and ensure CI is green

## Screenshot of tests passing locally:

![Screenshot 2023-05-31 at 4 38 41 PM](https://github.com/facebook/react-native/assets/64726664/dd660369-eabd-4c2e-a440-a41ed6f9d47a)

Reviewed By: cipolleschi

Differential Revision: D46322882

Pulled By: rshest

fbshipit-source-id: 5506ce5ff395946ea8c1258b152716fea0142b95
2023-06-05 11:48:04 -07:00
Rubén Norte 9c11b81630 Add some additional Systrace markers in Fabric (#37675)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37675

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D46393554

fbshipit-source-id: 905097c82c96c7f627f1999f53b509ba0f434dd5
2023-06-05 08:53:54 -07:00
ahmadao2214 52154e54a2 Create emitInt32Prop function (#37663)
Summary:
Create a function emitInt32Prop(name: string, optional: boolean) in parser-primitives.js. Factor out the code from [Flow](https://github.com/facebook/react-native/blob/d8ced6f8953cd896471983714e722caf50783960/packages/react-native-codegen/src/parsers/flow/components/events.js#L53-L59) and [TypeScript](https://github.com/facebook/react-native/blob/d8ced6f8953cd896471983714e722caf50783960/packages/react-native-codegen/src/parsers/typescript/components/events.js#L63-L69) into that function. Use that function in the original call site.

## Changelog:
[INTERNAL][ADDED] - emitInt32Prop in parser-primitves

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests

Pull Request resolved: https://github.com/facebook/react-native/pull/37663

Test Plan: `yarn jest packages/react-native-codegen`

Reviewed By: cipolleschi

Differential Revision: D46437495

Pulled By: rshest

fbshipit-source-id: cebe3958c2ad9c4ab9a6c087fee4317b5e57bc58
2023-06-05 07:48:22 -07:00
shubham0142 34c19232d3 refactor(codegen): extract getCommandProperties to parsers-common (#37666)
Summary:
part of codegen issue https://github.com/facebook/react-native/issues/34872

> Extract the buildCommandProperties function ([Flow](https://github.com/facebook/react-native/blob/d8ced6f8953cd896471983714e722caf50783960/packages/react-native-codegen/src/parsers/flow/components/index.js#L76-L80), [TypeScript](https://github.com/facebook/react-native/blob/d8ced6f8953cd896471983714e722caf50783960/packages/react-native-codegen/src/parsers/typescript/components/index.js#L64-L113)) from the index.js's files to the parsers-commons.js file.

## Changelog:

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->

[Internal][Added]: Extract getCommandProperties to parsers-common

Pull Request resolved: https://github.com/facebook/react-native/pull/37666

Test Plan: yarn test react-native-codegen

Reviewed By: cipolleschi

Differential Revision: D46437431

Pulled By: rshest

fbshipit-source-id: 578b94b9d9fec90ac91fa2a56c707abc46b05b99
2023-06-05 05:11:19 -07:00
Blake Friedman 41d5f4bce2 Prevent DEBUG React Native builds idling out (#37681)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37681

User who run their applications using `npx react-native ios` have the application going into the
background if there is inactivity on the device. This is common for users developing on device (why touch
the device if you're tweaking background colours, etc...).

If the application is build with Xcode directly, this is already managed.  This change prevents the idle
timer from running in DEBUG builds.

## Changelog:
[iOS][Fixed] - Debug builds from cli disable idle to stop application going into background

Reviewed By: cipolleschi

Differential Revision: D46427401

fbshipit-source-id: 45969cd506a1b76bde3be81d27808bf0e792a817
2023-06-05 03:00:32 -07:00
Nicola Corti 7a1229ea0f Backport Hermes release fix on main (#37685)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37685

I'm backporting this comming `60a452b4853dc5651c465867344904dd6fc86703`
from the release branch of 0.72-stable to main which fixes this issue
in the Android NDK:
https://github.com/android/ndk/issues/1740#issuecomment-1198438260

Changelog:
[Internal] [Changed] - Backport Hermes release fix on `main`

Reviewed By: mdvacca

Differential Revision: D46398346

fbshipit-source-id: 593ca9523cb223e7c2d9fe6cccc1abb3ed331203
2023-06-05 02:18:38 -07:00
Nick Gerleman 2d07d5f160 Native ARIA Roles: iOS Paper + Fabric (#37309)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37309

### Stack

ARIA roles in React Native are implemented on top of accessibilityRole. This is lossy because there are many more ARIA roles than accessibilityRole. This is especially true for RN on desktop where accessibilityRole was designed around accessibility APIs only available on mobile.

This series of changes aims to change this implementation to instead pass the ARIA role to native, alongside any existing accessibilityRole. This gives the platform more control in exactly how to map an ARIA role to native behavior.

As an example, this would allow mapping any ARIA role to AutomationControlType on Windows without needing to fork to add new options to accessibilityRole.

It also allows greater implementation flexibility for other platforms down the line, but for now, iOS and Android behave the same as before (though with their implementation living in native).

### Diff

This enables the `role` prop in iOS. ARIA role strings become convertible to `UIAccessibilityTrait`, which is the sink of most of the roles. We keep a list of traits derived from `role` vs `accessibilityRole` on the view, then inval and apply the result any time the prop for either is set.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D45432530

fbshipit-source-id: ced5be06e319c0b967d7511293e14e05147e5759
2023-06-04 03:48:45 -07:00
Daniel Leong d54f486fe6 Fix: a11y crash when an accessible link is ellipsized away (#37050)
Summary:
If an accessible link is ellipsized out of being rendered, the AccessibilityDelegate will still attempt to populate an accessibility node for it; doing so results in an invalid request to a TextLayout API, however, causing a crash. This crash occurs as soon as the element is rendered, so long as a Screen Reader (or app using similar a11y APIs) is enabled. This change uses a technique similar to those existing to make the node "blank" in such cases, so Talkback can filter it out—and, more importantly, not crash.

## Changelog:

[Android] [Fixed] - Fix links hidden via ellipsis crashing screen readers

Pull Request resolved: https://github.com/facebook/react-native/pull/37050

Test Plan:
- Added a block to the "Accessibility Android APIs" page in the rn-tester app. Without the changes to `ReactAccessibilityDelegate`, this component crashes the app; with the changes, the component renders without problem.
- You can also see the crash "in the wild" using [this Expo Snack](https://snack.expo.dev/dhleong/2d1407) that I put together when trying to isolate this issue.

Reviewed By: rshest

Differential Revision: D46206673

Pulled By: NickGerleman

fbshipit-source-id: 0eb3e735202ee6be5f931bbb4bb92c24e7458ea6
2023-06-04 00:03:01 -07:00
Sam Zhou e25c6632a2 Fix bad type definitions related to utility types (wave 2)
Summary:
This diff fixes more bad type definitions that are previously hidden but will be exposed in the upcoming Flow 0.208.0

Changelog: [Internal]

Reviewed By: panagosg7

Differential Revision: D46382788

fbshipit-source-id: 50337ce5bc0f07ac5916a2d4b75eabf5e8e2e427
2023-06-01 23:17:12 -07:00
Sam Zhou 0191d16712 Fix bad utility type definitions (#37662)
Reviewed By: panagosg7

Differential Revision: D46364595

fbshipit-source-id: 5dcd484cd292d5b83b0b114675ec3c8059aefe6b
2023-06-01 14:41:00 -07:00
Samuel Susla dc54334c59 Create separate pod for React-debug (#37657)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37657

changelog: [internal]

Make React-debug into its own pod to align BUCK and cocoapods.

This is needed to reland RuntimeScheduler in the old architecture on iOS.

Reviewed By: rickhanlonii

Differential Revision: D46357876

fbshipit-source-id: 035aaaee8b4b106f873b4b30c8cb424867be066a
2023-06-01 11:45:57 -07:00
Riccardo Cipolleschi b50874cad4 Remove missing dependencies from React-Fabric (#37652)
Summary:
When reverting the runtimescheduler fix, we forgot to remove some lines from the React-Fabric dependencies. This broke pod install and we have a red ci since then.

bypass-github-export-checks

## Changelog:

[iOS][Fixed] - fix React-Fabric dependencies

Pull Request resolved: https://github.com/facebook/react-native/pull/37652

Test Plan: CircleCI is green

Reviewed By: cipolleschi

Differential Revision: D46349504

Pulled By: sammy-SC

fbshipit-source-id: 8fc1bca7838a913adba702033d06dd02b93c31f9
2023-06-01 04:53:03 -07:00
Nicola Corti b66ab2c154 Configure JDK Toolchain to 11 for all the 3rd party libraries. (#37575)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37575

This fixes the behavior reported in https://github.com/reactwg/react-native-releases/discussions/54#discussioncomment-5984629
by forcing all the libraries to compile with JDK 11.

This prevents build issues when on Gradle 8 and Kotlin 1.8

Changelog:
[Internal] [Changed] - Configure JDK Toolchain to 11 for all the 3rd party libraries

Reviewed By: cipolleschi

Differential Revision: D46190989

fbshipit-source-id: c88974d24efc2c35b01f28d41af0d0515d63d765
2023-06-01 03:24:45 -07:00
Nicola Corti ddb8aeadbb Enable mock-maker-inline for Android JVM tests (#37646)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37646

I'm re-enabling a test that got disabled due to us not using mock-maker-inline in OSS. I'm also adding `mock-maker-inline` for OSS so it will be easier to convert tests to Kotlin as classes in Kotlin are final by default.

Changelog:
[Internal] [Changed] - Enable mock-maker-inline for Android JVM tests

Reviewed By: NickGerleman

Differential Revision: D46222913

fbshipit-source-id: b7da0616994888c2800c193a1bb8e233d2c18288
2023-05-31 23:23:17 -07:00
Ramanpreet Nara 462c648b58 Interop: Create gating for the Bridge proxy
Summary:
The TurboModule interop layer on iOS will ship with a Bridge proxy.

The Bridge proxy is an object (see D46084318) that will try to simulate the Bridge's APIs, whenever possible, by delegating to Bridgeless abstractions.

## Changes
**Fact:** All FBiOS modules work with/without the bridge.

So, let's break down the Interop layer test group (i.e: interop on) into two groups:
- interop on, bridge proxy off
- interop on, bridge proxy on

## Benefits
This will speed up the production test, by allowing us to:
1. Isolate Interop issues to the bridge proxy faster.
2. Stabilize the TurboModule interop layer faster.

NOTE: This flag is temporary, and should be removed long-term: The TurboModule interop layer should ship with the bridge proxy enabled by default.

Changelog: [Internal]

Reviewed By: philIip

Differential Revision: D46088752

fbshipit-source-id: 1e161d49382635a44194166645c1a5d56d37b4de
2023-05-31 16:13:05 -07:00
Ramanpreet Nara 197ed43697 Export moduleIsInitialized from RCTModuleRegistry
Summary:
## Context
Product code can query the Bridge, or the TurboModuleManager, to see whether a native module has been initialized or not. But, this API doesn't exist in RCTModuleRegistry.

## Changes
This diff exports moduleIsInitialized: from RCTModuleRegistry. That way, RCTBridgeProxy (introduce in D46088752) can more easily implement the moduleIsInitialized: API.

Changelog:
[iOS][Added] - Introduce RCTModuleRegistry moduleIsInitialized:

Reviewed By: cortinico

Differential Revision: D46166548

fbshipit-source-id: c9954273e511083276aeb911dd58719cf4a11f10
2023-05-31 16:13:05 -07:00
Ramanpreet Nara e2d512a1ee Delete bridge.loadAndExecuteSplitBundleURL
Summary:
Changelog:
[iOS][Removed] - Delete bridge.loadAndExecuteSplitBundleURL

Reviewed By: cortinico

Differential Revision: D46166549

fbshipit-source-id: a0854e4abcdd11542629f5f6bbce89c45e30e9cd
2023-05-31 16:13:05 -07:00
Nicola Corti 70f3a264e2 Remove unnecessary dependency on aapt2-linux (#37643)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37643

We needed this change for offline mirrors which we don't use anymore, so we can remove
this extra dependency (it will make the build a little faster also which is never bad).

Changelog:
[Internal] [Changed] - Remove unnecessary dependency on aapt2-linux

Reviewed By: mdvacca

Differential Revision: D46318725

fbshipit-source-id: a86b43fff6a11844acff88791af0578d79d7fdbf
2023-05-31 15:20:57 -07:00
Ramanpreet Nara d0fed3adb6 Remove noexcept from UIManager methods that invoke JavaScript callbacks
Summary:
As far as I'm aware, there's no way to know/guarantee whether a JavaScript callback can throw an exception or not.

So, all UIManager methods that synchronously invoke JavaScript callbacks cannot use noexcept.

If they do use noexcept, and the JavaScript callback (i.e: product code) throws an exception, the app will crash.

Changelog: [Internal]

Created from CodeHub with https://fburl.com/edit-in-codehub

Reviewed By: javache

Differential Revision: D46122985

fbshipit-source-id: 2f4356c7dbab1b3a5e0549f58e73f6de1b626ce9
2023-05-31 13:02:12 -07:00
Samuel Susla b55f55198c Fix header imports (#37625)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37625

changelog: [internal]

- Add explicit <memory> import
- change include to import.

Reviewed By: FieryRobot

Differential Revision: D46284890

fbshipit-source-id: 8eb656c28f58295468b964e86f59b91ca562b570
2023-05-31 06:58:15 -07:00
Chetan Ambekar 0e83c53122 Revert D46194126: Prepare bolts.Task to be safe to be usde from Kotlin
Differential Revision:
D46194126

Original commit changeset: 765af7683fa6

Original Phabricator Diff: D46194126

fbshipit-source-id: e35e25dada9006c654cf02f269f3c1c6fc5c6b13
2023-05-30 17:35:54 -07:00
David Vacca 730ca35405 Prepare bolts.Task to be safe to be usde from Kotlin
Summary:
In this diff I analyzed bolts.Task class to ensure it's ready to be used from kotlin.
I won't convert bolts.Task to kotlin, but this is necessary to be able to convert its callsites (ReactHost) to kotlin

This is a 'continuation' of the previous diff, I splitted in 2 because Task is a very large class and it's worth analyzing separately.

bypass-github-export-checks

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D46194126

fbshipit-source-id: 765af7683fa62814747c7d8516d311cffabac3c1
2023-05-30 13:13:36 -07:00
David Vacca dfb42a3946 Prepare bolts to be safe to use it from Kotlin
Summary:
In this diff I analyzed bolts library to ensure it's ready to be used from kotlin.
I won't convert bolts to kotlin, but this is necessary to be able to convert its callsites (ReactHost) to kotlin

bypass-github-export-checks

changelog: [internal] internal

Reviewed By: fkgozali

Differential Revision: D46194127

fbshipit-source-id: 609e356230b1c87fe26571b811d23430d0168276
2023-05-30 13:13:36 -07:00
Samuel Susla 88eef42cab Back out "Enable RuntimeScheduler in old architecture" (#37623)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37623

Original commit changeset: 5f18cbe60e6c

Original Phabricator Diff: D46078324

changelog: [internal]

Resolves S344737

Reviewed By: FieryRobot

Differential Revision: D46281951

fbshipit-source-id: dae1f7afe549686e3d5bbacf786c088bbfa49cca
2023-05-30 13:00:07 -07:00
Kevin VanGelder 02a73ca856 Fix missing atomic import (#37621)
Summary:
Native error: `Declaration of 'atomic_bool' must be imported from module 'std.atomic' before it is required.`

## Changelog:

[IOS] [FIXED] - Add missing `atomic` import

Pull Request resolved: https://github.com/facebook/react-native/pull/37621

Test Plan: This build error appears to only occur when other build errors occur, but it supersedes the other build errors, increasing the difficulty of debugging the root build error(s).

Reviewed By: NickGerleman

Differential Revision: D46284208

Pulled By: sammy-SC

fbshipit-source-id: b36cb3a9166b1e7cef0121a2e635a191bd7c3a5e
2023-05-30 12:13:12 -07:00
Dmitry Rykun 7f22db8ea0 Introduce __nativeComponentRegistry__getNativeViewConfig (#37522)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37522

This diff adds cross-platform Cxx binding helper and iOS specific implementation of `__nativeComponentRegistry__getNativeViewConfig` to JS runtime. This function provides native view config for a native component in bridgeless mode.

Changelog:
[Internal] - Introduce `__nativeComponentRegistry__getNativeViewConfig` in iOS.

Reviewed By: javache

Differential Revision: D43538804

fbshipit-source-id: 0aeca40c1c2a625eca5d60e466eb24df30453ba7
2023-05-30 08:04:23 -07:00
Pieter De Baets da3dcd7326 Use SurfaceRegistry globals whenever available (#37410)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37410

Incremental adoption of new bridgeless API's, where they are semantically equivalent to the old one.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D45736529

fbshipit-source-id: e41f6840e7c329f6051530e53773fae760584842
2023-05-30 07:20:25 -07:00
Douglas Lowder d3e35992e9 Fix Fabric issue with React-Core pod when Xcode project has multiple targets (#37581)
Summary:
In Xcode projects with multiple targets, and in particular when targets are for different platforms (e.g. iOS and macOS), Cocoapods may add a suffix to a Pod name like `React-Core`.

When this happens, the code in `new_architecture.rb` (which was looking for a pod with exact name `React-Core`) would not add the preprocessor definitions for Fabric as expected.

This change fixes this issue. Fixes https://github.com/facebook/react-native/issues/37102 .

## Changelog:

[iOS] [Fixed] - Fix Fabric issue with React-Core pod when Xcode project has multiple targets

Pull Request resolved: https://github.com/facebook/react-native/pull/37581

Test Plan: Tested that this change fixes this issue which occurs 100% of the time in React Native TV projects.

Reviewed By: dmytrorykun

Differential Revision: D46264704

Pulled By: cipolleschi

fbshipit-source-id: 8dfc8e342b5a110ef1f028636e01e5c5f2b6e2f0
2023-05-30 06:44:49 -07:00
Samuel Susla 5eadd935e8 Attempt at fixing crash when blurring image on iOS (#37614)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37614

changelog: [internal]

We do not control what `vImageBoxConvolve_ARGB8888` returns, it may return 0. If it does return 0, we will allocate memory chunk of size 0. Yes, malloc will let you do that. Well, it depends on the implementation, but according to the spec it is legal. The only requirement is to by able to call free on that without crash.

If `vImageBoxConvolve_ARGB8888` does return 0 and we allocate memory of size 0. Call to `vImageBoxConvolve_ARGB8888` with tempBuffer of size 0 will lead to a crash.

[The documentation](https://developer.apple.com/documentation/accelerate/1515945-vimageboxconvolve_argb8888#discussion) for `vImageBoxConvolve_ARGB8888` and tempBuffer states:
> To determine the minimum size for the temporary buffer, the first time you call this function pass the kvImageGetTempBufferSize flag. Pass the same values for all other parameters that you intend to use in for the second call. The function returns the required minimum size, which **should be a positive value**. (A negative returned value indicates an error.) The kvImageGetTempBufferSize flag prevents the function from performing any processing other than to determine the minimum buffer size.

I think the keyword word there is "should be a positive value". 0 is not a positive value.

Reviewed By: javache, yungsters

Differential Revision: D46263204

fbshipit-source-id: baa8fac5b3be6fb5bed02800cd725cc4cf43485a
2023-05-30 04:12:38 -07:00
Riccardo Cipolleschi 680cbe757b Make RNTester use RCTAppDelegate (#37572)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37572

Currently, RNTester was using a completely custom AppDelegate and not leveraging the RCTAppDelegate we use in the OSS. This resulted in a misalignment between the two setups and duplicated work to test stuff internally furst and then in the OSS, with some more time needed to understand why one setup was working and the other wasn't.

With this change, we are aligning the two, bringing RNTester closer to the OSS setup. There are still small differences, but we can iterate over those.

## Changelog:
[iOS][Changed] - Make RNTester use RCTAppDelegate

Reviewed By: cortinico

Differential Revision: D46182888

fbshipit-source-id: 7c55b06de1a317b1f2d4ad0d18a390dc4d3356a4
2023-05-30 04:10:17 -07:00
Intl Scheduler 551bbbc234 translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907889493757
Sandcastle Job Instance ID: 36028797978627335
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D46270525

fbshipit-source-id: 26beec108aa03c970338fdc4561af24798813acf
2023-05-29 21:34:22 -07:00
Riccardo Cipolleschi 9084ee133a Revert D45904748: Move LayoutMetrics and LayoutPrimitives from core to graphics folder
Differential Revision:
D45904748

Original commit changeset: a4e666d7c739

Original Phabricator Diff: D45904748

fbshipit-source-id: c2da28836cb51966854c81d4e380a2abeb742cda
2023-05-29 07:27:36 -07:00
Samuel Susla ce3ade82bf Move LayoutMetrics and LayoutPrimitives from core to graphics folder (#37609)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37609

changelog: [internal]

Moving LayoutMetrics and LayoutPrimitives from core to graphics module.
This is to enable different implementation for different platforms.

Reviewed By: rubennorte

Differential Revision: D45904748

fbshipit-source-id: a4e666d7c7390e87abdb09235f96655b63f451f9
2023-05-29 06:52:31 -07:00
Samuel Susla db121c845d Make dependency on mapbuffer:jni and mapbuffer:mapbuffer explicit (#37598)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37598

changelog: [internal]

This diff does three things:
- Makes dependency on `mapbuffer:jni` explicit for modules that were accessing it through `react:utils` module.
- `renderer:core` now depends on `mapbuffer:mapbuffer`.
- Moved `PropsMapBuffer` inside of `Props`.

Reviewed By: rubennorte

Differential Revision: D46223390

fbshipit-source-id: 2dca1a034f991afd3e9531c4c7fcc7b99239dabe
2023-05-28 14:42:42 -07:00
Rubén Norte 3afb5b8241 Remove incorrect const constraint from UIManager commit hooks (#37588)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37588

The `const` modified in UIManagerCommitHook prevents us from mutating the commit hook itself (which doesn't make any sense as commit hooks might want to update their internal state as response to new commits).

This removes the constraint so we can remove the `const` modifier from `MutationObserverManager` in a future diff.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D46149085

fbshipit-source-id: d3bf24f1125ad3878ca36a6ceb9dd509c3cf7b1e
2023-05-26 09:06:00 -07:00
Rubén Norte 32bd60f863 Implement mount hooks in UIManager (#37460)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37460

## Context

This implements the concept of mount hooks in UIManager which, similarly to commit hooks, receive a notification when a root shadow tree has been mounted in the host platform.

This is meant to be used internally in React Native, not by user-land libraries or products.

This will be used to implement `IntersectionObserver` in a following diff.

Changelog: [Internal]

Reviewed By: javache, sammy-SC

Differential Revision: D45866244

fbshipit-source-id: 4df48bf237a5cc89e37709faaeaa0ce582c0d0cc
2023-05-26 09:06:00 -07:00
Rubén Norte f30716323a Add flag to do granular state updates in scroll views in iOS (#37461)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37461

This adds a feature flag to dispatch state updates for scroll position in every scroll position update in iOS, as opposed to only at the beginning, end and other specific moments.

This is necessary to implement features like `IntersectionObserver`, but we want to test the performance impact of this change before rolling it out completely.

Changelog: [internal]

Reviewed By: javache

Differential Revision: D45916675

fbshipit-source-id: 00a2b1c5ea03e45141bb2d81e4e5fb8c198de1ff
2023-05-26 09:06:00 -07:00
Rubén Norte 0abd065b15 Create new option in LayoutInspectingPolicy to apply parent clipping to layout metrics (#37435)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37435

We're implementing the `IntersectionObserver` API in React Native. That API reports the bounding rectangle of the root node and the target node (which we already implement in React Native via `LayoutableShadowNode::computeRelativeLayoutMetrics`), plus the intersection rectangle.

This adds a new option in `LayoutInspectingPolicy` so we can get the layout metrics when clipping is applied (e.g.: if a parent node has `overflow: hidden` and we get the layout metrics of one of its children that extends beyond the limits of the parent, it would report only the rectangle that's visible for that node).

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D45866245

fbshipit-source-id: ed3bfc2021e6b7819b8efea6fa3a81ed9d0bb181
2023-05-26 09:06:00 -07:00
Rubén Norte 64416d9503 Fix LayoutableShadowNode::computeRelativeLayoutMetrics when using scale on a parent node (#37436)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37436

When testing the reported intersections from `IntersectionObserver` I realized that the reported rectangles were incorrect when using `scale` in a parent. This is because `scale` transforms use the center of the node as the origin, and when applying the transform on its children we were using the center of the children instead of the center of the same node.

This fixes that issue by using the center of the parent when applying the transform on the children.

Changelog: [General][Fixed] - Fixed computation of layout via `ref.measureRelative` and `ref.measureInWindow` for nodes with scale/rotate transforms in their parents.

Reviewed By: sammy-SC

Differential Revision: D45866231

fbshipit-source-id: 68928cbaca28c21155657d276cf8ddd2129d9668
2023-05-26 09:06:00 -07:00
Rubén Norte 912bca05b1 Create version of LayoutableShadowNode::computeRelativeLayoutMetrics that works with an ancestor list (#37434)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37434

We'll be using this method in IntersectionObserver to avoid having to get the list of ancestor multiple times when calling computeRelativeLayoutMetrics for the target bounding rect and for the intersection rect.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D45866232

fbshipit-source-id: 0efa165b780e819bf19028fecd22b303ca6f52ad
2023-05-26 09:06:00 -07:00
Riccardo Cipolleschi 18a13381d2 Fix Hermes-Xcode integration (#37595)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37595

Following D46097200, the integration between Hermes and Xcode got broken as Hermes is creating the framework in a different folder.

This is a patch to unblock people internally to build RNTester with Hermes and to run it on a simulator.
We should find a way to parametrize this, passing the target from Xcode to this script, after checking where Hermes is built

## Changelog:
[internal] - Fix RNTester-Hermes-Xcode integration for testing locally on simulators

Reviewed By: dmytrorykun

Differential Revision: D46224915

fbshipit-source-id: 9d682983c7990f8efa7c07f62191782dce317cbb
2023-05-26 08:29:43 -07:00
Pieter De Baets ff849fd175 Revert changes to getters in Binding (#37589)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37589

In D44221018, I changed this to return a ref to the smart pointer, and even made it a raw pointer in D45948987, but this is not thread-safe: the uninstallFabricUIManager happens on a different thread from the accesses to these pointers on the JS thread, so we actually need to use the shared pointer here to be safe.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D46221511

fbshipit-source-id: d8080042d6f1dbf5550a09b77f1090f78ec82455
2023-05-26 06:54:24 -07:00