Commit Graph
21411 Commits
Author SHA1 Message Date
Paige SunandFacebook GitHub Bot 0937f13cc3 Do not log image if it fails lifecycle assert in getWillRequestUrlTime
Reviewed By: sammy-SC

Differential Revision: D24990452

fbshipit-source-id: ce4d5ec9e3cf237c6edbd17368f2dcf3aecbec2b
2020-11-16 12:39:00 -08:00
Marshall RochandFacebook GitHub Bot f1f7168795 Deploy Flow v0.138.0
Summary: Changelog: [Internal]

Reviewed By: dsainati1

Differential Revision: D24993067

fbshipit-source-id: ef2ffb61269be49afa970283a7ccef0b4475898a
2020-11-16 12:19:01 -08:00
Joshua GrossandFacebook GitHub Bot 752e7ab1f9 Experiment to replace Fabric MountItem lists with concurrent queues (re-land)
Summary:
Currently, queuing any sort of MountItem or getting the list of MountItems requires synchronization. Since these can be queued up at any point from the JS thread, there will, in theory, be constant contention between JS and UI thread.

To see if this is true, I'm creating an experiment instead of just switching over to concurrent structures. After seeing results, we can hopefully make a decision and delete the non-concurrent stuff or improve on it somehow.

The original was unlanded in D24973616 (https://github.com/facebook/react-native/commit/26787e2260412d9d2fe831e68a8616505d3cab36) due to a typo, which has been fixed now. The typo was that in Blocking Mode, we queued up all PreMountItems to the concurrent PreMountItems queue.

Changelog: [Internal]

Reviewed By: ShikaSD

Differential Revision: D24974851

fbshipit-source-id: d081c081bbd0de445bb92408f0ec822056b905a5
2020-11-14 12:19:56 -08:00
Andrei ShikovandFacebook GitHub Bot 26787e2260 Back out "Experiment to replace Fabric MountItem lists with concurrent queues"
Summary:
Changelog: [Internal]

Original commit changeset: fcbdeda51f91

Reviewed By: rubennorte

Differential Revision: D24973616

fbshipit-source-id: 4d21211d329c77dba50972a26b1daeccfffad912
2020-11-14 08:59:02 -08:00
Koichi NagaokaandFacebook GitHub Bot d85d5d2e19 Fix cannot working Modal's onDismiss. (#29882)
Summary:
Fixes: https://github.com/facebook/react-native/issues/29455

Modal's onDismiss is not called on iOS.
This issue occurred the commit https://github.com/facebook/react-native/commit/bd2b7d6c0366b5f19de56b71cb706a0af4b0be43 and was fixed the commit https://github.com/facebook/react-native/commit/27a3248a3b37410b5ee6dda421ae00fa485b525c.
However, the master and stable-0.63 branches do not have this modified commit applied to them.

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[iOS] [Fixed] - Modal's onDismiss prop will now be called successfully.

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

Test Plan:
Tested on iOS with this change:

1. Set function Modal's onDismiss prop.
1. Set Modal's visible props is true. (show Modal)
1. Set Modal's visible props is false. (close Modal)
1. The set function in onDismiss is called.

Reviewed By: shergin

Differential Revision: D24648412

Pulled By: hramos

fbshipit-source-id: acf28fef21420117c845d3aed97e47b5dd4e9390
2020-11-13 23:56:09 -08:00
Joshua GrossandFacebook GitHub Bot 47000756fe Add more systrace sections to FabricJSIModuleProvider
Summary:
Adding more Systrace sections to get perf information during critical paths.

Changelog: [Internal]

Reviewed By: ejanzer

Differential Revision: D24960195

fbshipit-source-id: 099e9cfac8ac87287e48e9915e6b28fe7a448783
2020-11-13 21:53:37 -08:00
Joshua GrossandFacebook GitHub Bot c609952ddb Add Systrace sections to UIImplementationProvider
Summary:
Add Systrace sections to initialization of non-Fabric UIImplementationProvider. This path is sometimes invoked during startup of Fabric so I'd like to gather more information about its impact.

Changelog: [Internal]

Reviewed By: ejanzer

Differential Revision: D24959965

fbshipit-source-id: a8555b8db284d00f97c71ca859cb2020409cb110
2020-11-13 21:53:36 -08:00
Joshua GrossandFacebook GitHub Bot 66e536739e Add additional debug logging for startSurface crashes
Summary:
There are a very, very small number of crashes in production that are hitting this line. I would like to understand what the existing tag ID is (perhaps it's eqal to the ID being set, which would indicate "double-start"). If not, it indicates that fragments are being reused somewhere, or something else odd is going on with lifecycles.

Changelog: [Internal]

Reviewed By: ejanzer

Differential Revision: D24953785

fbshipit-source-id: 079c86cdb571749662cca46feeaebdd6cb1281f4
2020-11-13 21:53:36 -08:00
Joshua GrossandFacebook GitHub Bot 23def0f8f0 Experiment to replace Fabric MountItem lists with concurrent queues
Summary:
Currently, queuing any sort of MountItem or getting the list of MountItems requires synchronization. Since these can be queued up at any point from the JS thread, there will, in theory, be constant contention between JS and UI thread.

To see if this is true, I'm creating an experiment instead of just switching over to concurrent structures. After seeing results, we can hopefully make a decision and delete the non-concurrent stuff or improve on it somehow.

Changelog: [Internal]

Reviewed By: ejanzer

Differential Revision: D24942110

fbshipit-source-id: fcbdeda51f91f4bd430a20d7484854fb1e94a832
2020-11-13 21:53:36 -08:00
Tim YungandFacebook GitHub Bot 480dabd665 RN: Remove Android setTimeout Warning
Summary:
Many third-party libraries (especially data management and caching ones) make use of long timeouts.

There are currently no plans to change `setTimeout` on Android to support firing when apps are in the background. In the meantime, this warning is not actionable for developers who are using these frameworks. Their workarounds are to 1) deal with the noise in their logs, or 2) suppress the warning.

Changelog:
[General][Removed] - Removed warning on Android for `setTimeout` with delays greater than 1 minute.

Reviewed By: lunaleaps

Differential Revision: D24964958

fbshipit-source-id: 1b40c8ba95d554c29dec74477aa63ea3ef8e4768
2020-11-13 18:07:37 -08:00
Nadiia DandFacebook GitHub Bot 9be3356e02 replace defaultProps usage in functional components
Summary:
Changelog:
[General] [Removed] - Replace defaultProps usage in functional components

Reviewed By: kacieb

Differential Revision: D24907836

fbshipit-source-id: 05c7381b66c7738790eff5fea594791c3ecfa12e
2020-11-13 17:07:11 -08:00
DulmandakhandFacebook GitHub Bot 2798e7172b remove ReactFragmentActivity (#30331)
Summary:
Remove ReactFragmentActivity class, which was deprecated at least since 0.58.

## Changelog

[Android] [Changed] - remove ReactFragmentActivity class.

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

Reviewed By: makovkastar

Differential Revision: D24914082

Pulled By: fkgozali

fbshipit-source-id: 6833b76552a1fc19680f96501d4b8e2ff03c2c39
2020-11-13 09:55:40 -08:00
Samuel SuslaandFacebook GitHub Bot 53862a1b5a Back out "Fabric: Strengthening StubView mutating validation"
Summary:
Changelog: [internal]

Original commit changeset: 8c8a3d8e205c

Reviewed By: ShikaSD

Differential Revision: D24951341

fbshipit-source-id: b6109a45f1537a9edc702eafac1736e801fbedc9
2020-11-13 08:50:52 -08:00
Kevin GozaliandFacebook GitHub Bot 58c80d4f8d Use codegen from source in default iOS template apps
Summary:
Add the `react-native-codegen` source to the `react-native` npm package.
Instead of using `react-native-codegen` from npm, the iOS app template will now build the package from source. Doing so removes the need to carefully time `react-native-codegen` npm releases to oss `react-native` releases, as the codegen and the oss release will be cut at the same time.

Changelog: [Internal] - Removed react-native-codegen dependency from iOS app template

Reviewed By: TheSavior

Differential Revision: D24904655

fbshipit-source-id: a07932bc748e2afb9359de584181bcb9dd0810ea
2020-11-12 22:30:28 -08:00
George ZaharievandFacebook GitHub Bot 6a039d7be3 Remove usage of deprecated @flow weak in Xplat
Summary:
This is the one usage of `flow weak` in Xplat - change it to normal `flow` and add a suppression where an error appears.

Changelog: [Internal]

Reviewed By: Hans-Halverson

Differential Revision: D24878970

fbshipit-source-id: 16e459c261b41e04de1555ed7ef4ecf2f5b3721e
2020-11-12 21:14:06 -08:00
Joshua GrossandFacebook GitHub Bot f1fbfebccb Add ReactRootView perf markers
Summary:
Add three markers for ReactRootView perf logging: onMeasure, attachToReactInstanceManager, and updateLayoutSpecs.

It is suspected that one or all of these have regressed under Fabric in some cases.

Changelog: [Internal]

Reviewed By: shergin

Differential Revision: D24909635

fbshipit-source-id: 6b6c0cc792c4b2d72f2360d6cffc02ef00e8a88b
2020-11-12 15:54:58 -08:00
Joshua GrossandFacebook GitHub Bot 68126ed470 Skip execution of IntBufferBatchMountItem if surface has stopped
Summary:
Fixes crashes in surface teardown / navigating away from a surface.

Changelog: [Internal]

Reviewed By: shergin

Differential Revision: D24907216

fbshipit-source-id: 7bd7578c81687c7e64e8f70fecf8446bb333a1ed
2020-11-12 15:54:58 -08:00
Chris EwaldandFacebook GitHub Bot 0bbab028d8 Update yarn.lock (#30361)
Summary:
This yarn.lock file was regenerated by deleting the existing yarn.lock file and rerunning `yarn install`.

The current `yarn.lock` file is fairly out of date and is affecting the CI servers.

More specifically, fsevents@1.2.7, [referenced in yarn.lock here](https://github.com/facebook/react-native/blob/46be292f671c70aac4ecc178c96e3a2a6a3d16da/yarn.lock#L3215), [fails to compile](https://github.com/fsevents/fsevents/issues/272) on node 12 or later.

This causes the [yarn install step on CI to error](https://app.circleci.com/pipelines/github/facebook/react-native/7065/workflows/de2bebff-33a5-4d2e-bc73-f7f380641452/jobs/176266/parallel-runs/0/steps/0-104).

This PR is being made as 1 step in getting [the RNTester detox tests running again](https://github.com/facebook/react-native/pull/30312).

We can alternatively manually update the `yarn.lock` file with [the minimum needed fsevent changes](https://github.com/facebook/react-native/compare/master...MLH-Fellowship:update-yarn-lock-fsevents?expand=1#diff-51e4f558fae534656963876761c95b83b6ef5da5103c4adef6768219ed76c2deL3215-L3221) if this PR changes too much.

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[Internal] [Changed] - Bump fsevents from 1.2.7 to 1.2.13.

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

Test Plan: Verify yarn install step on CI is fixed.

Reviewed By: hramos

Differential Revision: D24910611

Pulled By: cpojer

fbshipit-source-id: 45a2f25a14d368d2f464e489924b1a2befbdf784
2020-11-12 15:29:45 -08:00
DulmandakhandFacebook GitHub Bot 96ace87791 remove android support library (#30347)
Summary:
This PR removes remains of Android Support Library, now replaced with AndroidX.

## Changelog

[Internal] [Changed] - remove Android Support Library from Buck

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

Test Plan: CI is green

Reviewed By: JoshuaGross

Differential Revision: D24914088

Pulled By: fkgozali

fbshipit-source-id: 0ff18dfd7c684642a5c27308112b6fddc27608a7
2020-11-12 09:14:29 -08:00
Kevin GozaliandFacebook GitHub Bot 1bbcbd55ff Android OSS: fixed unbound variable error for codegen build script
Summary:
If $FBSOURCE_ENV isn't set, this failed with `/root/react-native/packages/react-native-codegen/android/../scripts/oss/build.sh: line 20: FBSOURCE_ENV: unbound variable`.

This commit fixes https://app.circleci.com/pipelines/github/facebook/react-native/7080/workflows/5cf18a1f-e6d2-4648-8217-d42e9a61fef1/jobs/176451

Changelog: [Internal]

Reviewed By: yungsters

Differential Revision: D24912950

fbshipit-source-id: 113e3dd7f78c75fc3adea0b21c9e38910be8c065
2020-11-11 22:39:27 -08:00
Janic DuplessisandFacebook GitHub Bot d5db2cb5d1 Build rn-codegen in a temporary directory (#30292)
Summary:
When running yarn install from the codegen directory it will reinstall all dependencies for the react-native workspace inside the react-native package. In my case this caused issues with metro because it would now have 2 copies of it (node_modules/metro and node_modules/react-native/node_modules/metro).

To avoid this copy the react-native-codegen source in a temporary directory and yarn install from there, then copy the built files back.

## Changelog

[Internal] - Build rn-codegen in a temporary directory

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

Test Plan: Tested the script in an app with codegen enabled. Fresh install with rn-codegen not built, made sure no extra modules are installed under node_modules/react-native/node_modules.

Reviewed By: yungsters

Differential Revision: D24893216

Pulled By: fkgozali

fbshipit-source-id: 2c372b755632ea6f50ad5d4562248612b349a9a6
2020-11-11 19:17:12 -08:00
Valentin SherginandFacebook GitHub Bot 28cb7a77db Fabric: Stop storing a raw pointer to ImageResponseObserverCoordinator in RCTImageComponentView
Summary:
Before this change, RCTImageComponentView on every state update extracted the raw pointer to ImageResponseObserverCoordinator and stored this as an instance variable. This worked fine but the code relied on an assumption that `oldState` argument of `updateState:oldState` is always valid (because the `oldState` is what retained that pointer).
Now, because of some issue, seems that `oldState` value is not always correct, so to work around this problem and to make the code more robust, this diff implements a slightly different approach.
Now we don't store the raw pointer to ImageResponseObserverCoordinator as an instance variable; instead, we store a retaining pointer to a state object and retrieve the pointer to an ImageResponseObserverCoordinator on demand. The diff also introduces a new function `_setStateAndResubscribeImageResponseObserver` that incapsulates updating `_state` object, unsubscribing from the previous coordinator, and subscribing for a new one.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: JoshuaGross

Differential Revision: D24880820

fbshipit-source-id: 1c4d8ea91ae07dd217447e43cd3dde7b6f02dc40
2020-11-11 16:44:09 -08:00
Valentin SherginandFacebook GitHub Bot eb6fefa508 Back out "Use ConcreteStateTeller in RCTImageComponentView"
Summary: We don't need ConcreteStateTeller in <Image> component because we don't even update the state from the component. I will change the logic around the state in the next diff, so we have to remove ConcreteStateTeller first.

Reviewed By: sammy-SC

Differential Revision: D24880822

fbshipit-source-id: bc993bc04ef9f6df79bcbc51941ad6bf64baae58
2020-11-11 16:44:09 -08:00
ajpaulingallsandFacebook GitHub Bot 0e9296b95d Update the cached dimensions when orientation changes (#30324)
Summary:
Currently the dimensions are created once, and then cached.  This change will reload the dimensions when the device orientation changes to insure that dimension update events follow orientation changed events.

this should help address the following issues, that I know of:
https://github.com/facebook/react-native/issues/29105
https://github.com/facebook/react-native/issues/29451
https://github.com/facebook/react-native/issues/29323

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[Android] [Fixed] - Dimension update events are now properly sent following orientation change

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

Test Plan: Open up RNTester app.  Select the Dimensions API list item.  Rotate the device and verify that the dimensions are correct based on orientation.

Reviewed By: fkgozali

Differential Revision: D24874733

Pulled By: ejanzer

fbshipit-source-id: 867681ecb009d368a2ae7b67d94d6355e67dea7b
2020-11-11 11:03:19 -08:00
Valentin SherginandFacebook GitHub Bot 97a4598bab Fabric: Strengthening StubView mutating validation
Summary:
This diff adds more enforcement for consistency of `ShadowNodeMutation`s, including:
* `Props` object for newly created or updated view must not be nullptr;
* `oldShadowView` must describe the previous state of the view for `Update` instruction;
* `ignoreDuplicateCreates` option was removed.

I suspect some of the crashes we see in Fabric are caused by a violation of one of these constraints. If one of these fails in debug builds, we will get an early signal.

Changelog: [Internal]

Reviewed By: JoshuaGross

Differential Revision: D24880821

fbshipit-source-id: 8c8a3d8e205ce34f6e0335e8a2b0cf676930c284
2020-11-11 10:56:27 -08:00
Samuel SuslaandFacebook GitHub Bot 3a0927ce43 Fix memory leak in ScrollViewStickyHeader
Summary:
Changelog: [internal]

`addListener` call needs a matching `removeListener` call. Otherwise a memory leak is introduced to the app.
This memory leak can retain a UIImage on iOS in Fabric and cause OOM.

Reviewed By: JoshuaGross

Differential Revision: D24860489

fbshipit-source-id: 2625e4bfec416d59e048d9b5ada3813019dd107c
2020-11-11 01:59:38 -08:00
Kacie BawiecandFacebook GitHub Bot 46be292f67 Fix nested FlatList not firing onScrollDragEnd and onMomentum methods
Summary:
With nested FlatLists, three methods aren't firing: `onMomentumScrollBegin`, `onMomentumScrollEnd`, and `onScrollDragEnd`. This is because the nested child lists' methods are not being called.

This copies the solution for this from `onScrollBeginDrag` to the other three methods.

Changelog: [Fixed] Fix nested FlatList not firing onScrollDragEnd and onMomentum methods

Reviewed By: nadiia

Differential Revision: D24803418

fbshipit-source-id: 8685b1ab9f1bd5f67a88d93ac5de628d4bd69024
2020-11-10 09:08:07 -08:00
Paige SunandFacebook GitHub Bot f27e305056 Fix prefetchImageWithMetadata redbox in AMA
Reviewed By: RSNara

Differential Revision: D24837264

fbshipit-source-id: b2aeef2c051fa15c06cf2eb6350c152b722196c2
2020-11-10 08:39:30 -08:00
Nadiia DandFacebook GitHub Bot 8f5656b347 Update to eslint@7.12
Summary:
Changelog:
[Internal] - Upgrades eslint to 7.12

Reviewed By: cpojer

Differential Revision: D24552901

fbshipit-source-id: ede66ac9367702512436bfe3cf0254686300e10b
2020-11-10 00:08:44 -08:00
Sebastian MarkbageandFacebook GitHub Bot c7ab780360 React Native sync for revisions 454c221...c3e20f1
Reviewed By: rickhanlonii

Differential Revision: D24700276

fbshipit-source-id: 877759c60632985753f3cd02ad0ded50144b6744
2020-11-09 14:30:51 -08:00
Sebastian MarkbageandFacebook GitHub Bot 69ade5996f React Native sync for revisions 4e5d7fa...454c221
Summary:
Base sync before adding Flight files.

This sync includes the following changes:
- **[454c2211c](https://github.com/facebook/react/commit/454c2211c )**: Refactor SchedulerHostConfigs ([#20025](https://github.com/facebook/react/pull/20025)) //<Ricky>//
- **[56e9feead](https://github.com/facebook/react/commit/56e9feead )**: Remove Blocks ([#20138](https://github.com/facebook/react/pull/20138)) //<Sebastian Markbåge>//
- **[3fbd47b86](https://github.com/facebook/react/commit/3fbd47b86 )**: Serialize pending server components by reference (lazy component) ([#20137](https://github.com/facebook/react/pull/20137)) //<Sebastian Markbåge>//
- **[930ce7c15](https://github.com/facebook/react/commit/930ce7c15 )**: Allow values to be encoded by "reference" to a value rather than the value itself ([#20136](https://github.com/facebook/react/pull/20136)) //<Sebastian Markbåge>//
- **[39eb6d176](https://github.com/facebook/react/commit/39eb6d176 )**: Rename ([#20134](https://github.com/facebook/react/pull/20134)) //<Sebastian Markbåge>//
- **[ffd842335](https://github.com/facebook/react/commit/ffd842335 )**: [Flight] Add support for Module References in transport protocol ([#20121](https://github.com/facebook/react/pull/20121)) //<Sebastian Markbåge>//
- **[343d7a4a7](https://github.com/facebook/react/commit/343d7a4a7 )**: Fast Refresh: Don't block DevTools commit hook ([#20129](https://github.com/facebook/react/pull/20129)) //<Brian Vaughn>//
- **[779a472b0](https://github.com/facebook/react/commit/779a472b0 )**: Prevent inlining into recursive commit functions ([#20105](https://github.com/facebook/react/pull/20105)) //<Andrew Clark>//
- **[25b18d31c](https://github.com/facebook/react/commit/25b18d31c )**: Traverse commit phase effects iteratively ([#20094](https://github.com/facebook/react/pull/20094)) //<Andrew Clark>//

Changelog:
[General][Changed] - React Native sync for revisions 4e5d7fa...454c221

Reviewed By: rickhanlonii

Differential Revision: D24698701

fbshipit-source-id: dfaf692b1051150355dece1657764a484b7ae603
2020-11-09 14:30:50 -08:00
Martin SherburnandFacebook GitHub Bot d021000b9e Fix race condition in Inspector shutdown
Summary:
The `state_` member variable was getting destroyed before the `executor_` (because `state_` is declared after `executor_` https://stackoverflow.com/questions/2254263/order-of-member-constructor-and-destructor-calls). This lead to a race condition where items still pending on the `executor_` thread could try to run and access `state_` after it had already been reset.

Changelog:
[General][Fixed] - Fix race condition in Debug Inspector shutdown

Reviewed By: mhorowitz

Differential Revision: D24705062

fbshipit-source-id: e575d66322ab980b1a8c3e6083a0b3d40b9c944b
2020-11-09 11:24:59 -08:00
Lulu WuandFacebook GitHub Bot 8e956b3afd Back out "Change StatusBar default style handling strategy"
Summary:
Original commit changeset: 76e7d0d45fd3

Changelog: [Internal]

Reviewed By: makovkastar

Differential Revision: D24783092

fbshipit-source-id: 876eaeaffbed63599553456f189f3675aa406e13
2020-11-09 07:24:22 -08:00
Kevin GozaliandFacebook GitHub Bot b6362c24f9 TM Android proguard: keep com.facebook.react.turbomodule.core.**
Summary:
Various TM infra classes previously were stripped by proguard. This updates the rule to not remove TM Android core infra.

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D24812999

fbshipit-source-id: 3b713c63e25a209b17869f7e5311ee54a113a567
2020-11-09 02:24:41 -08:00
Kevin GozaliandFacebook GitHub Bot 803a26cb00 TM Android: Avoid creating TM instance if the module is not TM enabled
Summary:
There is a flow where TM registry is creating a module instance (as registered in the TurboReactPackage), only to discard it if it's not a TM enabled module. This may be fine for many modules, but for module like `UIManagerModule`, this may cause a race condition or other issues, including potential perf regression when accessing UIManager from JS (e.g. for getting native viewConfigs).

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D24811838

fbshipit-source-id: 6e1cce6993a6e5c9763773f175083bf52925c910
2020-11-09 02:24:41 -08:00
Ramanpreet NaraandFacebook GitHub Bot 610dcf488b Implement method dispatch using TurboModuleSchema
Summary:
This is the final diff in the JS TurboModule codegen stack for Android. It implements method dispatch using the TurboModuleSchema object.

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D22837486

fbshipit-source-id: f91b03f064941457d4b8c5e37e011468559dee71
2020-11-08 14:24:05 -08:00
Ramanpreet NaraandFacebook GitHub Bot 165dcccc58 Introduce TurboModuleSchema
Summary:
JavaTurboModule will use instances of this class to perform method invocation. TurboModuleSchema is created by parsing the `jsi::Value` that represents the TurboModule's schema.

Changelog: [Internal]

Reviewed By: PeteTheHeat

Differential Revision: D22832729

fbshipit-source-id: 792736e176c33a302f6a41c6f63a4812b09af585
2020-11-08 14:24:05 -08:00
Ramanpreet NaraandFacebook GitHub Bot b6a72bac69 Extend babel-plugin-codegen to generate TurboModule JS codegen
Summary:
## New Functionality
- Detect if the JS file represents a NativeModule spec.
  - **Note:** A JS file is a NativeModule spec if it contains a flow `interface` that extends `TurboModule`. This logic is copied over from the OSS Codegen, here: https://github.com/facebook/react-native/blob/7ccb67a49c087e7ee536c2ffb71717e68a79324b/packages/react-native-codegen/src/parsers/flow/index.js#L60-L75
- For all NativeModule specs, generate the spec's schema using the OSS Codegen for Modules, and conditionally inline it into every `TurboModuleRegistry.get(Enforcing)?` call in the spec, like so:

**Before:**
```
/**
 * flow
 */

import type {TurboModule} from 'RCTExport';
export interface Spec extends TurboModule {
  //...
}

export default TurboModuleRegistry.get<Spec>('FooModule');
```

**After:**
```
/**
 * flow
 */

import type {TurboModule} from 'RCTExport';
export interface Spec extends TurboModule {
  //...
}

export default TurboModuleRegistry.get<Spec>('FooModule', __getModuleShape());

function __getModuleShape() {
  if (!(global.RN$EnableTurboModuleJSCodegen === true)) {
    return undefined;
  }

  return {...};
}
```

Changelog: [General][Added] Extend react-native/babel-plugin-codegen to generate TurboModule JS codegen

Reviewed By: TheSavior

Differential Revision: D22803845

fbshipit-source-id: 18c157a1dbfcc575012184de31c38908acd53c36
2020-11-08 14:24:05 -08:00
Christoph NakazawaandFacebook GitHub Bot a99b46aabb Upgrade to Babel 7.12.6
Summary:
Monthly Babel update. As usual, I wait until there are multiple point releases because the Babel team tends to always break a lot of things in the first ~3 patch releases.

Release Notes: https://github.com/babel/babel/releases from 7.12.0 -> 7.12.6 inclusive. From a check of each change, nothing immediately jumps out as something that would impact us.

Changelog: [Internal]

Reviewed By: MichaReiser

Differential Revision: D24723845

fbshipit-source-id: 7db8daa119a4e34cd1fd4f61e7a635fcaf4e4a91
2020-11-08 06:23:43 -08:00
Paige SunandFacebook GitHub Bot 017bc91192 Log prefetched image's view controller moduleName and GraphQL queryRootName
Reviewed By: fkgozali, rubennorte

Differential Revision: D24683194

fbshipit-source-id: 5a3f37123c0d9f6f40124e131212e6bf190193cc
2020-11-07 02:23:54 -08:00
Ramanpreet NaraandFacebook GitHub Bot 00cfb0f919 Remove pipes from Object literal Flow types
Summary:
## Changes
{| ... |} -> { ... }

**Motivation:** In Flow, object literals are exact by default. So, there's no need for the pipes. Also: Now, the syntax for object literals is consistent across react-native-codegen.

Changelog: [Internal]

Reviewed By: hramos

Differential Revision: D24774771

fbshipit-source-id: 24ceb6f5876122aa8ad9e08c7e903215864ad6f5
2020-11-06 16:24:44 -08:00
Ramanpreet NaraandFacebook GitHub Bot cb7f3f4499 Setup TurboModule JS Codegen experiment
Summary:
## Android API
```
// Before we initialize TurboModuleManager
ReactFeatureFlags.useTurboModuleJSCodegen = true
```

## iOS API
```
// Before we initialize RCTBridge
RCTEnableTurboModuleJSCodegen(true);
```

## How is the JS Codegen actually enabled?
The above native flags are translated to the following global variable in JavaScript:
```
global.RN$JSTurboModuleCodegenEnabled = true;
```

Then, all our NativeModule specs are transpiled to contain this logic:
```
interface Foo extends TurboModule {
  // ...
}

function __getModuleSchema() {
  if (!global.RN$JSTurboModuleCodegenEnabled) {
    return undefined;
  }

  // Return the schema of this spec.
  return {...};
}

export default TurboModuleRegistry.get<Foo>('foo', __getModuleSchema());
```

Then, in our C++ JavaTurboModule, and ObjCTurboModule classes, we use the TurboModule JS codegen when the jsi::Object schema is provided from JavaScript in the TurboModuleRegistry.get call.

Changelog: [Internal]

Reviewed By: PeteTheHeat

Differential Revision: D24636307

fbshipit-source-id: 80dcd604cc1121b8a69df875bbfc87e9bb8e4814
2020-11-06 13:28:15 -08:00
Ramanpreet NaraandFacebook GitHub Bot f1e292b9c1 Set up experiment to dispatch promise methods asynchronously to NativeModules thread
Summary:
TurboModule methods that return promises are synchronously run on the JavaScript thread. Back in D22489338 (https://github.com/facebook/react-native/commit/9c35b5b8c4710dfe6a4b689a5565aa78ae5b37d3), we wrote code to make them dispatch on the NativeModules thread. That code, however, was just left disabled. In this diff, I wire up the TurboModules infra to a MobileConfig, which should allow us to assess the performance impact of async dispatch of promise methods to the NativeModules thread in production, before we roll it out more widely.

Changelog: [Internal]

NOTE: This diff was reverted, beacuse we landed it it without D24685387.

Reviewed By: ejanzer

Differential Revision: D24787573

fbshipit-source-id: 324bd22ce79c2c16c7f7b6996496d255a2c6256e
2020-11-06 13:28:15 -08:00
Hank ChenandFacebook GitHub Bot 00d9deaf6b Android: font-family is not apply when secureTextEntry is true (#30164)
Summary:
This pr fixes: https://github.com/facebook/react-native/issues/30123 .

When secureTextEntry is true, setInputType will set the inputType of textInput to password type.
Password type default font-family will be monospace font, so we need to setTypeface after the setInputType.

## Changelog

[Android] [Fixed] - Font family is not apply when secureTextEntry is true.

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

Test Plan:
Before this pr:
![alt text](https://i.imgur.com/mAxLhnB.png)

After this pr:
![alt text](https://i.imgur.com/zoGYDxN.png)

Please initiated a new project and replaced the App.js with the following code:
```
iimport React from 'react';
import {SafeAreaView, TextInput} from 'react-native';

const App = () => {
  return (
    <SafeAreaView>
      <TextInput
        id={'email'}
        placeholder={'Email'}
        secureTextEntry={false}
        style={{fontFamily: 'Helvetica', fontSize: 14, fontWeight: '400'}}
      />

      <TextInput
        id={'password'}
        placeholder={'Password'}
        secureTextEntry={true}
        style={{fontFamily: 'Helvetica', fontSize: 14, fontWeight: '400'}}
      />
    </SafeAreaView>
  );
};

export default App;
```

Thanks you so much for your code review!

Reviewed By: cpojer

Differential Revision: D24686222

Pulled By: hramos

fbshipit-source-id: 863ebe1dba36cac7d91b2735fe6e914ac839ed44
2020-11-06 12:26:41 -08:00
Micha ReiserandFacebook GitHub Bot d8b0997aa9 Upgrade metro to 0.64.0
Summary:
Upgrade metro to 0.64.0

Changelog: [Internal]

Reviewed By: cpojer

Differential Revision: D24753886

fbshipit-source-id: af679ec912c5cd8049a998d045ce8a75bf30e5d3
2020-11-06 07:25:17 -08:00
Alessandro SistoandFacebook GitHub Bot 2af406b88d Revert D24685389: Set up experiment to dispatch promise methods asynchronously to NativeModules thread
Differential Revision:
D24685389 (https://github.com/facebook/react-native/commit/052e578ed666f2749ec06d1d928bb622cada8841)

Original commit changeset: 8ceb2e6effc1

fbshipit-source-id: e48186dd0e928fe95cc7f2420fc02c00a62b8360
2020-11-06 06:26:29 -08:00
Ramanpreet NaraandFacebook GitHub Bot 052e578ed6 Set up experiment to dispatch promise methods asynchronously to NativeModules thread
Summary:
TurboModule methods that return promises are synchronously run on the JavaScript thread. Back in D22489338 (https://github.com/facebook/react-native/commit/9c35b5b8c4710dfe6a4b689a5565aa78ae5b37d3), we wrote code to make them dispatch on the NativeModules thread. That code, however, was just left disabled. In this diff, I wire up the TurboModules infra to a MobileConfig, which should allow us to assess the performance impact of async dispatch of promise methods to the NativeModules thread in production, before we roll it out more widely.

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D24685389

fbshipit-source-id: 8ceb2e6effc125abecfa76e5e90bd310676aefc9
2020-11-06 01:24:25 -08:00
Ramanpreet NaraandFacebook GitHub Bot 1ee406b9cc Pull out ReservedPropTypeAnnotation into type alias
Summary:
This type annotation was declared inline twice. Just pulling it out into a type alias in this diff.

Changelog: [Internal]

Reviewed By: yungsters

Differential Revision: D24723191

fbshipit-source-id: 9f2061087172979ea838dfdf2533e17b9b559c71
2020-11-05 18:30:09 -08:00
Ramanpreet NaraandFacebook GitHub Bot 0de4b514be Simplify Int32EnumTypeAnnotation and StringEnumTypeAnnotation
Summary:
Int32EnumTypeAnnotation represents a union of numbers. In the corresponding type annotation, we represent options as `$ReadOnlyArray<{value: number}>`. Since each option is a number, we could instead represent options as `$ReadOnlyArray<number>` - there's no need to use an object with a singular property (i.e: 'value'). The same is could be said of StringEnumTypeAnnotation.

In this diff, we change `Int32EnumTypeAnnotation.options` to `$ReadOnlyArray<number>`, and `StringEnumTypeAnnotation.options` to `$ReadOnlyArray<string>`.

Changelog: [Internal]

Reviewed By: yungsters

Differential Revision: D24723107

fbshipit-source-id: 4734cf72a4a29b6b321d8161bea70cf524ce0963
2020-11-05 18:30:09 -08:00
Ramanpreet NaraandFacebook GitHub Bot a31d7aa2d3 Standardize on one FunctionTypeAnnotation shape
Summary:
Commands are `FunctionTypeAnnotation`, but they don't have a return type. I this diff, I introduced a `FunctionTypeAnnotation<+P, +R>` utility type, and made the `CommandTypeAnnotation` be an instantiation of it, with the return type fixed to `VoidTypeAnnotation`.

Now, the shape of a FunctionTypeAnnotation is unified across the NativeModule and Component schemas.

Changelog: [Internal]

Reviewed By: yungsters

Differential Revision: D24719965

fbshipit-source-id: 0089c3b23f05b0c534ba28dbe336c7f2db5866b3
2020-11-05 18:30:09 -08:00