Commit Graph
1404 Commits
Author SHA1 Message Date
Pieter De Baets ef77087293 Fix duplication across and rncore and FBReactNativeComponentSpec (#43385)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43385

`rncore` and `FBReactNativeComponentSpec` contain the same symbols, which leads to conflicts when we try to merge them into a single shared library. Cleanup the duplication and standardize on `FBReactNativeComponentSpec` everywhere. I've left the Android OSS targets as is, to avoid breaking deps.

Changelog: [Internal]

Reviewed By: cortinico, dmytrorykun

Differential Revision: D54630694

fbshipit-source-id: 75cb961ded9fd75508755c0530e29409fef801cf
2024-03-18 07:30:33 -07:00
Rubén Norte a2e22404fb Remove feature flag to skip mount hook notifications (#43504)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43504

Changelog: [internal]

We identified the issue in the experiments already, so we can remove this flag.

Reviewed By: sammy-SC

Differential Revision: D54945099

fbshipit-source-id: 4d547569eb3bbfd011f5d6894d87bfa542cac07b
2024-03-18 06:15:52 -07:00
Rubén Norte 87b73a0bad Enable event loop by default when bridgeless is enabled (#43396)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43396

Changelog: [General][Changed] Enabled new event loop behavior when bridgeless (new architecture) is enabled.

Reviewed By: rshest

Differential Revision: D54682678

fbshipit-source-id: ff8c45bc1caae0e9182aa94d915d7b6f9427caf9
2024-03-18 04:51:39 -07:00
Jane Li f2f62cdf54 Back out "Add onUserLeaveHint support to ReactActivityDelegate"
Summary:
This is causing Twilight Android app to hang and crash on start

Original commit changeset: 3f24271405f6

Original Phabricator Diff: D54905564

Reviewed By: sammy-SC

Differential Revision: D54960053

fbshipit-source-id: 5c1063f11ae1314e71288905eb6d8da32ddbfadd
2024-03-15 13:37:22 -07:00
Fabrizio Cucci f2c335ac96 Fix auto-download of CMake (#43511)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43511

Changelog: [Internal]

This is an attempt to fix [#39783](https://github.com/facebook/react-native/issues/39783).

It seems that when `configureBuildForHermes` runs (as part of `yarn android` in `rn-tester`) cmake may not be available and is not installed automatically:
* for 3p, even after installing the latest Android Studio, cmake 3.22.1 is not available by default but needs to be installed manually
* for Meta employees, same story when looking at the `ANDROID_HOME` set by the `setup_fb4a.sh` in the `.zshrc` file:
```
# added by setup_fb4a.sh
export ANDROID_SDK=/opt/android_sdk
export ANDROID_NDK_REPOSITORY=/opt/android_ndk
export ANDROID_HOME=${ANDROID_SDK}
export PATH=${PATH}:${ANDROID_SDK}/emulator:${ANDROID_SDK}/tools:${ANDROID_SDK}/tools/bin:${ANDROID_SDK}/platform-tools
```

This diff introduces an explicit task to install cmake.

### ALTERNATIVE 1

See D54897379.

### ALTERNATIVE 2

Suggested by cortinico:

> Create a mini module called :packages:react-native:ReactAndroid:hermes-engine:cmake-downloader which just triggers an empty cmake build via Android SDK

Reviewed By: cortinico

Differential Revision: D54859484

fbshipit-source-id: f9ecdf78ff408947b1e85e7da4f112c89d3a8c89
2024-03-15 10:16:29 -07:00
Alex Hunt 3515e51856 Use Hermes CDPAgent by default (#43482)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43482

## Context

We are migrating to the new Hermes `CDPAgent` and `CDPDebugAPI` APIs in the modern CDP server (previously `HermesCDPHandler`).

## This diff

Now that we are confident that `CDPAgent` is stable, switch to it by default and remove the previous integration.

- Drop `inspectorEnableHermesCDPAgent` feature flag.
- Rename and replace `HermesRuntimeAgentDelegateNew` as `HermesRuntimeAgentDelegate`.
- Drop "Hermes integration: CDPAgent" log message.
- Update tests.

Changelog: [Internal]

Reviewed By: motiz88

Differential Revision: D54897841

fbshipit-source-id: 8a5212d27f21c54112c0820a2a3611e05d606880
2024-03-15 07:14:40 -07:00
Wojciech Dróżdż 3cf6c64a80 Add onUserLeaveHint support to ReactActivityDelegate (#43488)
Summary:
This PR adds `onUserLeaveHint` support into the `ReactActivityDelegate`. It allows modules to receive an event every time user moves the app into the background. This is slightly different than `onPause` - it's called only when the user intentionally moves the app into the background, e.g. when receiving a call `onPause` should be called but `onUserLeaveHint` shouldn't.

This feature is especially useful for libraries implementing features like Picture in Picture (PiP), where using `onUserLeaveHint` is the [recommended way of auto-entering PiP](https://developer.android.com/develop/ui/views/picture-in-picture#:~:text=You%20might%20want%20to%20include%20logic%20that%20switches%20an%20activity%20into%20PiP%20mode%20instead%20of%20going%20into%20the%20background.%20For%20example%2C%20Google%20Maps%20switches%20to%20PiP%20mode%20if%20the%20user%20presses%20the%20home%20or%20recents%20button%20while%20the%20app%20is%20navigating.%20You%20can%20catch%20this%20case%20by%20overriding%20onUserLeaveHint()%3A) for android < 12.

This is a re-submission of https://github.com/facebook/react-native/pull/42741. The problematic `assert` has been changed to an `if` - it's not a problem if onUserLeaveHint is received from an activity different to the current one, but in that case we shouldn't emit the event.

## Changelog:

[ANDROID] [ADDED] - Added `onUserLeaveHint` support into `ReactActivityDelegate`

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

Test Plan: Tested in the `rn-tester` app - callbacks are correctly called on both old and new architecture.

Reviewed By: javache

Differential Revision: D54905564

Pulled By: cortinico

fbshipit-source-id: 3f24271405f66bf3a9450320a484e522224eefc1
2024-03-15 05:48:59 -07:00
Janic Duplessis a9e6759bb5 Fix maintainVisibleContentPosition on Android during momentum scroll (#43425)
Summary:
When using maintainVisibleContentPosition (mvcp) on Android it doesn't work properly when items are added during a momentum scroll. This happens because the android scrollview momentum scroll animation overrides the scroll position that the mvcp implementation sets [here](https://github.com/facebook/react-native/blob/2d547a3252b328251e49dabfeec85f8d46c85411/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java#L132).

To fix this we need to cancel the momentum scroll animation, update the scroll position then restart the scroll animation with the previous animation remaining momentum.

## Changelog:

[ANDROID] [FIXED] - Fix maintainVisibleContentPosition during momentum scroll

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

Test Plan:
Tested in RNTester on Android with both vertical and horizontal scrollviews using the following code:

```ts
// packages/rn-tester/js/RNTesterAppShared.js

import {
  Button,
  SafeAreaView,
  ScrollView,
  Text,
  View,
} from 'react-native';
import React, {useLayoutEffect, useRef, useState} from 'react';

const generateUniqueKey = () => `_${Math.random().toString(36).substr(2, 9)}`

const initialData = Array.from(Array(100).keys()).map(n => ({
  id: generateUniqueKey(),
  value: n,
}))

function ListItem({item}) {
  const color = `hsl(${item.value * 10}, 75%, 85%)`;

  return (
    <View
      style={{
        backgroundColor: color,
        height: 100,
      }}>
      <Text>List item: {item.value}</Text>
    </View>
  );
}

export default function FlatListRepro() {
  const numToAdd = 10;
  const [numbers, setNumbers] = useState(initialData);
  const ref = useRef();

  const addAbove = () => {
    setNumbers(prev => {
      const additionalNumbers = Array.from(Array(numToAdd).keys())
        .map(n => ({
          id: generateUniqueKey(),
          value: prev[0].value - n - 1,
        }))
        .reverse();

      return additionalNumbers.concat(prev);
    });
  };

  useLayoutEffect(() => {
    ref.current.scrollTo({y: numbers.length * 100, animated: false});
  // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);

  return (
    <SafeAreaView style={{flex: 1}}>
      <View style={{flexDirection: 'row', alignItems: 'center'}}>
        <Button title="Add Above" onPress={addAbove} />
      </View>
      <View>
        <ScrollView
          ref={ref}
          maintainVisibleContentPosition={{
            minIndexForVisible: 0,
          }}
        >
          {numbers.map((item) => (
            <ListItem key={item.id} item={item} />
          ))}
        </ScrollView>
      </View>
    </SafeAreaView>
  )
}
```

Before:

https://github.com/facebook/react-native/assets/2677334/a7102665-991e-449e-9d0a-ef06c370dc71

After:

https://github.com/facebook/react-native/assets/2677334/5430ecb1-26a9-4c92-9f16-c762d75685db

Reviewed By: javache

Differential Revision: D54883984

Pulled By: NickGerleman

fbshipit-source-id: 95fd673a87cf5ada3bf9a7c166bba77ce557c89b
2024-03-14 20:00:56 -07:00
Pieter De Baets a2d277f740 Flag missing DefaultHardwareBackBtnHandler interface in bridgeless too (#43487)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43487

Inconsistent between bridge and bridgeless, but if you forget to implement this interface, ReactDelegate will silently not do anything in bridgeless.

Changelog: [Android] Enforce Activities using ReactDelegate implement DefaultHardwareBackBtnHandler.

Reviewed By: arushikesarwani94

Differential Revision: D54900747

fbshipit-source-id: 5dd31d4f81e4ec37e1c3ee906be836a8a9c6a944
2024-03-14 12:21:47 -07:00
Arushi Kesarwani f345fcf3e8 Support onKeyLongPress in Bridgeless (#43472)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43472

Implement `onKeyLongPress` in Bridgeless

Changelog:
[Android][Breaking] Implement onKeyLongPress in Bridgeless

Reviewed By: cortinico

Differential Revision: D54876052

fbshipit-source-id: 88d572eab087d913205bdfa02dba96b169066393
2024-03-14 12:10:57 -07:00
Arushi Kesarwani b14f7d58e3 Support onKeyDown in Bridgeless (#43466)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43466

Implement `onKeyDown` in Bridgeless by adding it to ReactHostImpl

Changelog:
[Android][Breaking] Implement `onKeyDown` in Bridgeless

Reviewed By: cortinico

Differential Revision: D54870966

fbshipit-source-id: 0f8e48b29679f1bca92f6ac7b6ebf1592cdc5dac
2024-03-14 12:10:57 -07:00
Dmitry Rykun 9700540bec Bring back the UNSET constant to TextAttributeProps (#43491)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43491

This diff brings back the `UNSET` constant to `TextAttributeProps`.
The removal of this constant was an unnecessary breaking change, that has broken several third-party libraries.

Changelog: [Android][Fixed] - Bring back the UNSET constant to TextAttributeProps.

Reviewed By: fabriziocucci

Differential Revision: D54899524

fbshipit-source-id: 368bde77d43f310fd458537d0191d09174fa5167
2024-03-14 11:10:54 -07:00
Pieter De Baets eca4d76d81 Rollout enableBridgelessArchitectureSoftExceptions (#43485)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43485

Already fully rolled out internally.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D54804177

fbshipit-source-id: 128822d408b6943f1f1536eb0101c6684cd45106
2024-03-14 10:31:37 -07:00
Pieter De Baets 7488dc05e8 Use CopyOnWriteArrayList in MemoryPressureRouter (#43486)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43486

We use `CopyOnWriteArrayList` in other places across the React Native codebase, as it assumes that reading happens more frequently than updating. This saves us from needing to synchronize and copy when we access the list of listeners.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D54806272

fbshipit-source-id: d1b54d532edb2af3391a7e4fdc758f705621227d
2024-03-14 10:31:37 -07:00
Pieter De Baets a27e2acef4 Rollout bridgelessArchitectureMemoryPressureHackyBoltsFix (#43478)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43478

This is rolled out internally already. Also exposing `memoryPressureRouter` to match the ReactInstanceManager interface.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D54802021

fbshipit-source-id: b74dcde71296d3925acfc2171d2a77d90960e15e
2024-03-14 10:31:37 -07:00
Bartłomiej Błoniarz 0d7a92b551 Add conditional return in handleRemoveView (#43389)
Summary:
I was recently working on an [issue](https://github.com/software-mansion/react-native-reanimated/issues/5715) in Reanimated where z-index of some views was broken after a Layout Animation was used. The issue was that in some cases we were calling the `removeView` function on a already removed view. On plain Android this wouldn't be an issue, since the `removeView` function ignores such calls. Unfortunately, the `ReactViewGroup.java` implementation maintains a counter of views with user defined z-index. This counter is decremented whenever a call to `removeView` is made, even if the view is not a child of this `ViewGroup`. This PR adds an additional check in the `handleRemoveView` function to unify the `removeView` behavior between Android and react-native.

## Changelog:
[ANDROID] [CHANGED] - Changed the `handleRemoveView` function in `ReactViewGroup.java` to ignore calls for `Views` that are not children of this `ViewGroup`

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

Test Plan: I tested if the `rn-tester` app behaves correctly after those changes.

Reviewed By: NickGerleman

Differential Revision: D54874780

Pulled By: javache

fbshipit-source-id: f1a34947419ef6106ee73b196ae99b7f8c2f7a77
2024-03-14 07:27:29 -07:00
Joe Vilches 50d587b67f Fix clipping children in scroll views (#43464)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43464

While working on filters I noticed that my blurred image was cropped on the scrollview. Setting `overflow: visible` for `contentContainerStyle` did not change anything. Turns out we do not call `setClipChildren(false)` like we do with [ReactViewGroup](https://www.internalfb.com/code/fbsource/[93517723586c]/xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java?lines=145).

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D54640466

fbshipit-source-id: 3f71af3170df8f75887d57643b84e64807856ca6
2024-03-13 19:30:54 -07:00
Joe Vilches 5c58811bd5 Add FilterHelper to get all RenderEffects needed to apply filters (#43357)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43357

This diff adds a class to get the needed RenderEffects to support CSS filters on Android. This diff does not add any of the plumbing for it to actually work, that comes in the next diff, but I figured this was complicated and isolated enough to be on its own.

Note that I did not add blur or drop shadow as those are a bit more involved and I plan on adding them later.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D54603892

fbshipit-source-id: 5780d7c846fdb1116e29e0a940ee02da609b01f5
2024-03-13 19:30:54 -07:00
Arushi Kesarwani b2e1db0fbf Support onConfigurationChanged in Bridgeless (#43463)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43463

Implement `onConfigurationChanged` in Bridgeless by adding it to ReactHostImpl

Changelog:
[Android][Breaking] Implement onConfigurationChanged in Bridgeless

Reviewed By: cortinico, RSNara

Differential Revision: D54792399

fbshipit-source-id: 6851daca815f486f4d839e128a1d740d3fec1996
2024-03-13 15:08:55 -07:00
Nicola Corti e9f66d9c0c Properly handle RR and CMD+M in Bridgeless Mode (#43460)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43460

Currently pressing the menu button (or CMD+M) is broken on Bridgeless mode.
Also pressing RR is not reloading the App.
That's because some Bridgeless API haven't been reimplemented correctly on Android. I'm fixing them here.

Fixes #43451

Changelog:
[Android] [Fixed] - Properly handle RR and CMD+M in Bridgeless Mode

Reviewed By: huntie

Differential Revision: D54852959

fbshipit-source-id: 8fbbdab6818da9177e6db40e45d35258c7f5e236
2024-03-13 10:55:36 -07:00
Pieter De Baets 38cbc082db Apply pointerEvents dispatch check in dispatchGenericMotionEvent (#43433)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43433

Changelog: [Android][Fixed] Views would still receive hover events when nested in a view with pointer-events: "none"

`View` calls `dispatchGenericPointerEvent` from `dispatchGenericMotionEvent` (https://android.googlesource.com/platform/frameworks/base/+/android-4.3_r2.1/core/java/android/view/View.java#7439), so this is the better method to override.

Reviewed By: markv

Differential Revision: D54799820

fbshipit-source-id: 896572b86a0e9053b0138a18ced938a9dc3e60fc
2024-03-13 04:43:12 -07:00
Arushi Kesarwani 5d711f83b5 Support onNewIntent in Bridgeless (#43401)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43401

Implement `onNewIntent` in Bridgeless by adding it to ReactHostImpl

Changelog:
[Android][Breaking] Implement `onNewIntent` in Bridgeless

Reviewed By: fkgozali, RSNara

Differential Revision: D54703159

fbshipit-source-id: fd8589d8131f4fa57188d493331dc68fb38c4520
2024-03-12 19:00:35 -07:00
Samuel Susla 55ed1c26ab delete EventPriority and its uses (#43437)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43437

## Changelog:
[iOS][Removed] - remove EventPriority class and always use the default EventPriority::AsynchronousBatched. This is potentially a breaking change if something in OSS sets a different priority. If a build fails because of this, simply remove the use of EventPriority.

EventPriority::AsynchronousBatched is the default and none of the other priorities are used anymore. This is the first step of removing this concept from the codebase.

Reviewed By: NickGerleman

Differential Revision: D54684311

fbshipit-source-id: 18240e5ee84f489f43b15fd9aab43f3b1b1b4963
2024-03-12 12:08:00 -07:00
Arushi Kesarwani 7b40c8ee5f Support onWindowFocusChange in Bridgeless (#43398)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43398

Implement onWindowFocusChange in Bridgeless by adding it to the ReactHostImpl

Changelog:
[Android][Breaking] Implement onWindowFocusChange in Bridgeless

Reviewed By: javache

Differential Revision: D54670119

fbshipit-source-id: 71f560e5a3bf0e853ac06955e67b8035f1ec0468
2024-03-12 11:52:52 -07:00
Rubén Norte 5833eb59e3 Implement microtasks using new JSI method (#43397)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43397

Changelog: [internal]

This migrates the Hermes-specific use of microtasks to an engine agnostic implementation based on the new JSI method to queue microtasks.

Reviewed By: sammy-SC

Differential Revision: D54687056

fbshipit-source-id: b077ba47b80f7b31c77b7e449def8a56061b0b69
2024-03-12 09:54:11 -07:00
Pieter De Baets 9e2bb4efc3 Fix TimingModuleTest in OSS (#43422)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43422

After my changes in D54496604, this test now requires the main looper to progress as well, to dispatch the right callback.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D54776392

fbshipit-source-id: ba272a08d4b88d1c3301618eed1a03253e615b84
2024-03-12 04:25:17 -07:00
Arushi Kesarwani bdca260679 Fix Bridgeless React Context test in OSS (#43424)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43424

https://github.com/facebook/react-native/pull/43400/ caused a `getCatalystInstanceTest` to fail in OSS due to `bridgelessReactContext` not being a Mock object.

Reviewed By: fkgozali

Differential Revision: D54781539

fbshipit-source-id: 1c784804c31d4b57fe438d49f3ee3eb7034dd7a6
2024-03-11 23:21:05 -07:00
Pieter De Baets da21799ca3 Fix stack overflow in createRootView (#43420)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43420

Calling `mReactDelegate.createRootView` just ends up calling the overridden method in the anonymous inner class. Instead have the base implementation return null, and call super.

Changelog: [Internal]

Reviewed By: jessebwr, janeli-100005636499545

Differential Revision: D54772205

fbshipit-source-id: fc90e6718f9c287e8b86e5768cf7f74d0db06c49
2024-03-11 14:49:52 -07:00
Arushi Kesarwani c6076bca97 Implement getJSCallInvokerHolder for BridgelessCatalystInstance (#43400)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43400

Implement `getJSCallInvokerHolder()` for BridgelessCatalystInstance

Changelog:
[Android][Breaking] Implement `getJSCallInvokerHolder()` for Bridgeless Catalyst Instance

Reviewed By: cortinico

Differential Revision: D54650305

fbshipit-source-id: effac3daaad5173c2fd78ab11bbe3f3156a9c07b
2024-03-11 12:19:49 -07:00
Pieter De Baets 3283202248 Remove createRootView(initialProps) from ReactDelegate (#43365)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43365

Changelog: [Android][Changed] Simplified ReactActivityDelegate to expose a single createRootView method.

Reviewed By: cortinico

Differential Revision: D54434648

fbshipit-source-id: 305c54910a1eac25664507972879c7c6bd633466
2024-03-11 09:40:33 -07:00
Pieter De Baets 641a9c468f Move lifecycle listener inside JavaTimerManager (#43338)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43338

Reafactor JavaTimerManager so more code is shared between bridge and bridgeless.

Note that HeadlessJSTaskContext is not currently configured when using bridgeless.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D54496604

fbshipit-source-id: 2a61294267df372e69f8316dd8f8059625d0a2bd
2024-03-11 09:09:52 -07:00
Alex Hunt cfa39c0a69 Integrate CDPAgent into HermesRuntimeTargetDelegate behind flag (#43353)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43353

## Context

We are migrating to the new Hermes `CDPAgent` and `CDPDebugAPI` APIs in the modern CDP server (previously `HermesCDPHandler`).

## This diff

Integrates `HermesRuntimeAgentDelegateNew` (using the new Hermes `CDPAgent` setup) into `HermesRuntimeTargetDelegate` behind a new feature flag, `inspectorEnableHermesCDPAgent`. This completes the initial integration for all platforms.

Changelog: [Internal]

Reviewed By: motiz88

Differential Revision: D54586162

fbshipit-source-id: 5f26c28af4414d961b1c8c9cb4cd7135bd00b410
2024-03-08 07:29:22 -08:00
Pieter De Baets 5ed3057822 Make ReactActivityDelegate methods public (#43367)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43367

Enable `ReactActivityDelegate` to be used outside of `ReactActivity` as well.

Changelog: [Internal]

Reviewed By: arushikesarwani94

Differential Revision: D54634339

fbshipit-source-id: 977e0da689d5a827feca89a5dcc9416ad5178334
2024-03-08 07:04:12 -08:00
Tomek Zawadzki 642b4e5c2c Expose react_render_textlayoutmanager via prefab (#43381)
Summary:
The `react_render_textlayoutmanager` was not exposed via prefab. I'm adding it to make possible for react-native-live-markdown to integrate on top of React Native via prefab. Based on https://github.com/facebook/react-native/issues/36166.

## 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] [CHANGED] - Expose `react_render_textlayoutmanager` via prefab.

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

Reviewed By: javache

Differential Revision: D54676207

Pulled By: cortinico

fbshipit-source-id: 90e3b90ff842250bf1e3abcc0c54f057b68a82fd
2024-03-08 04:32:44 -08:00
Arushi Kesarwani c771011fed Support onActivityResult in Bridgeless (#43351)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43351

Implement `onActivityResult` on Bridgeless

Changelog:
[Internal] internal

Reviewed By: cortinico

Differential Revision: D54574139

fbshipit-source-id: f2369077199186ac6ef0187b5dfe7ed95f3b87fc
2024-03-06 13:19:55 -08:00
Rubén Norte c645646a20 Create new flag to disable the last part of the notifications for mount hooks on Android (#43349)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43349

Changelog: [internal]

We still haven't found the root cause of some of the crashes we're seeing in the experiments to enable mount hooks on Android.

This adds a new feature flag to skip part of the mount hooks pipeline to see if we can scope the investigation to that specific part (where we query the root tree in the base revision from the mounting coordinator).

Reviewed By: sammy-SC

Differential Revision: D54587739

fbshipit-source-id: 792aa8b06808e96638d1bba072bf4060ec492bd2
2024-03-06 12:41:49 -08:00
Rubén Norte fafd64e9c3 Migrate mount hooks flag to new system (#43350)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43350

Changelog: [internal]

Mount hooks have been shipped on iOS, so this removes the flag for them.

On Android, we're still testing them so it's worth moving them to the new system and scoping them to that platform.

Reviewed By: sammy-SC

Differential Revision: D54587740

fbshipit-source-id: d074927fee1a967bd3928970c31975d07cd393bb
2024-03-06 12:41:49 -08:00
Rubén Norte a66f4450e5 Improve logic to report mounted surfaces (#43337)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43337

Changelog: [internal]

Mount instructions and listeners are only called from the UI thread, so there's no need to have synchronization mechanisms for concurrency.

We're also scheduling mount hooks notifications once, but subsequent calls are ignored instead of accumulated to be notified together. This also changes that to collect all the surface IDs in the array that is read on notification.

Reviewed By: sammy-SC

Differential Revision: D54547194

fbshipit-source-id: a861e3b0113914aae5325c1486bcf8acd50eef79
2024-03-06 12:41:49 -08:00
Samuel Susla 9426d249cb delete butter module (#43300)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43300

changelog: [internal]

not used, let's delete

Reviewed By: fkgozali

Differential Revision: D54462125

fbshipit-source-id: f6cb5199e00e139c0340ad5c7b338acfb99f0d15
2024-03-06 08:38:55 -08:00
Tomek Zawadzki 1c69100a2b Expose rrc_text via prefab (#43275)
Summary:
The `rrc_text` was not exposed via prefab. I'm adding it to make possible for react-native-live-markdown to integrate on top of React Native via prefab. Based on https://github.com/facebook/react-native/issues/36166.

## 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] [CHANGED] - Expose `rrc_text` via prefab.

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

Reviewed By: cipolleschi

Differential Revision: D54536468

Pulled By: cortinico

fbshipit-source-id: 8c4ef983467bfc46930f10bf7bd95761c2d11788
2024-03-06 03:54:46 -08:00
Pieter De Baets fb9872d4fe Fix DefaultReactNativeHost assuming lazyViewManagers are always available (#43334)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43334

cortinico flagged that bridge + fabric regressed in 0.74, likely due to D53406841.

Changelog: [Android][Fixed] Fix registration of ViewManagers in new renderer when not using lazyViewManagers.

Reviewed By: fkgozali

Differential Revision: D54551645

fbshipit-source-id: 0783030cd0d2900a3a254ae04c9ea4e51035272a
2024-03-06 03:11:33 -08:00
Alex Hunt b5117520fc Enforce sorting of feature flag definitions (#43329)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43329

Improve maintainability of this file, in particular reducing the probability of a merge conflict for new entries.

Changelog: [Internal]

Reviewed By: rubennorte

Differential Revision: D54539469

fbshipit-source-id: dc2fca42b4490d87c532b21043b0855d8d1a894d
2024-03-05 17:27:23 -08:00
Ryan Linton 0dc5c5f1f4 Update bridge to handle long values (#43158)
Summary:
This adds support for 64 bit integer (long) values to the Android bridge. Per the wide gamut color [RFC](https://github.com/react-native-community/discussions-and-proposals/pull/738) Android encodes wide gamut colors as long values so we need to update the bridge to support 64 bit integers as well since these classes will soon receive those values from native.

## Changelog:

[ANDROID] [ADDED] - Update bridge to handle long values

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

Test Plan: I added tests where I could for long types and truncation. I would like to add tests for ReadableNativeArray and ReadableNativeMap but I'm not sure how to go about mocking HybridData.

Reviewed By: cipolleschi

Differential Revision: D54276496

Pulled By: NickGerleman

fbshipit-source-id: 1e71b5283f662748beef1bdb34d9c86099baecb0
2024-03-04 19:07:53 -08:00
Pieter De Baets 5f45700bd0 Fix NullPointerException thrown on startup (#43293)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43293

Was debugging this, and found that this exception was being thrown due to `DefaultBindingsInstaller`, which was an invalid hybrid object. The ReactInstance initializer fully supports this being null, so let's use that as default.

Changelog: [Android][Fixed] NullPointerException is no longer ignored in MessageQueueThreadHandler

Reviewed By: sammy-SC

Differential Revision: D54434417

fbshipit-source-id: 52417b390061eface0f0578e32796d3a85303e03
2024-03-04 04:26:36 -08:00
Tomek Zawadzki adc9e5b0fa Expose rrc_textinput via prefab (#43274)
Summary:
The `rrc_textinput` was not exposed via prefab. I'm adding it to make possible for react-native-live-markdown to integrate on top of React Native via prefab. Based on https://github.com/facebook/react-native/issues/36166.

## 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] [CHANGED] - Expose `rrc_textinput` via prefab.

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

Reviewed By: cipolleschi

Differential Revision: D54482657

Pulled By: cortinico

fbshipit-source-id: ca7f4127f1808f841d88925238666e837de75bd0
2024-03-04 04:23:20 -08:00
Pieter De Baets 24e6722cb4 Add TODOs for missing ReactActivityDelegate methods (#43294)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43294

These are gated by `ReactFeatureFlags.enableBridgelessArchitecture` and are missing support. They should be evaluated for backwards compatibility

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D54422143

fbshipit-source-id: b35b60f17d68d412a354b20e02fb6bbf591c40b0
2024-03-04 03:53:42 -08:00
Nick Gerleman 9ce360be7e Enable Clang Tidy (#43299)
Summary:
X-link: https://github.com/facebook/litho/pull/976

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

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

Add the React Clang Tidy config to Yoga, run the auto fixes, and make some manual mechanical tweaks.

Notably, the automatic changes to the infra for generating a Yoga tree from JSON capture make it 70% faster.

Before:
{F1463947076}

After:
{F1463946802}

This also cleans up all the no-op shallow const parameters in headers.

{F1463943386}

Not all checks are available in all environments, but that is okay, as Clang Tidy will gracefully skip them.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D54461054

fbshipit-source-id: dbd2d9ce51afd3174d1f2c6d439fa7d08baff46f
2024-03-04 02:28:02 -08:00
David Vacca 1d8dea54b6 Mark classes of package uimanager as @Nullsafe
Summary:
All these classes are NullSafe, let's mark them as NullSafe(Local) to ensure lint detect errors in the future

bypass-github-export-checks

changelog: [internal] internal

Reviewed By: javache

Differential Revision: D54027179

fbshipit-source-id: 4840becb8374ddbf8091be1e5e593289d18c78e0
2024-03-03 17:38:19 -08:00
Arushi Kesarwani 7d47781046 Fix CI by adding explicit visibility modifier to BridgelessCatalystInstance (#43296)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/43296

Fix CI by adding explicit visibility modifier to the newly added `BridgelessCatalystInstance` class. In Kotlin, in explicit API mode, which is usually the default mode for Kotlin, we must explicitly specify one of the modifiers for every declaration to make it clear and explicit.

Changelog:
[Internal] internal

Reviewed By: makovkastar

Differential Revision: D54442485

fbshipit-source-id: 4409ff810a09cc4fadcd2ccf21f7fbac3015f413
2024-03-01 18:13:28 -08:00
Nick Gerleman 9c0edaec92 Clang Tidy in more places, running more checks
Summary:
Inspired by some new C++ code in `RKJSModules` where Clang Tidy  could have caught some C++ quirks and shown them in Phabricator, this enables Fabric's Clang Tidy checks in more places, and enables more checks.

1. Hoist the renderer `.clang-tidy` to `xplat/js`, and duplicate to `xplat/ReactNative`
2. Remove all the scattered `.clang-tidy` files in RN which are less aggressive
3. Sort the list of checks
4. Add the following new checks:
    1. `bugprone-incorrect-enable-if`
    1. `bugprone-infinite-loop`
    1. `bugprone-optional-value-conversion`
    1. `bugprone-redundant-branch-condition`
    1. `bugprone-shared-ptr-array-mismatch`
    1. `bugprone-signed-char-misuse`
    1. `bugprone-too-small-loop-variable`
    1. `bugprone-unique-ptr-array-mismatch`
    1. `bugprone-unsafe-functions`
    1. `bugprone-unused-raii`
    1. `cppcoreguidelines-avoid-const-or-ref-data-members`
    1. `cppcoreguidelines-avoid-non-const-global-variables`
    1. `cppcoreguidelines-init-variables`
    1. `cppcoreguidelines-interfaces-global-init`
    1. `cppcoreguidelines-missing-std-forward`
    1. `cppcoreguidelines-prefer-member-initializer`
    1. `facebook-hte-BadEnum`
    1. `facebook-hte-MissingStatic`
    1. `misc-header-include-cycle`
    1. `misc-misplaced-const`
    1. `modernize-use-constraints`
    1. `modernize-use-designated-initializers`
    1. `modernize-use-starts-ends-with`

I did not auto apply fixes, since even the existing set can sometimes (rarely) generate invalid code.

Changelog: [Internal]

Reviewed By: ksheedlo

Differential Revision: D54411398

fbshipit-source-id: 4958d880969ae07a03fa4f62ba68ee44790487ca
2024-03-01 15:21:48 -08:00