Commit Graph
400 Commits
Author SHA1 Message Date
Pieter De Baets fb194788cb Use AsyncCallback in RCTTurboModule (#40792)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/40792

Similarly to D49792717, simplify the careful logic we have with CallbackWrapper and RCTBlockGuard and instead rely on bridging's `AsyncCallback` so safely handle jsi::Function for us.

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D49862756

fbshipit-source-id: 289f2d5ef622f47eb3fccf0cc7a52cc13a83b028
2023-10-11 11:22:28 -07:00
Pieter De Baets 8dd89cee1b Replace RAIICallbackWrapperDestroyer with AsyncCallback (#39952)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39952

AsyncCallback and SyncCallbacks are better primitives for jsi::Function handling. The code is simpler and requires less manual argument passing. See in D49684248 how the API was extended to support more use-cases.

Changelog: [General] Deprecated RAIICallbackWrapperDestroyer. Use AsyncCallback instead for safe jsi::Function memory ownership.

Reviewed By: RSNara

Differential Revision: D49792717

fbshipit-source-id: 9f2f3b00c71ad1b86427dee3749c6d98ef0f5678
2023-10-11 11:22:28 -07:00
Krystof Woldrich cd78e39e2b feat(tm-android): TM SyncVoidKind methods throws JSError (#40788)
Summary:
Other RM Sync method calls do return JSError with the throwable information.

## 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
-->

[ANDROID] [ADDED] - TM SyncVoidKind methods throws JSError

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

Test Plan:
Output of caught error `console.log(e, e.stack, e.cause);`

```js
 LOG  [Error: Exception in HostFunction: Intentional exception from JVM voidFuncThrows] Error: Exception in HostFunction: Intentional exception from JVM voidFuncThrows
    at voidFuncThrows (native)
    at voidFuncThrows (http://10.0.2.2:8081/js/examples/TurboModule/SampleTurboModuleExample.bundle//&platform=android&lazy=true&app=com.facebook.react.uiapp&modulesOnly=true&dev=true&minify=false&runModule=true&shallow=true:100:127)
    at onPress (http://10.0.2.2:8081/js/examples/TurboModule/SampleTurboModuleExample.bundle//&platform=android&lazy=true&app=com.facebook.react.uiapp&modulesOnly=true&dev=true&minify=false&runModule=true&shallow=true:235:71)
    at _performTransitionSideEffects (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:67991:22)
    at _receiveSignal (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:67941:45)
    at onResponderRelease (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:67784:34)
    at apply (native)
    at invokeGuardedCallbackProd (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:4727:21)
    at apply (native)
    at invokeGuardedCallback (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:4903:42)
    at apply (native)
    at invokeGuardedCallbackAndCatchFirstError (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:4917:36)
    at executeDispatch (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:4994:48)
    at executeDispatchesInOrder (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:5016:26)
    at executeDispatchesAndRelease (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:7640:35)
    at executeDispatchesAndReleaseTopLevel (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:7647:43)
    at forEach (native)
    at forEachAccumulated (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:5610:22)
    at runEventsInBatch (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:7660:27)
    at runExtractedPluginEventsInBatch (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:7693:25)
    at anonymous (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:7734:42)
    at batchedUpdates$1 (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:20049:20)
    at batchedUpdates (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:7616:36)
    at dispatchEvent (http://10.0.2.2:8081/js/RNTesterApp.android.bundle//&platform=android&dev=true&lazy=true&minify=false&app=com.facebook.react.uiapp&modulesOnly=false&runModule=true:7705:23)
{"message": "Intentional exception from JVM voidFuncThrows", "name": "java.lang.RuntimeException", "stackElements": [{"className": "com.facebook.fbreact.specs.SampleTurboModule", "fileName": "SampleTurboModule.java", "lineNumber": 186, "methodName": "voidFuncThrows"}, {"className": "com.facebook.jni.NativeRunnable", "fileName": "NativeRunnable.java", "lineNumber": -2, "methodName": "run"}, {"className": "android.os.Handler", "fileName": "Handler.java", "lineNumber": 958, "methodName": "handleCallback"}, {"className": "android.os.Handler", "fileName": "Handler.java", "lineNumber": 99, "methodName": "dispatchMessage"}, {"className": "com.facebook.react.bridge.queue.MessageQueueThreadHandler", "fileName": "MessageQueueThreadHandler.java", "lineNumber": 27, "methodName": "dispatchMessage"}, {"className": "android.os.Looper", "fileName": "Looper.java", "lineNumber": 205, "methodName": "loopOnce"}, {"className": "android.os.Looper", "fileName": "Looper.java", "lineNumber": 294, "methodName": "loop"}, {"className": "com.facebook.react.bridge.queue.MessageQueueThreadImpl$4", "fileName": "MessageQueueThreadImpl.java", "lineNumber": 234, "methodName": "run"}, {"className": "java.lang.Thread", "fileName": "Thread.java", "lineNumber": 1012, "methodName": "run"}]}
```

Reviewed By: cortinico

Differential Revision: D50169068

Pulled By: javache

fbshipit-source-id: 3a7b5e44fc69e3b8747b12c524c717904c4e808f
2023-10-11 09:12:53 -07:00
Phillip Pan b41a2f92ae introduce logic to invoke sync void method (#39970)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39970

Changelog: [Internal]

in this diff, i add the logic that makes void return values run synchronously

Reviewed By: javache

Differential Revision: D49613770

fbshipit-source-id: ef840fb3ee130430505d000a7cf74e094f9d1405
2023-10-10 22:39:59 -07:00
Christoph Purrer 9e3d466c48 Add rn-tester Android BUCK configuration (#39987)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39987

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D49983211

fbshipit-source-id: c362d5b93e159bfb5ca17bea0ec0484adcdb4dca
2023-10-10 17:03:55 -07:00
Riccardo Cipolleschi 9c5ceeaf99 Make the Fabric Interop layer work in Bridgeless (#40732)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/40732

This change allows the Fabric Interop Layer to work in bridgeless mode.

Given that the legacy components requires a Bridge to send events and use commands, this change simulates a bridge when it doesn't exists (i.e.: we are in bridgeless mode).

In order to make it work, we had to simulate a few elements from the Bridge and the UIManager.

## Changelog:
[iOS][Fixed] - Make the Fabric interop layer works in bridgeless mode.

## Facebook:
As an alternative approach, we could have created a `protocol RCTBridging`, have the `RCTBridge` conform to that protocol, and create a new type for it.
Practically this would have been much more cumbersome:
1. The [RCTBridge](https://www.internalfb.com/code/fbsource/[916531b9bf7a9943036807f7563c925b4c3e0101]/xplat/js/react-native-github/packages/react-native/React/Base/RCTBridge.h?lines=87-238) interface is quite big. All the props and method should be part of the protocol.
2. Extensions declared on RCTBridge would not have worked. For example, [`RCTBridge (RCTUIManager)`](https://www.internalfb.com/code/fbsource/[916531b9bf7a9943036807f7563c925b4c3e0101]/xplat/js/react-native-github/packages/react-native/React/Modules/RCTUIManager.h?lines=170-174).
3. It would require a major overhaul of the APIs, returning `id<RCTBridging>` in place of **every** function that takes/return an instance of `RCTBridge *`.

Clearly, not a feasible way to go.

Reviewed By: RSNara

Differential Revision: D50079929

fbshipit-source-id: 77d4370e9043c8e06b676bff3987511c042b0f9c
2023-10-10 11:45:38 -07:00
Pieter De Baets 44f5989c3b Mark AsyncCallback as noexcept (#40745)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/40745

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D49886196

fbshipit-source-id: 6b4fa888f6cffbf7863167396d13c4a00bf485a2
2023-10-10 06:57:39 -07:00
David Vacca b7191cde4e Move TurboModule from com.facebook.react.turbomodule -> com.facebook.react.internal.turbomodule (#39682)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39682

Move TurboModule from com.facebook.react.turbomodule -> com.facebook.react.internal.turbomodule

bypass-github-export-checks

changelog: [internal] internal

Reviewed By: RSNara

Differential Revision: D49523696

fbshipit-source-id: fee155f4fb7acf0f28f900c79f7aa38074bec0e6
2023-10-09 19:24:19 -07:00
Chiara Mooney 570655d80f Fix Type Casting Warnings in ReactCommon (#39818)
Summary:
Casting warnings are treated as errors in React Native Windows. Adjusting casting to fix warnings.

## Changelog:
[GENERAL] [FIXED] - Fixes type casting warnings that are treated as errors downstream in React Native Windows.

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

Reviewed By: rshest

Differential Revision: D49940422

Pulled By: NickGerleman

fbshipit-source-id: e4d44326806a2b1974c7e50770e61807a007e39f
2023-10-09 11:07:46 -07:00
Samuel Susla 67384cf5a0 Reland of remove uses of folly::hash::fnv32_buf (#40233)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/40233

changelog: [internal]

This is a reland of D49355595 and D49358327.

the problem was using two different hashing functions in place where they must be the same.

Reviewed By: javache

Differential Revision: D50020135

fbshipit-source-id: 1cec6bc385077d371b024a0fb5d9c64ba1f6269c
2023-10-09 09:00:51 -07:00
Pieter De Baets 239079e457 Support passing in children directly when cloning nodes (#39817)
Summary:
Update the UIManagerBinding interface to support the upcoming API changes in https://github.com/facebook/react/pull/27458

Changelog: [Internal]

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

Reviewed By: rubennorte, sammy-SC

Differential Revision: D49912532

fbshipit-source-id: 436a3488ad4059467070f4ce41ae2b04dda19019
2023-10-06 08:09:07 -07:00
Samuel Susla 1719a072fd Delete native UI template (#39487)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39487

changelog: [internal]

renderTemplateToSurface isn't used, let's remove it.

Reviewed By: javache

Differential Revision: D49313868

fbshipit-source-id: 9019d5b4adbd23632f27dd61bc18a97b447575d4
2023-10-06 07:44:50 -07:00
Florian Sauer ed9931f456 RCTTurboModuleManager | Fix narrowing conversion. (#39829)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39829

Changelog:
    [iOS][Fixed] - Fixed narrowing conversion compilation error.

Reviewed By: sodastsai

Differential Revision: D49948385

fbshipit-source-id: 84385b90c1998d99980f1afd8b62e94202301afe
2023-10-05 05:42:53 -07:00
Nick Gerleman ea72bb2511 C++ style enums 17/N: Gutter (#39599)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39599

X-link: https://github.com/facebook/yoga/pull/1407

Replaces internal usages of YGGutter with Gutter.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49532100

fbshipit-source-id: 53c1d23e23a9db7294c66b6dc0eaff4e62ff278c
2023-10-04 20:34:42 -07:00
Nick Gerleman 9ce7b56413 Use modern Android libc++ in Yoga and React Native OSS (#39795)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39795
X-link: https://github.com/facebook/yoga/pull/1412

Android NDK 25 uses a version of libc++ that is more than three years old, missing a lot of basic features of C++ 20. This is rectified in NDK 26 (latest LTS NDK), which brings us up to date with latest Clang (17, released this year), and adds a new policy where future NDK versions will bump libc++ as part of bumping LLVM/Clang.

This requires an a beta AGP version (and corresponding Android Studio Preview). Based on how far we are historically, it wouldn't be a surprise if we see the stable release this month (well before the RN 0.74/Yoga 3.0 cut, even in the worse case).

Changelog:
[Android][Changed] - Use NDK 26

Reviewed By: yungsters

Differential Revision: D49895949

fbshipit-source-id: 37bb4d1fdf81137be7f14f6675b4e079c6f861e4
2023-10-04 19:57:14 -07:00
Nick Gerleman aefefdbbba Bump Folly to 2023.08.07.00 (#39798)
Summary:
This bumps folly, to absorb https://github.com/facebook/folly/commit/45fffa629d6bf7321391222d40613d75e8e067d7 which fixes warnings in XCode 15, and NDK 26 (treated as error bc we have better hygiene there). We then bump a little bit further to get past a new warning added, then fixed later.

Need to manually set `FOLLY_HAVE_GETTIME` on Apple because of the silliness described in https://github.com/facebook/folly/issues/1470#issuecomment-1746035194

There is not a combination of Folly, and Android libc++, that has fixes for warnings, but doesn't require the new libc++ in NDK 26. It is expected then that this commit will fail the build, but the next should succeed, and the two must be landed at the same time.

Changelog: [Internal]

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

Reviewed By: fkgozali

Differential Revision: D49897681

Pulled By: NickGerleman

fbshipit-source-id: 52b97ed5b302abf9e27f38dc655207827852dcc3
2023-10-04 19:57:14 -07:00
Nick Gerleman bb9ed0e906 Bump fmt to 9.1.0 (#39799)
Summary:
This is what Folly is built against internally. Bump the version we use, and the standard we compile with, to take some different paths, and see if we fix some warnings caused by FMT with the ndk bump.

Changelog:
[General][Breaking] - Bump fmt to 9.1.0

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

Test Plan: Passes in CircleCI

Reviewed By: cortinico, yungsters

Differential Revision: D49900112

Pulled By: NickGerleman

fbshipit-source-id: 3f11080555ef20aeb9291d1096ffa6077b3b3bbd
2023-10-04 19:57:14 -07:00
Phillip Pan d0b28580ee hook up enable_sync_void_methods_ios mc param
Summary:
Changelog: [Internal]

sync void execution is now hooked up to mc

Reviewed By: mdvacca

Differential Revision: D49854130

fbshipit-source-id: fb4241b11a80d44318b382e2757fe7fcbfba4fb1
2023-10-04 16:26:58 -07:00
Phillip Pan dd30d05e00 introduce performVoidMethodInvocation (#39760)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39760

Changelog: [Internal]

void functions are kinda special right now for the following reasons:
- they can be executed async or sync right now
- they don't return any value

thus, it makes sense for us to separate the invocation logic out and clean up the logic for retrieving return values specifically.

Reviewed By: javache

Differential Revision: D49652998

fbshipit-source-id: 7dba03adb8154e73ed75f8c2864294215c748107
2023-10-04 16:26:58 -07:00
Ruslan Shestopalyuk c969d8c8dd Turn CXX implementation of TextLayoutManager into interface (#39805)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39805

## Changelog:
[Internal] -

This makes corresponsing text measure methods inside `TextLayoutManager` overridable, so that it can be substituted with a custom implementation without introducing a new "platform".

Rationale: CXX platform is rather general and less specific than Android or iOS, so we may potentially have multiple alternative implementations of text layout there.

An alternative could be making `TextLayoutManager` an interface across all the platforms, and actual implementations called e.g. `TextLayoutManagerImpl` in each of them, however this would be quite a bit bigger blast radius without much added benefit for Android/iOS.

Reviewed By: christophpurrer

Differential Revision: D49907594

fbshipit-source-id: dc8213ddb2313adaa86c2852d23bb038d80ac244
2023-10-04 14:43:01 -07:00
Pieter De Baets d9cc662212 Fix use-after-move in AsyncCallback (#39802)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39802

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D49884649

fbshipit-source-id: 63bbad19c35fcc424ae5d32b422a6826f9f30fbf
2023-10-04 08:03:15 -07:00
Phillip Pan 113de6e4a0 switch on return types for invokeObjCMethod instead of cascading if else (#39591)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39591

Changelog: [Internal]

I'm refactoring this for a couple of reasons:
1) it isolates the void execution path, which we are changing now
2) switch case is safer than if else, in the future if we introduce new return types

Reviewed By: RSNara

Differential Revision: D49521866

fbshipit-source-id: 451c846ca15cc470cfeb5b2326d6eb2ffec74b25
2023-10-03 12:14:15 -07:00
Phillip Pan 36a202b0e5 lift isSyncModule_ check outside of isMethodSync (#39590)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39590

Changelog: [Internal]

some cleanup!

Reviewed By: javache

Differential Revision: D49521863

fbshipit-source-id: 1caabea207d84e02644a80ea736d7b51a7becca8
2023-10-03 12:14:15 -07:00
Phillip Pan c41cddf150 introduce flag to determine if turbomodule void method should run sync (#39589)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39589

Changelog: [Internal]

currently, turbomodule void methods run async by default, unless the consumer returns `RCTJSThread` in the `methodQueue` API.

we're looking to update this, so i'm introducing a flag at the module level that allows us to configure this behavior.

Reviewed By: RSNara

Differential Revision: D49521864

fbshipit-source-id: a6c61eb420b72199426e3dfdaec5fd090847efa5
2023-10-03 12:14:15 -07:00
Nick Gerleman 4da0d44e55 Remove usage of Gutters arrays and YGGutter as index (#39597)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39597

X-link: https://github.com/facebook/yoga/pull/1406

Similar in vain to D49362819, we want to stop exposing pre-resolved CompactValue, and allow enum class usage without becoming annoying.

This also simplifies gap resolution a bit. I moved this to Style, to make it clear we aren't relying on any node state. I plan to do some similar cleanup for other resolution later.

Reviewed By: rshest

Differential Revision: D49530923

fbshipit-source-id: 47b06a7301fb283acc493dba159f496159d59580
2023-10-03 10:08:10 -07:00
Pieter De Baets 0e10ee6ac6 Allow AsyncCallback to be used with lambda (#39717)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39717

AsyncCallback is a better abstraction than the current usage of WeakCallbackWrapper and RAIICallbackWrapperDestroyer, and has way fewer gotchas. Making a few changes here to make it easier to use in various scenarios and match the behaviour we're already seeing in CallbackWrapper.

1) Remove the explicit copy constructor, since this prevents an automatic move constructor from being generated
2) Add a call variant which takes a lambda, for callers which need to manually create JSI arguments
3) Ignore AsyncCallback invocations when the underlying runtime has gone away.

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D49684248

fbshipit-source-id: 8b49ec22cc409572ead80a85b10a190994bf0dd5
2023-10-03 07:55:17 -07:00
Nick Gerleman 5be6f49942 C++ style enums 16/N: Dimension (#39598)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39598

X-link: https://github.com/facebook/yoga/pull/1403

Replaces all usages of YGDimension with Dimension.

Adds `yoga::to_underlying` to act like `std::to_underlying`, added in C++ 23.

This enum is oddly only used internally, and is never an input to the public API, but it handled as any other public generated enum. Potentially some more cleanup to do there.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49475409

fbshipit-source-id: 7d4c31e8a84485baea0dab50b5cf16b86769fa07
2023-09-29 00:06:34 -07:00
Ingrid Wang 6b3d25a075 Update deprecated stringByAddingPercentEscapesUsingEncoding to NSCharacterSet (#39638)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39638

# Changelog:
[Internal] - Removing usage of stringByAddingPercentEscapesUsingEncoding

Per deprecation message:

> 'stringByAddingPercentEscapesUsingEncoding:' is deprecated: first deprecated in iOS 9.0 - Use -stringByAddingPercentEncodingWithAllowedCharacters: instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid.

Reviewed By: cipolleschi

Differential Revision: D49610243

fbshipit-source-id: 7c40ce9f6b643851c8aae8149acde2c435c06a76
2023-09-26 10:26:06 -07:00
Willa Kong 2fb4547aa0 Revert D49355595: remove uses of folly::hash::fnv32_buf
Differential Revision:
D49355595

Original commit changeset: a75fb91655a7

Original Phabricator Diff: D49355595

fbshipit-source-id: a1a32b869e1539ce931a6b9957e3697e7db72d2a
2023-09-22 11:19:56 -07:00
Willa Kong 0d63a15857 Revert D49358327: introduce fnv1a hashing function
Differential Revision:
D49358327

Original commit changeset: b211da89ca7b

Original Phabricator Diff: D49358327

fbshipit-source-id: b0ae2b9fdddae9616e5ae67f1bbc000ca8b3f52c
2023-09-22 11:19:56 -07:00
Samuel Susla 353b31c7da introduce fnv1a hashing function (#39515)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39515

changelog: [internal]

Implements FNV hashing algorithm: http://www.isthe.com/chongo/tech/comp/fnv/

Reviewed By: javache

Differential Revision: D49358327

fbshipit-source-id: b211da89ca7b6bea6ed1b0732e639bbc2de210f7
2023-09-22 05:53:13 -07:00
Samuel Susla e5b62b5ecd remove uses of folly::hash::fnv32_buf (#39509)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39509

changelog: [internal]

Reviewed By: cipolleschi

Differential Revision: D49355595

fbshipit-source-id: a75fb91655a7252c4208415940cf9766f750a8ab
2023-09-22 05:53:13 -07:00
Samuel Susla aa03cc0b75 use string_view instead of const char* in PerformanceObserver APIs (#39513)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39513

changelog: [internal]

Using std::hash with const char * is dangerous, as it will not hash the contents but only the pointer itself. We want to adopt std::hash in favour of folly to reduce our dependency on folly. One way to fix the issue with const char * is to use std::string_view.

Reviewed By: rshest, cipolleschi

Differential Revision: D49355536

fbshipit-source-id: fd2a7b4558461e913cdf0ec0e8fe878cae2f6015
2023-09-22 05:53:13 -07:00
Samuel Susla 4221cba12d remove folly::hash from textlayoutmanager module (#39514)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39514

changelog: [internal]

Reviewed By: cipolleschi

Differential Revision: D49350125

fbshipit-source-id: 694533fbc4fb26cce8a1c8b8507d403f28c7840e
2023-09-22 05:53:13 -07:00
Samuel Susla acea828e7a remove folly::hash from mounting module (#39510)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39510

changelog: [internal]

Reviewed By: cipolleschi

Differential Revision: D49350102

fbshipit-source-id: 0abfa7a9cf3d91b9913c5fb8602df08a043f30bf
2023-09-22 05:53:13 -07:00
Samuel Susla d51621cc18 remove use of folly::hash from core module (#39508)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39508

changelog: [internal]

Reviewed By: cipolleschi

Differential Revision: D49350077

fbshipit-source-id: d698e53e389acd5c77aa4100a846d762be96aea4
2023-09-22 05:53:13 -07:00
Samuel Susla 351b1a20d7 remove folly::hash from graphics module (#39507)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39507

changelog: [internal]

Reviewed By: cipolleschi

Differential Revision: D49349976

fbshipit-source-id: 5762b56b853640c21a13167b4ae2b8f966273fce
2023-09-22 05:53:13 -07:00
Samuel Susla 43eb18b1ae remove use of folly::hash from attributedstring module (#39512)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39512

changelog: [internal]

Reviewed By: cipolleschi

Differential Revision: D49349658

fbshipit-source-id: 2b1e3ce2051e995fe5a29a8021c221c69df28ce2
2023-09-22 05:53:13 -07:00
Samuel Susla bf186471d3 introduce hash_combine (#39511)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39511

changelog: [internal]

C++ standard library doesn't offer a way to combine hashes together. This is implementation for uses in React Native code.

Reviewed By: javache

Differential Revision: D49349539

fbshipit-source-id: 1e1f47585969181d5910f5bbc5b6ebfffa12e96b
2023-09-22 05:53:13 -07:00
Samuel Susla d6c9a488b2 missing #pragma once (#39506)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39506

changelog: [internal]

for correctness.

Reviewed By: mdvacca

Differential Revision: D49349252

fbshipit-source-id: 9144c5890c2905b3ebabca4cd53ee1c46f9711f1
2023-09-22 05:53:13 -07:00
Nick Gerleman ea85b31354 Remove usage of Dimension arrays and YGDimension as index (#39567)
Summary:
X-link: https://github.com/facebook/yoga/pull/1402

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

This change hides away most usages of YGDimension as an index. We do this for a couple reasons:

1. Right now the style interface may return a full array of resolved edge or dimension values, as a CompactValue. As we abstract away from CompactValue, and move towards ValuePool, this will no longer be the internal interface, and cheap to return. We instead change the interface to return a single value at once, which lets us resolve values lazily.

2. As we move internal usage to scoped enums, enums are not implicitly convertible to intergers (broadly a good thing). Hiding the enum as index prevents the need for callers to cast or convert to underlying.

Instead of making a new version of `IdxRef` for this, I converted to a more traditional setter. I will be making similar changes later for other styles, when I hide CompactValue from the public interface.

To review I would recommend filtering to changes in `xplat`, or viewing this in a single one of the OSS PRs exported. Everything apart from the below 20 files is a mirror.

{F1096792573}

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D49362819

fbshipit-source-id: 30d730d78e62f36597d43f477120f65694e51ea3
2023-09-20 16:19:59 -07:00
Pieter De Baets ecf1b84795 SafeAreaView shouldn't dirty layout on clone by default (#39554)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39554

There's no need to auto-dirty this component on clone (which will happen every time one of its children is cloned), if we update the padding values in `ComponentDescriptor::adopt` this will [already dirty as necessary](https://github.com/facebook/react-native/blob/7888338295476f4d4f00733309e54b8d22318e1e/packages/react-native/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h#L28).

Reviewed By: sammy-SC

Differential Revision: D49058812

fbshipit-source-id: ea1ac8a1aa96c7ea24dcc48627a500f8c7fc2aae
2023-09-20 09:55:05 -07:00
Nick Gerleman ebcd1ab1ab C++ style enums 15/N: Display (#39541)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39541

X-link: https://github.com/facebook/yoga/pull/1397

Moves internal usages of YGDisplay to Display

bypass-github-export-checks

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D49361952

fbshipit-source-id: a961efaa35a3fed01659d23783bf90e0b47656f0
2023-09-19 16:30:02 -07:00
Nick Gerleman e2e6895ea0 C++ style enums 14/N: Overflow (#39537)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39537

X-link: https://github.com/facebook/yoga/pull/1398

Moves internal usages of YGOverflow to Overflow

bypass-github-export-checks

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49361843

fbshipit-source-id: 42161aa8a26f64f052587b861120cdad0290ae46
2023-09-19 16:30:02 -07:00
Nick Gerleman c1cda3e64d C++ style enums 13/N: Wrap (#39539)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39539

X-link: https://github.com/facebook/yoga/pull/1400

Moves internal usages of YGPositionType to PositionType

bypass-github-export-checks

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49361746

fbshipit-source-id: ccc77b4c77753b5f41e11f1849d4c02153c190b7
2023-09-19 16:30:02 -07:00
Nick Gerleman aa8caf0641 C++ Style enums 12/N: PositionType (#39538)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39538

X-link: https://github.com/facebook/yoga/pull/1399

Moves internal usages of YGPositionType to PositionType

bypass-github-export-checks

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49361677

fbshipit-source-id: 526222d6cf9f3dc26eddfbfb8a04de4ba28e14a9
2023-09-19 16:30:02 -07:00
Nick Gerleman 1000afccaa C++ style enums 11/N: Align (#39497)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39497

X-link: https://github.com/facebook/yoga/pull/1395

Moves internal usages of YGAlign to Align

bypass-github-export-checks

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49337511

fbshipit-source-id: bb9906fcd22780d2cfd8d1360ef69f66b9701bb6
2023-09-19 16:30:02 -07:00
Nick Gerleman e767b21855 C++ style enums 10/N: Justify (#39498)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39498

X-link: https://github.com/facebook/yoga/pull/1396

Moves internal usages of YGJustify to Justify.

bypass-github-export-checks

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49336538

fbshipit-source-id: 6deb2438e3cd2989c8212ee294fd0fe4819f40ab
2023-09-19 16:30:02 -07:00
Nick Gerleman b6dfec38e0 C++ style enums 9/N: FlexDirection (#39484)
Summary:
X-link: https://github.com/facebook/yoga/pull/1394

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

Moves internal usages of YGDirection to Direction.

bypass-github-export-checks

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49336066

fbshipit-source-id: b49e1ffcd79a427e36ea8d2c26debaa98ef3e4c9
2023-09-19 16:30:02 -07:00
Nick Gerleman e9b5f0fabb C++ style enums 8/N: Direction (#39483)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39483

X-link: https://github.com/facebook/yoga/pull/1392

Moves internal usages of YGDirection to Direction.

bypass-github-export-checks

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D49335231

fbshipit-source-id: 459fe820c91be88734cebaa8655cd3f0afda83bf
2023-09-19 16:30:02 -07:00