Commit Graph
24895 Commits
Author SHA1 Message Date
Lulu WuandFacebook GitHub Bot ab45138394 Report js exceptions via Lacrima
Summary:
Why Lacrima?
- Throw a JavascriptException in native won't get the js error reported to backend, we need to use reporter APIs
- Lacrima is a new error reporting framework to report crashes and app deaths in android applications at Facebook, and it has APIs for reporting js exceptions.
- ```FbErrorReporterImpl.java``` uses ```Acra``` API to report, and ```Lacrima``` is a rewrite of ```Acra``` https://fb.workplace.com/groups/323014308578038/
- We've been receiving js errors reported via Lacrima https://fburl.com/logview/y1vhc8u8

In this diff all js errors are treated as soft errors during reporting because they don't usually crash the app, crashes will be reported with a different category.

Changelog:
[Android][Chagned] - Change static string to public

Reviewed By: fkgozali

Differential Revision: D34095100

fbshipit-source-id: 73d89647134a197baf5d228d620732781b6bd723
2022-03-04 15:42:52 -08:00
Marshall RochandFacebook GitHub Bot 2b0d72ae6a deploy 0.172.0
Summary: Changelog: [Internal]

Reviewed By: motiz88

Differential Revision: D34630927

fbshipit-source-id: b8ba532658c58950d4f0237ec0563004333c35ed
2022-03-04 12:01:41 -08:00
Scott KyleandFacebook GitHub Bot 402ad82027 Don't crash from wrong types
Summary:
The `get*` methods will assert and thus crash if JS passes a value by the wrong type. Although we have type checking, we should strive to never crash the app if an incorrect value slips by. The `as*` variants will throw an error back into JS instead.

Changelog:
Internal

Reviewed By: christophpurrer

Differential Revision: D34630900

fbshipit-source-id: 5ec55ca08ca7a1f43b2d9bfbb1d4e6fa89146e12
2022-03-04 08:02:17 -08:00
Scott KyleandFacebook GitHub Bot 603620b739 Add asBool() method
Summary:
Changelog:
[General][Added] - Add asBool() method to JSI

Reviewed By: mhorowitz

Differential Revision: D34630901

fbshipit-source-id: 3007784618fcc0f7828eee42de5cbf2bd71258c5
2022-03-04 08:02:17 -08:00
Nicola CortiandFacebook GitHub Bot 350f8c5ed0 Setup publishing for the ReactAndroid/hermes-engine to the top level /android folder.
Summary:
This sets up the publishing of the `hermes-engine` to end up in the Maven Local repository
we have set up inside the ./android folder of the NPM package of `react-native`.
Artifacts from there will be picked up similarly to what it's happening for React Android

Changelog:
[Internal] [Changed] - Setup publishing for the `ReactAndroid/hermes-engine` to the top level `/android` folder.

Reviewed By: hramos

Differential Revision: D34213638

fbshipit-source-id: adbc0d1559ee815f9d7a711c9c77489ec92b76ff
2022-03-04 07:27:13 -08:00
Nicola CortiandFacebook GitHub Bot a211089b9b Setup an android library project inside ReactAndroid/hermes-engine
Summary:
This commits sets up an Android library by applying the plugin
and configuring all the necessary flags.

Flags have been adapted from:
https://github.com/facebook/hermes/blob/main/android/hermes/build.gradle
Removing the unnecesary ones and adapting the build to conform
to the React Native build system.

Changelog:
[Internal] [Changed] - Setup an android library project inside `ReactAndroid/hermes-engine`

Reviewed By: hramos

Differential Revision: D34213534

fbshipit-source-id: c2e7b810bf4c4b1831a764a6f76cb73722da2125
2022-03-04 07:27:13 -08:00
Nicola CortiandFacebook GitHub Bot d96cd6d285 Create a Gradle task to setup the Hermes Ninja build
Summary:
As the title says, we need to invoke:
```
./utils/build/configure.py ./ninja_build
cmake --build ./ninja_build --target hermesc
```
In order to build the Hermes compiler, otherwise the CMake build
will fail with a missing Cmake file.

Changelog:
[Internal] [Changed] - Create a Gradle task to setup the Hermes Ninja build

Reviewed By: hramos

Differential Revision: D34213468

fbshipit-source-id: 83f70bdb068f99ce17a44207b4282fde2d7420ca
2022-03-04 07:27:13 -08:00
Nicola CortiandFacebook GitHub Bot 191fc0f7cc Setup a Gradle build inside ReactAndroid/hermes-engine to download Hermes sources
Summary:
This Diff sets up a small Gradle build inside `ReactAndroid/hermes-engine`
The idea is to kickoff a small project where we can download Hermes sources and start a compilation of
the Hermes sources from there.

Specifically the used paths are:

- `/sdk/hermes` for the unzipping
- `/sdk/download/hermes.tar.gz` for the tarball location
- `/sdk/hermes/.hermesversion` for the hermes version.

allow-large-files

Changelog:
[Internal] [Changed] - Setup a Gradle build inside `hermes-engine` to download Hermes sources

Reviewed By: hramos

Differential Revision: D34210236

fbshipit-source-id: 97034f5608dfb3fcd1d74e9851944f7a60e52ea1
2022-03-04 07:27:13 -08:00
Samuel SuslaandFacebook GitHub Bot a159416333 Use std::optional instead of butter::optional
Summary: changelog: Use std::optional instead of butter::optional

Reviewed By: fkgozali

Differential Revision: D33352680

fbshipit-source-id: 45a53fec181a6ffb6218909bc23348f7c9f21ec4
2022-03-04 07:25:59 -08:00
Samuel SuslaandFacebook GitHub Bot c2e4ae39b8 Add support for C++17 in OSS
Summary: changelog: Add support for C++17

Reviewed By: cortinico

Differential Revision: D34612257

fbshipit-source-id: 88a0307a750f2e0793a639b7a2b670a4571332fe
2022-03-04 07:25:59 -08:00
Qiao TanandFacebook GitHub Bot 4eef075a58 Back out "React Native sync for revisions 4de99b3...1780659"
Summary:
Original commit changeset: f1c831a45f96

Original Phabricator Diff: D34552175 (https://github.com/facebook/react-native/commit/6a4e905e3a4cccb7c134e8504a1c6674e23b1b70)

Changelog:
[Android][Fixed] - Revert back a previous change that could cause null pointer exception on UI manager

----

Context:

We were flagged a spiking crash on BizApp v348 (T113279390). We were able to repro the issue on multiple UI components on BizApp so we suspect it's caused by some kind of RN infra issue.

Unfortunately the issue can't be always reproed so we can't do a biset.

Based on mdvacca's initial assessment, the original diff D34552175 (https://github.com/facebook/react-native/commit/6a4e905e3a4cccb7c134e8504a1c6674e23b1b70) was landed right before version 348.0.0.0.114 was created which aligns with the timeline of the crash (see attached task).

We've also tried to backout the diff locally and tested for multiple Pages and seems the crash disappears - so we decided to give it a shot and see if this could mitigate the crash on RC.

Reviewed By: mdvacca

Differential Revision: D34632014

fbshipit-source-id: ce589d6e7d2293befc3615ecb87a9fc09f6a33f4
2022-03-03 19:51:36 -08:00
HeyImChrisandFacebook GitHub Bot 46f68aceb2 onDismiss to be an RCTDirectEventBlock (#33222)
Summary:
We're seeing a red box that `Component 'RCTModalHostView' re-registered bubbling event 'topDismiss' as a direct event moduleConstantsForComponent` in some downstream react-native-macOS builds.

Looking at other usage of this object, we treat it as a direct event block everywhere else, just this one spot it's a bubbling event block. It was added with [this PR](https://github.com/facebook/react-native/commit/7bf78eae5e2d53438bc333d3b9995b218f74c84b) which doesn't explicitly address the desire for the prop to bubble up through the view hierarchy or not, so I'm guessing it was just mislabeled and should be direct like the other usages.

## Changelog

[iOS] [Bug] - Fix modal redbox for onDismiss

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

Test Plan: We don't redbox downstream anymore

Reviewed By: p-sun, RSNara

Differential Revision: D34628759

Pulled By: philIip

fbshipit-source-id: bb3cc78fa43d20808579c614e25716880d002d88
2022-03-03 18:06:08 -08:00
David VaccaandFacebook GitHub Bot 97f3eb2d3b Ship large text measure cache in Fabric Android
Summary:
Ship large text measure cache in Fabric Android

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D34602873

fbshipit-source-id: bd0a77b8b2f85301a78d528e7810938b78c7f7b8
2022-03-03 09:41:23 -08:00
Samuel SuslaandFacebook GitHub Bot 8669277b3b Use std::unordered_set::find instead of std::unordered_set::contains
Summary:
changelog: [internal]

I'm looking into JS exceptions in React 18 on Android and I've noticed we use [std::unordered_set::contains]((https://en.cppreference.com/w/cpp/container/unordered_set/contains) that is only supported in C++20. I don't think this causes the exceptions but I would like to eliminate this option.

Reviewed By: javache

Differential Revision: D34547741

fbshipit-source-id: 6cffcff3366e7579a2c0e19bc01ffcb355b9ddb6
2022-03-03 09:22:32 -08:00
Samuel SuslaandFacebook GitHub Bot 664f9b11ba Add option to delay deletion of viewState
Summary:
changelog: [internal]

ViewState is sometimes deleted but not created again because of race condition in C++ pre-allocation and how it checks for revision to determine if createView mount item should be dispatched.

In this diff, we add an option to delay deletion of ViewState until the next commit.

Reviewed By: ShikaSD

Differential Revision: D34553174

fbshipit-source-id: e5213f1d39137fb56fc745321a7c1b28d417ea27
2022-03-03 06:02:02 -08:00
Gilson Takaasi GilandFacebook GitHub Bot eb434c1c76 Revert D34351084: Migrate from googletest 1.8 to googletest 1.10
Differential Revision:
D34351084 (https://github.com/facebook/react-native/commit/94891ab5f883efa55146dc42e1cd9705506794f3)

Original commit changeset: 939b3985ab63

Original Phabricator Diff: D34351084 (https://github.com/facebook/react-native/commit/94891ab5f883efa55146dc42e1cd9705506794f3)

fbshipit-source-id: 2fd17e0ccd9d1f1d643f4a372d84cb95f5add1f8
2022-03-03 04:41:46 -08:00
Samuel SuslaandFacebook GitHub Bot f7e4037c65 Clean up constructor in FabricMountingManager
Summary:
changelog: [internal]

Make all feature flags `const` and initialise them as ivars. Also makes the class final and removes virtualised destructor since it is not needed.

Reviewed By: ShikaSD

Differential Revision: D34549013

fbshipit-source-id: 2b326bc5b6c1dd6d89c2fb9c671bda6da669fa76
2022-03-03 04:35:53 -08:00
Dimitri BoucheandFacebook GitHub Bot 94891ab5f8 Migrate from googletest 1.8 to googletest 1.10 (#67)
Summary:
X-link: https://github.com/facebookincubator/hsthrift/pull/67

Updating `googletest` from `1.8.0` to `1.10.0`

Reviewed By: mzlee, igorsugak, luciang, meyering, r-barnes

Differential Revision: D34351084

fbshipit-source-id: 939b3985ab63a06b6d511ec8711c2d5863bdfea8
2022-03-03 03:46:03 -08:00
Paige SunandFacebook GitHub Bot 260c5fab9f (Easy) Migrate DatePickerIOS for Bridgeless
Summary: Changelog: [iOS][Internal] Migrate DatePickerIOS for Bridgeless mode

Reviewed By: RSNara

Differential Revision: D34595944

fbshipit-source-id: b20050dd5b350c186e4d1062c5d796a26d6aeb3e
2022-03-02 17:42:13 -08:00
Paige SunandFacebook GitHub Bot 2c268d7fe6 2/3 Make interop WebView component Bridgeless compatible, and make uiManager addUIBlock migration easier
Summary:
Changelog: [iOS] Add `_viewRegistry_DEPRECATED addUIBlock`  to replace `uiManager addUIBlock` for Fabric migration

Allow people to directly replace `uiManager addUIBlock` with `_viewRegistry_DEPRECATED addUIBlock` when they migrate the method in RCTViewManagers.

Currently we add an if check in the RCTViewManager, which makes migration a bit harder for OSS.
```
  if (self.bridge) {
    [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
      work();
    }];
  } else {
    RCTExecuteOnMainQueue(work);
  }
```

Reviewed By: sammy-SC

Differential Revision: D34532609

fbshipit-source-id: 19647fea03be8fd71d8f46dfe216275894d8165c
2022-03-02 14:09:56 -08:00
Andrei ShikovandFacebook GitHub Bot fc9dec9a35 Download kotlin compiler JARs for Buck instead of checking them in (#33209)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/33209

Downloads Kotlin compiler JARs with Buck before starting docker build. This solution is slower than checking in JARs directly, but it allows to keep lighter size of the repo for people who want a complete checkout.

Changelog: [Internal] - Update CI build to download Kotlin jars for buck

Reviewed By: cortinico

Differential Revision: D34582932

fbshipit-source-id: 290398579ce2a4d57c7af318c66526689db6073c
2022-03-02 13:04:49 -08:00
Joshua GrossandFacebook GitHub Bot 6abbef1200 CustomEvent and Event polyfills for React Native
Summary:
In preparation for upcoming changes, it is useful / necessary to have a CustomEvent and Event polyfill for React Native.

In browser environments, both of those are expected to be accessible in the global scope, so we do the same here.

Changelog: [Added][JS] Event and CustomEvent W3C-compatible polyfills

Reviewed By: necolas

Differential Revision: D34462447

fbshipit-source-id: 5efdad6f24c268a6d248d4e3351fc96715ee3fdf
2022-03-02 11:39:00 -08:00
Nicola CortiandFacebook GitHub Bot 2fdbf6a10f Make sure configureNdkBuild* tasks are depending on preBuild
Summary:
Due to a bug with AGP, the configureNdkBuild* tasks are not depending on
preBuild tasks. We need to manually fix this otherwise the build will fail the
first time the NDK is invoked.

More on this here: https://issuetracker.google.com/issues/207403732

Changelog:
[Android] [Fixed] - Make sure configureNdkBuild* tasks are depending on
preBuild in the Android template.

Reviewed By: passy

Differential Revision: D34578860

fbshipit-source-id: 5d4caa7d2b7a976b1c9caa6dce8e186c1486cafa
2022-03-02 05:23:01 -08:00
Pieter De BaetsandFacebook GitHub Bot f743bed657 Enable paintFilterBitmap when rendering images with rounded corners
Summary:
Per Android docs (https://developer.android.com/reference/android/graphics/Paint#FILTER_BITMAP_FLAG):

> This should generally be on when drawing bitmaps, unless performance-bound (rendering to software canvas) or preferring pixelation artifacts to blurriness when scaling significantly.

Changelog:
[Android][Fixed] - Improve rendering of images when resampled and corner radius applied

Reviewed By: genkikondo

Differential Revision: D34551184

fbshipit-source-id: 649da53af816be829e5b7f8e2a100f07a8b412b7
2022-03-02 02:55:55 -08:00
Gal ShirinandFacebook GitHub Bot cfb11ca2f6 Fix xcodebeta build failure
Summary:
Changelog:
[iOS][Changed] - Removed methodName parameter that was used only for a warning message and moved the warning parameter to be calculated inline.

Reviewed By: fkgozali

Differential Revision: D34551444

fbshipit-source-id: 6ceba425b64df37b0dca7e222072f1836f151d83
2022-03-01 23:56:55 -08:00
Andrei ShikovandFacebook GitHub Bot 131844f40e Add feature flag to disable pre-allocation on clone
Summary:
Disables preallocation for cloned nodes, switching to create during commit for those cases instead.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D34555621

fbshipit-source-id: 21fc834cea318ca299aa37a9aab28a2f2a9675b5
2022-03-01 18:10:49 -08:00
Ramanpreet NaraandFacebook GitHub Bot f47082be11 Generate Props C++ structs on all platforms
Summary:
The props generator assumes that Props are used only on iOS. (i.e: the generator doesn't generate the props code if the iOS platform is excluded). However, Props are also used on Android. So, this diff makes us generate Props for all platforms.

Changelog: [Internal]

Reviewed By: JoshuaGross

Differential Revision: D34559900

fbshipit-source-id: 0c25835dd57aa55a094152c147a9f952b9bc6850
2022-03-01 16:27:52 -08:00
Ramanpreet NaraandFacebook GitHub Bot 922219a852 Fix ScrollView Static ViewConfigs
Summary:
This should fix the SVC === NVC check for ScrollView and AndroidHorizontalScrollView.

Changelog: [Internal]

Reviewed By: p-sun

Differential Revision: D34542873

fbshipit-source-id: 7e25d3a6c1417877b64501981652d767ba2eda48
2022-03-01 16:27:52 -08:00
Ramanpreet NaraandFacebook GitHub Bot 5c8d95b4e2 Make remaining FBiOS/FB4A components export SVCs via __INTERNAL_VIEW_CONFIG
Summary:
The static ViewConfig codegen generates the static ViewConfig inside the JavaScript module [under an exported constant](https://github.com/facebook/react-native/blob/a0a2958cdac767f50084c2d5bee6cf224ffb9db3/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js#L127-L129):

```
export const __INTERNAL_VIEW_CONFIG = VIEW_CONFIG;
export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG);
```

This exported constant allows us to build a test page that requires all components, and compares their static ViewConfigs with their native ViewConfig.

This diff makes components with hand-written static ViewConfigs also export this __INTERNAL_VIEW_CONFIG const.

Changelog: [Internal]

Reviewed By: p-sun

Differential Revision: D34541868

fbshipit-source-id: f55dd3f1b161038baaf84cbbf75c1f4041c34647
2022-03-01 16:27:52 -08:00
David VaccaandFacebook GitHub Bot ec27141b93 remove duplicate code in FabricUIManager
Summary:
remove duplicate code in FabricUIManager

The removed line is already called few lines above

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D34553849

fbshipit-source-id: 2e0102a77e7464c9803fb1175385fdafbb88f1fa
2022-03-01 14:56:44 -08:00
Kacie BawiecandFacebook GitHub Bot 6a4e905e3a React Native sync for revisions 4de99b3...1780659
Summary:
This sync includes the following changes:
- **[17806594c](https://github.com/facebook/react/commit/17806594c )**: Move createRoot/hydrateRoot to react-dom/client ([#23385](https://github.com/facebook/react/pull/23385)) //<Sebastian Markbåge>//
- **[75662d6a7](https://github.com/facebook/react/commit/75662d6a7 )**: Remove hacky stream.locked check, declare as byte stream instead ([#23387](https://github.com/facebook/react/pull/23387)) //<Sebastian Markbåge>//
- **[a82ef6d40](https://github.com/facebook/react/commit/a82ef6d40 )**: Add back skipUnmountedBoundaries flag only for www ([#23383](https://github.com/facebook/react/pull/23383)) //<Andrew Clark>//
- **[f468816ef](https://github.com/facebook/react/commit/f468816ef )**: Fix false positive hydration warnings ([#23364](https://github.com/facebook/react/pull/23364)) //<Andrew Clark>//
- **[5d08a24c2](https://github.com/facebook/react/commit/5d08a24c2 )**: useId: Use 'H' to separate main id from hook index ([#23363](https://github.com/facebook/react/pull/23363)) //<Andrew Clark>//
- **[3a60844a0](https://github.com/facebook/react/commit/3a60844a0 )**: Update error message for suspending at sync priority ([#23361](https://github.com/facebook/react/pull/23361)) //<Andrew Clark>//
- **[efe4121ee](https://github.com/facebook/react/commit/efe4121ee )**: Add : to beginning and end of every useId ([#23360](https://github.com/facebook/react/pull/23360)) //<Andrew Clark>//
- **[42f15b324](https://github.com/facebook/react/commit/42f15b324 )**: [DevTools][Transition Tracing] onTransitionComplete and onTransitionStart implmentation ([#23313](https://github.com/facebook/react/pull/23313)) //<Luna Ruan>//
- **[a5b22155c](https://github.com/facebook/react/commit/a5b22155c )**: Warn if renderSubtreeIntoContainer is called ([#23355](https://github.com/facebook/react/pull/23355)) //<Andrew Clark>//
- **[52c393b5d](https://github.com/facebook/react/commit/52c393b5d )**: Revert to client render on text mismatch ([#23354](https://github.com/facebook/react/pull/23354)) //<Andrew Clark>//
- **[1ad8d8129](https://github.com/facebook/react/commit/1ad8d8129 )**: Remove object-assign polyfill ([#23351](https://github.com/facebook/react/pull/23351)) //<Sebastian Markbåge>//
- **[b3f3da205](https://github.com/facebook/react/commit/b3f3da205 )**: Land warnOnSubscriptionInsideStartTransition flag ([#23353](https://github.com/facebook/react/pull/23353)) //<Andrew Clark>//
- **[990098f88](https://github.com/facebook/react/commit/990098f88 )**: Re-arrange main ReactFeatureFlags module ([#23350](https://github.com/facebook/react/pull/23350)) //<Andrew Clark>//
- **[1f3f6db73](https://github.com/facebook/react/commit/1f3f6db73 )**: Remove createMutableSource from stable exports ([#23352](https://github.com/facebook/react/pull/23352)) //<Andrew Clark>//
- **[587e75930](https://github.com/facebook/react/commit/587e75930 )**: Remove Numeric Fallback of Symbols ([#23348](https://github.com/facebook/react/pull/23348)) //<Sebastian Markbåge>//
- **[40351575d](https://github.com/facebook/react/commit/40351575d )**: Split writeChunk into void and return value ([#23343](https://github.com/facebook/react/pull/23343)) //<Sebastian Markbåge>//
- **[2c693b2de](https://github.com/facebook/react/commit/2c693b2de )**: Re-add reentrancy avoidance ([#23342](https://github.com/facebook/react/pull/23342)) //<Sebastian Markbåge>//
- **[1760b27c0](https://github.com/facebook/react/commit/1760b27c0 )**: Remove ./src/* export from public build ([#23262](https://github.com/facebook/react/pull/23262)) //<Andrew Clark>//
- **[552c067bb](https://github.com/facebook/react/commit/552c067bb )**: Remove public export for unstable-shared-subset.js ([#23261](https://github.com/facebook/react/pull/23261)) //<Andrew Clark>//

Changelog:
[General][Changed] - React Native sync for revisions 4de99b3...1780659

jest_e2e[run_all_tests]

Reviewed By: rickhanlonii

Differential Revision: D34552175

fbshipit-source-id: f1c831a45f96d335a20c3b4113196e0a42cefc03
2022-03-01 14:40:34 -08:00
Xin ChenandFacebook GitHub Bot 0975e96d53 Fix transform when calculate overflowInset
Summary:
This diff fixes overflowInset calculation when a shadow node has transform matrix from a transfrom prop in JS. Specifically, this fixed the use case when transform directly used on a view component. When using Animated.View, it will create an invisible wrapper which will behave correctly with existing logic. This diff bring both use cases to work properly.

When a shadow node has transform on it, it will affect the overflowInset values for its parent nodes, but won't affect its own or any of its child nodes overflowInset values. This is obvious for translateX/Y case, but not for scale case. Take a look at the following case:

```
     ┌────────────────┐                 ┌────────────────┐                      ┌────────────────┐
     │Original Layout │                 │  Translate AB  │                      │    Scale AB    │
     └────────────────┘                 └────────────────┘                      └────────────────┘
                                                        ─────▶           ◀─────                  ─────▶
┌ ─ ─ ─ ┬──────────┐─ ─ ─ ─ ┐     ┌ ─ ─ ─ ┬──────────┐─ ─ ─ ─ ─ ┐      ┌ ─ ─ ─ ─ ─ ┬──────────┐─ ─ ─ ─ ─ ┐
        │ A        │                      │ A        │                             │ A        │
│       │          │        │     │       │          │          │      ├ ─ ─ ─ ─ ─ ┼ ─ ─┌─────┤─ ─ ─ ─ ─ ┤
 ─ ─ ─ ─│─ ─ ─┌───┐┼ ─ ─ ─ ─              │          │                   ◀─ ─ ─    │    │AB   │  ─ ─ ─▶
│       │     │AB ││        │     │ ┌ ─ ─ ┼ ─ ─ ─ ┬──┴┬ ─ ─ ─ ─ ┤      │           │    │     │          │
        └─────┤   ├┘                      └───────┤AB │                            └────┤     │
│             │┌──┴─────────┤     │ │             │   │         │      │ │              │ ┌───┴──────────┤
              ││ABC         │                     │┌──┴─────────┐                       │ │ABC           │
│             │└──┬─────────┤   │ │ │             ││ABC         │    │ │ │              │ │              │
┌───ABD───────┴─┐ │             │                 │└──┬─────────┘    │   ▼              │ └───┬──────────┘
├─────────────┬─┘ │         │   │ │ ├───ABD───────┴─┐ │         │    │ ├────────────────┴──┐  │          │
 ─ ─ ─ ─ ─ ─ ─└───┘─ ─ ─ ─ ─    ▼   └─────────────┬─┘ │              ▼ │      ABD          │  │
                                  └ ┴ ─ ─ ─ ─ ─ ─ ┴───┴ ─ ─ ─ ─ ┘      ├────────────────┬──┘  │          │
                                                                        ─ ─ ─ ─ ─ ─ ─ ─ ┴─────┴ ─ ─ ─ ─ ─
```

For the translate case, only view A has change on the overflowInset values for `right` and `bottom`. Note that the `left` and `top` are not changed as we union before and after transform is applied.

For the scale case, similar things are happening for view A, and both `left`, `right`, and `bottom` values are increased. However, for View AB or any of its children, they only *appear* to be increased, but that is purely cosmetic as it's caused by transform. The actual values are not changed, which will later be converted during render phase to actual pixels on screen.

In summary, overflowInset is affected from child nodes transform matrix to the current node (bottom up), but not from transform matrix on the current node to child nodes (top down). So the correct way to apply transform is to make it only affect calculating `contentFrame` during layout, which collects child nodes layout information and their transforms. The `contentFrame` is then used to decide the overflowInset values for the parent node. The current transform matrix on parent node is never used as it's not affecting overflowInset for the current node or its child nodes.

This diff reflects the context above with added unit test to cover the scale and translate transform matrix.

Changelog:
[Android/IOS][Fixed] - Fixed how we calculate overflowInset with transform matrix

Reviewed By: sammy-SC

Differential Revision: D34433404

fbshipit-source-id: 0e48e4af4cfd5a6dd32a30e7667686e8ef1a7004
2022-03-01 14:33:04 -08:00
Paige SunandFacebook GitHub Bot 3eae11e72f Migrate dev method codegenNativeComponent to be Bridgeless compatible
Summary: Changelog: [Internal] Migrate dev method codegenNativeComponent to be Bridgeless compatible

Reviewed By: RSNara

Differential Revision: D34513074

fbshipit-source-id: d71fbf066453ac8c407d0cf41c2dc7fa80c87688
2022-03-01 13:30:55 -08:00
David VaccaandFacebook GitHub Bot 34d3373bb0 Ship enableNestedTextOnPressEventFix
Summary:
Ship the NestedTextOnPressEventFix feature flag

changelog: [internal] internal

Reviewed By: javache

Differential Revision: D34554304

fbshipit-source-id: 3350c56d0cc4f2593645bcb6650034be336bd902
2022-03-01 12:07:36 -08:00
Ian ChildsandFacebook GitHub Bot ff568b0b1f Add label to run genrule locally
Summary: Changelog: [Internal]

Reviewed By: ndmitchell

Differential Revision: D34552708

fbshipit-source-id: 06e1950676713a95622c4ec38be87c9944dadb29
2022-03-01 10:18:40 -08:00
Janic DuplessisandFacebook GitHub Bot cff9590864 Implement Runtime.getHeapUsage for hermes chrome inspector (#33173)
Summary:
Reland of https://github.com/facebook/react-native/issues/32895 with fix for optional params object.

Original description:

I was looking at the hermes chrome devtools integration and noticed requests to `Runtime.getHeapUsage` which was not implemented. When implemented it will show a summary of memory usage of the javascript instance in devtools.

<img width="325" alt="image" src="https://user-images.githubusercontent.com/2677334/149637113-e1d95d26-9e26-46c2-9be6-47d22284f15f.png">

## Changelog

[General] [Added] - Implement Runtime.getHeapUsage for hermes chrome inspector

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

Test Plan:
I was able to reproduce the issue that caused the initial PR to be reverted using the resume request in Flipper. Pausing JS execution then resuming it will cause it to crash before this change, and works fine after.

Before

<img width="912" alt="image" src="https://user-images.githubusercontent.com/2677334/149637073-15f4e1fa-8183-42dc-8673-d4371731415c.png">

After

<img width="1076" alt="image" src="https://user-images.githubusercontent.com/2677334/149637085-579dee8f-5efb-4658-b0a8-2400bd119924.png">

Reviewed By: jpporto

Differential Revision: D34446672

Pulled By: ShikaSD

fbshipit-source-id: 6e26b8d53cd88cddded36437c72a01822551b9d0
2022-03-01 10:09:05 -08:00
Mo WangandFacebook GitHub Bot 46bc521513 fix the crash caused by nil partialLoadHandler
Summary:
## Problem
the partialLoadHandler is nil on line 338 of RCTImageLoader, therefore, if there is a cached image, it would crash on line 495.

## Change
Check if partialLoadHandler is nil on line 495 to prevent the crash

Changelog: [iOS][Changed] - fix the crash caused by nil partialLoadHandler

Reviewed By: appden

Differential Revision: D34544090

fbshipit-source-id: f9965700e529c5add1e25867a3772c053447d99a
2022-03-01 00:25:02 -08:00
Scott KyleandFacebook GitHub Bot 5980abf3c4 Fix OSS BUCK codegen (#33197)
Summary:
This fixes a mistake I made introduced in D34451208 (https://github.com/facebook/react-native/commit/a0a2958cdac767f50084c2d5bee6cf224ffb9db3) where the OSS buck file was missing the `rn_codegen_cxx_modules` import.

Changelog:
Internal

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

Reviewed By: JoshuaGross

Differential Revision: D34541508

fbshipit-source-id: d99472b69aed78897b88acabee4a7faa63c7bb72
2022-02-28 20:21:35 -08:00
Rubén NorteandFacebook GitHub Bot 9d1400a1ef Add annotation to report the use of concurrent root in TTRC
Summary:
Annotate use of `ConcurrentRoot` in React in performance logger.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D34453147

fbshipit-source-id: 813a58ae964e5ae4ddf806a30597ee39d315e800
2022-02-28 19:30:41 -08:00
Scott KyleandFacebook GitHub Bot a0a2958cda Expose C++ TurboModule codegen
Summary:
This adjusts the previously unused (but fully working!) `rn_codegen_cxx_modules` rule to be consistent with the other codegen rules and calls it from the `rn_codegen` with the "JSI" suffix to not conflict with the other rules, and to match the convention established by hand-written C++ TurboModules.

Changelog:
Internal

Reviewed By: RSNara

Differential Revision: D34451208

fbshipit-source-id: 4d779b068dfa4f7fd73fd3bca354fffe86d01f73
2022-02-28 17:08:03 -08:00
Andrei ShikovandFacebook GitHub Bot 964e816752 Update usages of default ReactNativeConfig (#33196)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/33196

Fixes compilation of Android template and renames the field according to Java guidelines.

Changelog: [Android][Changed] - Rename field with default values for ReactConfig to DEFAULT_CONFIG

Reviewed By: cortinico

Differential Revision: D34523356

fbshipit-source-id: 46ed703e7ca8ab5e05879dd93e8e4d2d816c2d03
2022-02-28 14:45:09 -08:00
Andres SuarezandFacebook GitHub Bot 75348acbfc Fix unnecessary LICENSELINT suppressions
Reviewed By: zsol

Differential Revision: D34526295

fbshipit-source-id: f511370dc3186bc396d68a2e6d5e0931facbeb42
2022-02-28 11:53:40 -08:00
Arushi KesarwaniandFacebook GitHub Bot c92b64b16a Upgrade Metro dependencies to 0.69.0
Summary:
While React Native depends on the `metro` package indirectly (via the CLI package), it depends on some secondary Metro packages directly. This diff updates those direct dependencies to use [Metro 0.69.0](https://github.com/facebook/metro/releases/tag/v0.69.0).

Changelog:
[General] Update direct Metro dependencies to 0.69.0

Reviewed By: motiz88

Differential Revision: D34520074

fbshipit-source-id: 93b9f5fa8ccc65132c9c96b23080edb5a339d5ce
2022-02-28 08:28:10 -08:00
Gabriel Donadel Dall'AgnolandFacebook GitHub Bot e139ef0de8 chore: Add comments explaining the existence of NativeDatePickerAndroid (#33159)
Summary:
This PR adds comments explaining the reason why the `NativeDatePickerAndroid.js` file was kept when removing `DatePickerAndroid`(https://github.com/facebook/react-native/commit/7a770526c626e6659a12939f8c61057a688aa623 ) in order to prevent people from trying to delete it, as this file has no references in the Github repo

## Changelog

[Internal] [Added] - Add comments explaining the existence of NativeDatePickerAndroid

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

Test Plan: Ensure builds are still working correctly, although this just adds a comment

Reviewed By: cortinico

Differential Revision: D34487638

Pulled By: lunaleaps

fbshipit-source-id: 42cb7331e98d69ff2f69f19bfbb2e65c063120f7
2022-02-28 06:25:20 -08:00
Danilo BürgerandFacebook GitHub Bot 56dda14c46 Include folly fabric headers in source files (#33188)
Summary:
See the main spec preserve_paths, they are all also included as source_files. Without this, the folly fabric header files won't be available for other pods.

## Changelog

[iOS] [Fixed] - Include folly fabric headers in source files

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

Test Plan:
Include react-native-safe-area-context 4.0.1 with new architecture active. It will result in a xcode build error:

<img width="466" alt="Screenshot 2022-02-26 at 19 33 35" src="https://user-images.githubusercontent.com/996231/155855017-8ea5f473-42a0-4e56-8108-472e6224ae7e.png">

Reviewed By: cortinico

Differential Revision: D34518841

Pulled By: motiz88

fbshipit-source-id: 1053fe204331a314427c793f28b2458e7b78e6c5
2022-02-28 04:56:36 -08:00
Danilo BürgerandFacebook GitHub Bot f43f05d292 Updated template gitignore with fastlane best practices (#33186)
Summary:
See https://docs.fastlane.tools/best-practices/source-control/

This commit reflects the best practices as outlined by fastlane.

## Changelog

[iOS] [Fixed] - Improved template fastlane gitignore

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

Test Plan: no test plan

Reviewed By: cortinico

Differential Revision: D34518831

Pulled By: motiz88

fbshipit-source-id: eee1d332f24caa37bc48fd058bf0eb0e73f6bc1b
2022-02-28 03:17:49 -08:00
David VaccaandFacebook GitHub Bot a7a2d2307c Quick update in the Fabric statistics loggiing
Summary:
Quick update in the Fabric statistics loggiing

changelog: [internal] internal

Reviewed By: ShikaSD

Differential Revision: D34315716

fbshipit-source-id: c0e2e1611b0b6a947ffef6e0cc444b15e812d01b
2022-02-27 22:23:48 -08:00
David VaccaandFacebook GitHub Bot 858ccfc9c8 Refactor to reuse EmptyReactNativeConfig from ReactNativeConfig
Summary:
Quick refactor to reuse EmptyReactNativeConfig from ReactNativeConfig

changelog: [internal] internal

Reviewed By: genkikondo

Differential Revision: D34283060

fbshipit-source-id: 32400d5ed6defd9f82953dc49ae365598db71bbc
2022-02-27 22:23:48 -08:00
David VaccaandFacebook GitHub Bot be9cf17316 Move TextLayoutManager constructor to Cpp file
Summary:
Move TextLayoutManager constructor to Cpp file

changelog: [internal] internal

Reviewed By: genkikondo

Differential Revision: D34246014

fbshipit-source-id: a85e144b05e2cefad8cb1757dad14bedacbb8d74
2022-02-27 22:23:48 -08:00
David VaccaandFacebook GitHub Bot 3fb3ce4fa2 Delete TextMeasurement destructor
Summary:
TextMeasurement destructor is not necessary, we are deleting it

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D34246015

fbshipit-source-id: 6ca4803fafc8b195828d546ba8fb45353257f383
2022-02-27 22:23:48 -08:00