Commit Graph
21864 Commits
Author SHA1 Message Date
Samuel SuslaandFacebook GitHub Bot 33b600236a Simplify ModalHostView plugin setup
Summary:
Changelog: [internal]

Provide a default plugin function that provides core `RCTModalHostViewComponentView`. This makes for easier setup for standalone app migration.

Reviewed By: JoshuaGross, shergin

Differential Revision: D26150091

fbshipit-source-id: d39723b99c590d1a33fb7b628f809aa12b2f7589
2021-02-04 03:46:00 -08:00
Tim YungandFacebook GitHub Bot c8c975f0d7 RN: Remove RCTDeviceEventEmitter Checks
Summary:
Removes the checks in `RCTDeviceEventEmitter` that were initially added to migrate call sites to other modules when `NativeEventEmitter` was introduced.

This set of checks is problematic for a few reasons:

1. Does not cover many other events that have since been introduced, so the small list covered is arbitrary.
2. Prevents composition of `RCTDeviceEventEmitter` in the implementation of those modules.
3. Code bloat.

Changelog:
[General][Removed] - `RCTDeviceEventEmitter` no longer throws for `SttatusBar`, `Keyboard`, and `AppState` events. However, you are still recommended to use the more appropriate modules for listening to these events.

Reviewed By: lunaleaps

Differential Revision: D26163602

fbshipit-source-id: 316287bfdf2947fe85d022a3f83a205e89c432ba
2021-02-03 22:04:40 -08:00
Ramanpreet NaraandFacebook GitHub Bot 2bf866e401 Make NativeModules immediately initializable
Summary:
## Problem:
NativeModules can only be initialized after we mark them initializable on the NativeModules thread. This work is scheduled in ReactInstanceManager.setupReactContext(), after we schedule the execution of the JS bundle on the JavaScript thread in ReactInstanceManager.createReactContext():

https://www.internalfb.com/intern/diffusion/FBS/browse/master/xplat/js/react-native-github/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java?commit=9b58f58b8eb12281567b8d24d6d000e868e61a1f&lines=1256-1257%2C1331%2C1334-1335%2C1333-1334

So, if the timings don't work out, the JavaScript thread could start executing the JS bundle before the NativeModule thread makes all NativeModules initializable. In this case, those NativeModule will just appear to be null in C++/JavaScript.

## Fix
This diff makes all NativeModules initializable immediately after  their ModuleHolder is created. ModuleHolder.markInitializable() simply initializes initializes modules that were eagerly created.

Changelog: [Android][Fixed] - Make NativeModules immediately initializable

Reviewed By: JoshuaGross

Differential Revision: D26233372

fbshipit-source-id: a9223ff093da5b80781169be88e6ec9516c7a29b
2021-02-03 18:42:43 -08:00
Andrew CoatesandFacebook GitHub Bot f66dcab89f Try to install the SDK up to 3 times (#30742)
Summary:
The windows CI tests are flaky due to network failures trying to install the android SDK.  This modifies the CI to retry a couple of times if the first install fails.

CircleCI will timeout the command if there is no output to the console for 10mins.  I've added a timeout to the choco command for 9mins, which should cause it to timeout before the circleci one (assuming that it spends a non-zero time with output before hanging on the download)  On successful downloads runs the download seems to be substantially quicker than the 10min timeout.

I added --force and --forcedependencies on the retries, otherwise if the jdk package fails, but the androidsdk package installs, the retry will still not install the jdk package.

This doesn't fully fix the issue, since the CI is still hitting the network, which could be flaky all 3 attempts.  But hopefully it'll improve the success rate somewhat.  -- Really the Windows CI job should have some kind of docker image or something that already has all the prereqs installed.

## Changelog

[Internal] [Fixed] - Windows CI Android SDK install retry

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

Test Plan: We'll see if the windows CI becomes more reliable

Reviewed By: fkgozali

Differential Revision: D26231499

Pulled By: hramos

fbshipit-source-id: f4a7f2132b3317f4763ddadcd909ef1c2a43dc2f
2021-02-03 15:01:56 -08:00
Lulu WuandFacebook GitHub Bot 5d8e75937d Rename "ReactInstanceManagerDevHelper" to "ReactInstanceDevHelper" so it doesn't look like Bridge-specific
Summary: Changelog: [Internal]

Reviewed By: PeteTheHeat

Differential Revision: D26199747

fbshipit-source-id: c6fe7d07e15940d08cc726c6631dd387910b40a0
2021-02-03 14:39:40 -08:00
Ramanpreet NaraandFacebook GitHub Bot 77ba2ad2f2 Delete NewJavaNativeModule
Summary:
`xbgs NewJavaNativeModule` shows this isn't used anywhere.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D26230382

fbshipit-source-id: daf9501115b1c094d22128144b5ebc29ae39c429
2021-02-03 13:50:05 -08:00
David VaccaandFacebook GitHub Bot 1e6d2e983a Remove strong reference from TM infra
Summary:
This diff refactor strong references on TM infra to use weak references and avoid leaking objects

changelog: [internal] internal

Reviewed By: RSNara

Differential Revision: D26229814

fbshipit-source-id: d4a327dba227378d23764433d5917eb4378a4453
2021-02-03 12:56:17 -08:00
Samuel SuslaandFacebook GitHub Bot 76a1db4b20 Fix Jest e2e by exposing accessibilityLabel in RCTParagraphComponentView
Summary: Changelog: [internal]

Reviewed By: shergin

Differential Revision: D26225118

fbshipit-source-id: 28e7292663ba8faf5d11f04da754dbec33efee90
2021-02-03 12:22:07 -08:00
Peter ArganyandFacebook GitHub Bot 001dbf2068 Refactor notification subscriptions in RCTDevLoadingView
Summary:
In bridegless mode, `setBridge` is never called on native modules. This diff refactors out some setup logic into the module's init method.

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D26211620

fbshipit-source-id: 7a9910198852dea5ac679762aa93dfea6fc47d70
2021-02-03 11:53:57 -08:00
Ramanpreet NaraandFacebook GitHub Bot 690a29355e Make PaperUIManager.getViewManagerConfig log thrown exceptions
Summary:
When NativeUIManager.getConstantsForViewManager throws an exception from native, we just swallow that exception and set null as the view config. Instead, we should log that an error occurred. This way, we can tell if the NativeModule sync method call returned undefined, or if the NativeModule sync method call thew an exception.

I'll take a look and see if we can add this logging higher up in the native stack, so that we can actually capture the stack information from this NativeModule sync method call failure.

Created from Diffusion's 'Open in Editor' feature.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D26227379

fbshipit-source-id: 02b516d247f82f873f059005e6a2cc6f2a64fdb5
2021-02-03 11:47:58 -08:00
Riley DulinandFacebook GitHub Bot 4db1b3e8cd Change JSI compiler options to be private
Summary:
JSI had its compiler options like `-Wno-non-virtual-dtor` exported to targets
that depended on the JSI library.
These flags should be private to the compiler invocation on the `jsi.cpp` translation
unit and don't need to be shared with any libraries pulling in `jsi.h`.

Fixes #448

Changelog:
[Internal] - Don't export C++ warnings from JSI CMake files

Reviewed By: Huxpro

Differential Revision: D26212636

fbshipit-source-id: bd95580f89694189975a49660c439e4e5f7c5afc
2021-02-03 10:42:59 -08:00
Ramanpreet NaraandFacebook GitHub Bot 13f100f788 Move TurboModuleManager creation into ReactInstanceManager
Summary:
See title.

Changelog: [Android][Changed] - Move TurboModuleManager creation into ReactInstanceManager

Reviewed By: mdvacca

Differential Revision: D26193053

fbshipit-source-id: fe92636f0cb3dca65fa919ac5df8931b693f76c5
2021-02-02 20:50:31 -08:00
Ramanpreet NaraandFacebook GitHub Bot eb7e89e286 Register TurboModuleManagerDelegate builders without JSIModules
Summary:
How does an application register a TurboModuleManagerDelegate with ReactInstanceManager?
1. Call ReactInstanceManagerBuilder.setReactPackageTurboModuleManagerDelegateBuilder(ReactPackageTurboModuleManagerDelegate.Builder)
2. Override ReactNativeHost.getReactPackageTurboModuleManagerDelegateBuilder()

Changelog: [Android][Added] - Introduce API to allow applications to register TurboModuleManagerDelegates with ReactInstanceManager

Reviewed By: mdvacca

Differential Revision: D26193055

fbshipit-source-id: bf82e63e6ab1c0c8f12bada92ac6852c992ec9cb
2021-02-02 20:50:30 -08:00
Ramanpreet NaraandFacebook GitHub Bot 48e4e34107 Give RNTesterTurboModuleManagerDelegate a Builder
Summary:
We'll pass these ReactPackageTurboModuleManagerDelegate.Builders to ReactInstanceManager. ReactInstanceManager will then use these builders to initialize the TurboModule system. To allow TurboModules to work with RNTester, we have to switch RNTester over to using these Builders.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D26193054

fbshipit-source-id: d98b857226be3ebaa22b1b734a4e76c0f4be6608
2021-02-02 20:50:30 -08:00
Ramanpreet NaraandFacebook GitHub Bot 2a1b5193f7 Allow ReactInstanceManager to create TurboModuleManager
Summary:
Previously, owner(TurboModuleManager) used to depend on owner(ReactInstanceManager). Now, owner(ReactInstanceManager) depends on owner(TurboModuleManager).

**Rationale:** This allows ReactInstanceManager to create TurboModuleManager.

## Changes
We moved ReactPackageTurboModuleManagerDelegate to com.facebook.react.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D26163661

fbshipit-source-id: 3ebff16ef2aa77e20bb55500ed44c9214acb91dd
2021-02-02 20:50:30 -08:00
Tim YungandFacebook GitHub Bot 6d1aca806c RN: Delete Linking.removeEventListener
Summary:
Deletes `Linking.removeEventListener` in favor of returning the `EventSubscription` returned by `NativeEventEmitter.addListener`.

Changelog:
[General][Added] - `Linking.addEventListener` now returns a subscription with a `remove()` method.
[General][Removed] - Removed `Linking.removeEventListener`. Instead, call `remove()` on the subscription returned by `Linking.addEventListener`.

Reviewed By: rubennorte, wtfil

Differential Revision: D26155896

fbshipit-source-id: 1176ec6eae1c0fff2d68acf5411a18da530b212a
2021-02-02 19:36:21 -08:00
Ivan MoskalevandFacebook GitHub Bot 07e4953514 Invoke node directly in generate-specs.sh (#30781)
Summary:
Currently, Codegen bash wrapper (`generate-specs.sh`) for Xcode invokes JS-based Codegen tooling via `yarn --silent node <...>`. This breaks both:

- when Yarn is not installed (if NPM is used), for obvious reasons
- when Yarn v2 ("Berry") is active

This PR changes the way `generate-specs.sh` locates `node` executable to the following algorithm:

- use the path provided in the `NODE_BINARY` env var
- if `NODE_BINARY` env var is not defined, find `node` with `command -v node`

## Changelog

[iOS] [Fixed] - Fix Codegen silently failing when Yarn is not installed, or when Yarn v2 is active.

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

Test Plan:
### Case 1 (no Yarn installed)

1. Ensure `yarn` is not present in PATH
2. Run Xcode build
3. Check that Codegen artifacts are produced

### Case 2 (Yarn v2 is used)

1. Ensure `yarn` is running in the v2 ("Berry") mode
2. Run Xcode build
3. Check that Codegen artifacts are produced

Reviewed By: fkgozali

Differential Revision: D26187081

Pulled By: hramos

fbshipit-source-id: 77d3089f523b8c976d8223b77ff9553cb6cf68a5
2021-02-02 15:10:48 -08:00
Frieder BluemleandFacebook GitHub Bot a74347e7f9 Delete .nvmrc (#30765)
Summary:
Tiny PR that removes an old orphaned `.nvmrc` file (added in 2018 and not touched since then).

Most likely the project does not work with Node.js 8.11.3 anymore. There is (no longer) a need to attempt to strictly enforce a specific version client-side. `package.json` _already_ declares
```
"node": ">=12"
```
in the `engines` section, so we should be good.

## Changelog

[General] [Removed] - Delete .nvmrc

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

Test Plan: Nothing to test...

Reviewed By: hramos

Differential Revision: D26190114

Pulled By: TheSavior

fbshipit-source-id: 515807da8a9e28fd28c12e8b5416ed125436341c
2021-02-02 15:06:50 -08:00
Samuel SuslaandFacebook GitHub Bot 177e147335 Add tests for AttributedStringBox
Summary: Changelog: [internal]

Reviewed By: JoshuaGross

Differential Revision: D26168698

fbshipit-source-id: 4416c01a3d4b3721964e2c73e145fb346f45a66a
2021-02-02 14:18:25 -08:00
Micha ReiserandFacebook GitHub Bot 93377ff508 Remove "use strict" directive from ES Modules
Summary:
ES Modules implicitly enable strict mode. Adding the "use strict" directive is, therefore, not required.

This diff removes all "use strict" directives from ES modules.

Changelog:

[Internal]

Reviewed By: motiz88

Differential Revision: D26172715

fbshipit-source-id: 57957bcbb672c4c3e62b1db633cf425c1c9d6430
2021-02-02 11:12:56 -08:00
Tim YungandFacebook GitHub Bot 41b6884a1b RN: Implements EventSubscription
Summary:
Changes the to-be-legacy `_EventSubscription` and `_EmitterSubscription` classes to implement the event-agnostic `EventSubscription` interface.

This interface is valuable because it abstracts away the event definitions.

Changelog:
[Internal]

Reviewed By: lunaleaps

Differential Revision: D26155911

fbshipit-source-id: f94280976d4f9219f4780ac8fae0d5fbc1865386
2021-02-01 17:50:22 -08:00
Tim YungandFacebook GitHub Bot 70cd569e7e RN: Simplify DevSettings Implementation
Summary:
Simplifies the implementation of `DevSettings`. The fact that it uses `NativeEventEmitter` is an implementation detail and does not need to be exposed via inheritance.

This also enables more code to be removed from production builds (because the development implementation is now statically enclosed by `__DEV__`).

Changelog:
[General][Changed] - `DevSettings` no longer inherits from `NativeEventEmitter`

Reviewed By: RSNara

Differential Revision: D26140148

fbshipit-source-id: 99fa9d0c6ce8e365f89936aa12a4720f7a04b984
2021-02-01 17:50:22 -08:00
Tim YungandFacebook GitHub Bot f5f47879b8 RN: Delete NativeEventEmitter Options
Summary:
Removes the `options` argument in the `NativeEventEmitter` constructor. It was only being used for an experimental flag that is no longer necessary.

Changelog:
[General][Removed] - Removed second optional argument of `NativeEventEmitter` constructor

Reviewed By: RSNara

Differential Revision: D26138239

fbshipit-source-id: 0481ce44f0464668e3a6e7ffaf079d17c87afd42
2021-02-01 17:50:21 -08:00
Peter ArganyandFacebook GitHub Bot d54b286b97 Make rn_xplat_cxx_library and rn_apple_library target iOS 11
Summary:
This forces individual RN libraries to target SDK 11+

Changelog: [iOS] Make rn_xplat_cxx_library and rn_apple_library target iOS 11

Reviewed By: shergin

Differential Revision: D26179411

fbshipit-source-id: 898201943164ff8e53924eee5ca877103bf0f62a
2021-02-01 16:34:57 -08:00
Janic DuplessisandFacebook GitHub Bot 12fccdeea3 Make codegen more reliable on iOS (#30792)
Summary:
This addesses a few issues I noticed while migrating my app to the new build-time codegen on iOS.

1. I noticed random failures because of codegen on iOS. This is mostly due to the fact the codegen output files are not specified in the xcode script. The only reason it works relatively fine currently is because the codegen output is inside the input files directory. This has the side effect of causing files to be regenerated every build, then causes all core modules to be recompiled which adds up a significant amount of time to rebuilds. To fix this I added the generated files to the script phase output and moved the FBReactNativeSpec dir outside of the codegen source (Libraries). I moved it to the React directory as this seemed to make sense and is where a lot of iOS files are as well as the core modules. Note this might require internal changes. This removes the circular dependency between our build phase input and output so consecutive builds can be cached properly.

2. Add `set -o pipefail` to the xcode script, this helped propagate errors properly to xcode because of the `| tee` pipe so it fails at the script phase and not later with a header not found error. Also add `2>&1` to pipe stderr to stdout so errors are also captured in the log file.

3. Add the `-l` flag to the bash invocation to help finding the yarn binary. With my setup yarn is added to the system PATH in my user .profile. Adding this file will cause bash to source the user environment which xcode scripts does not by default. I think this will help with most setups.

4. If yarn is not found the `command -v yarn` would make the script exit without any output because of the -e flag. I made a change to ignore the return code and check later if YARN_BINARY is set and have an explicit error message if not.

## Changelog

[iOS] [Fixed] - Make codegen more reliable on iOS

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

Test Plan:
Tested various project states to make sure the build always succeeds in RN tester:

- Simulate fresh clone, remove all ignored files, install pods, build
- Build, delete FBReactNativeSpec generated files, build again
- Build, build again, make sure FBReactNativeSpec is cached and not rebuilt
- Make the script fail and check that xcode shows the script error logs properly

![image](https://user-images.githubusercontent.com/2677334/105891571-c8badd00-5fde-11eb-839c-259d8e448523.png)

Note: Did not test fabric

Reviewed By: fkgozali

Differential Revision: D26104213

Pulled By: hramos

fbshipit-source-id: e18d9a0b9ada7c0c2e608d29ffe88087f04605b4
2021-02-01 14:39:25 -08:00
Joshua GrossandFacebook GitHub Bot 6eea5974cf LayoutAnimations.js: ensure that onComplete callback is always called, even if LayoutAnimations is disabled on iOS
Summary:
See comments. On iOS in Fabric, LayoutAnimations is only conditionally enabled; whereas on Android it's always enabled. That means for code on iOS that relies on the onComplete callback, there might be bugs.

Ensure the callback is always called on iOS by racing a timer with the animation completion.

This will be deleted before Fabric "ships" fully.

Impact is minimal since this change is scoped to only run on iOS and under Fabric.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D26166237

fbshipit-source-id: 9a07a402845c379e1511f199eef3d3e249e1eb06
2021-02-01 11:57:33 -08:00
Valentin SherginandFacebook GitHub Bot 1ee87e1f97 Fabric: Simplifying the integration among RCTSurfacePresenter, RCTMountingManager, and RCTFabricSurface
Summary:
Changes:
* RCTMountingManager got two dedicated methods that designate some external view as a Surface viewport;
* The wiring between views now happens right in `start` and `stop` methods (because there is no reason to do it later); now it's symmetrical and straightforward;
* A couple of Surface legacy statuses were removed; they are not used and do not convey useful information anyway.
Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D26095434

fbshipit-source-id: 37828e093a40a1ad22ad78f110c18a8f27781ba7
2021-02-01 11:41:16 -08:00
Tim YungandFacebook GitHub Bot a81b7d18fa RN: Cleanup RCTNetworking (iOS)
Summary:
Refactors `RCTNeworking.ios.js` so that event registration does not get passed along to `NativeNetworkingIOS`. Instead, we go straight to `RCTDeviceEventEmitter` (which is what `NativeEventEmitter` ultimately does when `nativeModule` is not supplied).

This optimization reduces overhead of making network requests, and it is made possible because `NativeNetworkingIOS` does not actually do any meaningful work when `startObserving` is invoked.

Changelog:
[iOS][Removed] - Removed event methods except `addListener` from `Networking`

Reviewed By: lunaleaps

Differential Revision: D26137965

fbshipit-source-id: b6e0288689459ddb8ecf8d34dce6250d3b0ecb59
2021-02-01 11:04:37 -08:00
Samuel SuslaandFacebook GitHub Bot 88c43490a1 Fix initial placeholder in multiline TextInput
Summary:
Changelog: [internal]

`[self _invalidatePlaceholderVisibility]` wasn't triggered in multiline text input in Fabric. Even in Paper it was triggered what to me seems like coincidence rather than intention (I might be wrong). This is more explicit, visibility of placeholder text needs to be re-evaluated every time placeholder text is changed.

Reviewed By: shergin

Differential Revision: D26172754

fbshipit-source-id: 3a767d333b79c266a3d70a96883b1289fff16750
2021-02-01 10:59:38 -08:00
Samuel SuslaandFacebook GitHub Bot 64d9364095 Copy data in updateState instead of moving them
Summary:
Changelog: [internal]

`UpdateState` lambda can be called multiple times because of state auto-repeater. But previously we moved state data into the lambda and then moved it into constructor shared data constructor. If auto-repeater called update state lambda again, the data would be in invalid state.
To fix this, state data has to be copied into shared data constructor.

Background executor was more likely to kick trigger state auto-repeater, that's why the crash was happening in BE experiment.
State-autorepeater was enabled at the end of December. That explains why the crash started appearing in v301 (prior to 301, this crash was not happening).

Reviewed By: JoshuaGross, shergin

Differential Revision: D26173800

fbshipit-source-id: 46d1bae226e607d04d5ba28e6c2a8ec86258593a
2021-02-01 10:17:56 -08:00
Valentin SherginandFacebook GitHub Bot d6341c4fad Fabric: Using ShadowNodeTraits::Trait::MeasurableYogaNode in ParagraphShadowNode
Summary:
Similarly to D25937710 (https://github.com/facebook/react-native/commit/3d166a0a4c08fdaae9174625d7baba247f84fdea) we are moving away from using imperative methods that dirty Yoga node.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D26069354

fbshipit-source-id: 3d4e1bd4715a204d90174c7ea29b56438778bfa3
2021-01-31 22:21:51 -08:00
Samuel SuslaandFacebook GitHub Bot 67699ba9f2 Fix test setup in attributedString module
Summary:
changelog: [internal]

Tests were not running because of `#ifdef ANDROID` directive.
Tests had leaks and were using asserts instead of `EXPECT_EQ`.

Reviewed By: JoshuaGross

Differential Revision: D26168536

fbshipit-source-id: 453fe06a965c48f54d4bad6fe6653b6f45c39ccd
2021-01-31 15:10:58 -08:00
Samuel SuslaandFacebook GitHub Bot dce1863bf9 Put moved from AttributedStringBox into consistent state
Summary:
Changelog: [internal]

Fixes an inconsistency that `AttributedStringBox` can get into.

Example of inconsitency:
After `AttributedStringBox` is moved (move constructor or move assignment operator), moved from `AttributedStringBox` needs to be set into blank state. Its mode needs to be `Value`, `opaquePointer_` should be nullptr and `value_` empty AttributedString. This was not the case before as the default move constructor and operator would leave `mode_` as `OpaquePointer` but ivar representing opaquePointer would be nullptr.

Reviewed By: JoshuaGross

Differential Revision: D26168142

fbshipit-source-id: eed2a7c3a165ae5e1f269822c12042c6ccbd3388
2021-01-31 15:10:58 -08:00
Valentin SherginandFacebook GitHub Bot 9d4096b296 Fabric: Using SurfaceManager for testing SurfaceHandler infrastructure
Summary:
The diff implements a way to use `SurfaceHandler` without using `SurfaceHandler` directly for testing and transitioning purposes. If a boolean flag is enabled all calls related to surface management will be redirected to an appropriate `SurfaceHandler` via `SurfaceManager`.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D26125955

fbshipit-source-id: 8760c237d486897ea0c32867c921d445a7f24edc
2021-01-29 17:47:51 -08:00
Nadiia DandFacebook GitHub Bot f5f69af87f Change test file names to align with the set convention
Summary:
Changelog:
[General][Changed] Change RNTester example name

Reviewed By: lunaleaps

Differential Revision: D26129706

fbshipit-source-id: 53e906f26dd18ef8bceca2e3700e3403e3d0421a
2021-01-29 10:15:42 -08:00
Valentin SherginandFacebook GitHub Bot 7a290d1596 Fabric: Introducing SurfaceHandler
Summary:
This implements `SurfaceHandler`, a new primitive for controlling the Surface life-cycle that ensures ownership, preserves state, maintains internal invariants, and simplifies surface manipulation from the application side.

For now, all this is an unused code. The coming diff will introduce an experiment that will route all surfaceId-based APIs to SurfaceHandler-based ones.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D24290777

fbshipit-source-id: f2ff2b58e6d46e971a548f9f02113a1c783c4940
2021-01-29 07:54:19 -08:00
Peter ArganyandFacebook GitHub Bot 7186c4de4f Only show DevMenu on shake if RCTView is visible
Summary: Changelog: [iOS] Only show Dev Menu on shake if RN view is visible

Reviewed By: fkgozali

Differential Revision: D26138659

fbshipit-source-id: e2db287728675c7ead5fcbf569ed591638e2187e
2021-01-28 19:11:12 -08:00
Joshua GrossandFacebook GitHub Bot b0ec350568 Detect startSurface race-conditions and warn silently
Summary:
Crash in debug, log a warning and continue in production.

Changelog: [Internal]

Differential Revision: D26133167

fbshipit-source-id: 60279363a3e90d592e7ddbde188c13cda89c28c6
2021-01-28 16:22:06 -08:00
Tim YungandFacebook GitHub Bot ef765d423c RN: Move TOUCH_TARGET_DEBUG to PressabilityDebug
Summary:
This is just cleanup. When I migrated components to `Pressability` instead of `Touchable`, I left `TOUCH_TARGET_DEBUG` alone to minimize moving pieces. But I had created `PressabilityDebug` as the eventual destination for this logic.

Now that `Text` is migrated away from `Touchable` (see D26106824 (https://github.com/facebook/react-native/commit/f275514f275fdc404a853a1a2ab46620eea484f0)), this cleans up the final internal reference to `Touchable`.

Changelog:
[General][Changed] - `Touchable.renderDebugView` now accepts `ColorValue` instead of `string | number`.
[General][Removed] - Removed `Touchable.TOUCH_TARGET_DEBUG` property.

Reviewed By: kacieb

Differential Revision: D26108570

fbshipit-source-id: 2694c9a9c29182ae04a77ba6c2e4406fcd5a277e
2021-01-28 14:13:43 -08:00
Joshua GrossandFacebook GitHub Bot aad423d59e Support RCTModernEventEmitter+RCTEventEmitter in ReactSwitchEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056823

fbshipit-source-id: 1d25afb2d4cfd7e539214d4592e361260f98fc56
2021-01-28 14:07:31 -08:00
Joshua GrossandFacebook GitHub Bot 1dcb4cfe7f Support RCTModernEventEmitter+RCTEventEmitter in RefreshEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056815

fbshipit-source-id: d0e03a69f84de47385e064c74f0a79c52c61022d
2021-01-28 14:07:31 -08:00
Joshua GrossandFacebook GitHub Bot a8d7c2cd62 Support RCTModernEventEmitter+RCTEventEmitter in PickerItemSelectEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056813

fbshipit-source-id: e3b0132fac6335e83ff5b1992424edcb98703803
2021-01-28 14:07:31 -08:00
Joshua GrossandFacebook GitHub Bot f6af7b2a58 Support RCTModernEventEmitter+RCTEventEmitter in ReactSlidingCompleteEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056808

fbshipit-source-id: aa7ff9520a6a2470c642f06797757e1c0362abe9
2021-01-28 14:07:31 -08:00
Joshua GrossandFacebook GitHub Bot 6e62100297 Support RCTModernEventEmitter+RCTEventEmitter in ReactContentSizeChangedEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056802

fbshipit-source-id: 72eb498673aecce48145c785a4c2a48e0432059d
2021-01-28 14:07:30 -08:00
Joshua GrossandFacebook GitHub Bot e253a6940d Support RCTModernEventEmitter+RCTEventEmitter in TouchEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056725

fbshipit-source-id: 771e5dd4cd1aeca3d2afd1a67ee58b9ac21eda79
2021-01-28 14:07:30 -08:00
Joshua GrossandFacebook GitHub Bot db5bc2f766 Support RCTModernEventEmitter+RCTEventEmitter in ShowEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056723

fbshipit-source-id: c20183a4a1189f13b15a138968937080888a200b
2021-01-28 14:07:30 -08:00
Joshua GrossandFacebook GitHub Bot 1575e7ffe3 Support RCTModernEventEmitter+RCTEventEmitter in ScrollEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056720

fbshipit-source-id: f36a6caf4e748c915b66f66fd9b4cad6826ecacf
2021-01-28 14:07:30 -08:00
Joshua GrossandFacebook GitHub Bot 583d6229c6 Support RCTModernEventEmitter+RCTEventEmitter in RequestCloseEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056714

fbshipit-source-id: 215d8e44d7909f30f4a45f57e5d22a32a635d0ba
2021-01-28 14:07:29 -08:00
Joshua GrossandFacebook GitHub Bot 42274b0ba8 Support RCTModernEventEmitter+RCTEventEmitter in ReactTextInputSubmitEditingEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056700

fbshipit-source-id: b3452125678ec8770dec9587106b8bf0f2490027
2021-01-28 14:07:29 -08:00
Joshua GrossandFacebook GitHub Bot ae979a14d6 Support RCTModernEventEmitter+RCTEventEmitter in ReactTextInputSelectionEvent Event class
Summary:
Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one.

Changelog: [Internal]

Reviewed By: PeteTheHeat, mdvacca

Differential Revision: D26056696

fbshipit-source-id: 50c0f01164e078b0ad32f66dda80c965f731f1fb
2021-01-28 14:07:29 -08:00