Commit Graph
20899 Commits
Author SHA1 Message Date
Tim YungandFacebook GitHub Bot b11d6ecbb8 EventEmitter: Replace listeners() with listenerCount()
Summary:
Replaces the `listeners()` method on `EventEmitter` with a `listenerCount()` method.

Changelog:
[General][Removed] - Removed `listeners()` from `DeviceEventEmitter` and `NativeEventEmitter`.
[General][Added] - Added `listenerCount()` to `DeviceEventEmitter` and `NativeEventEmitter`.

Reviewed By: cpojer

Differential Revision: D22204156

fbshipit-source-id: 15029525aeef55de9934a4f319910e666ecbe1d8
2020-09-03 15:21:11 -07:00
Héctor RamosandFacebook GitHub Bot b26556125f Bump brew cache key (#29843)
Summary:
The Circle CI iOS jobs are failing when installing Watchman:

```
#!/bin/bash --login -eo pipefail
HOMEBREW_NO_AUTO_UPDATE=1 brew install watchman >/dev/null
Error: The `brew link` step did not complete successfully

Exited with code exit status 1
CircleCI received exit code 1
```

The commit associated with the job where this issue first appeared did not make any changes to Watchman, but it did change the VM used by Circle CI for these jobs. Flushing the homebrew cache might help.

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

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

Test Plan: Run on Circle CI. Watchman install step succeeded: https://circleci.com/gh/facebook/react-native/166160?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link

Reviewed By: fkgozali

Differential Revision: D23495409

Pulled By: hramos

fbshipit-source-id: 56a68bba3afc1350d4fc409d65f9229e3f38f467
2020-09-03 09:32:28 -07:00
Rubén NorteandFacebook GitHub Bot 38062cf8a7 Log renderApplication_React_render timespan to scoped performance logger if available
Summary: Changelog: [Changed] Used scoped performance logger to mark the beginning and end of the call to the renderer, instead of using `GlobalPerformanceLogger`.

Reviewed By: lunaleaps

Differential Revision: D23240784

fbshipit-source-id: 7099f1a4b5da3f29596fcee289a715d295ae0a65
2020-09-03 06:46:09 -07:00
Rubén NorteandFacebook GitHub Bot 57b10f759e Allow setting a custom performance logger in XMLHttpRequest
Summary: Changelog: [Added] Added custom method `setPerformanceLogger` to `XMLHttpRequest`

Reviewed By: lunaleaps

Differential Revision: D23129945

fbshipit-source-id: 7a295945eee2b2f81dc0a46f764ffb1d9b14af15
2020-09-03 06:46:09 -07:00
Rubén NorteandFacebook GitHub Bot b90f4d978f Refactor IPerformanceLogger as an interface
Summary:
This type makes more sense as an interface, given a class would be a common implementation (and object types aren't supported in that case).

It also adds the names of the parameters so it's easier to understand for implementers.

Changelog:
[General][Changed] - Changed type definition of IPerformanceLogger from object to interface

Reviewed By: lunaleaps

Differential Revision: D23449816

fbshipit-source-id: be872748827b123587f3f397da20f5545b0aae07
2020-09-03 06:46:09 -07:00
Emily JanzerandFacebook GitHub Bot f0e80ae229 Set selection to end of text input on accessibility click
Summary:
When we render a text input that already has a text value (<TextInput value="123" />), its selection (cursor) is automatically set to the end of the text. However, when you swipe to focus the text input with TalkBack, Android decides it needs to clear the selection, which moves the cursor back to the beginning of the text input. This is probably not what you want if you're editing some text that's already there. Ideally we would just keep the selection at the end, but I don't know how to prevent this from happening - it seems to be part of how TextView handles the accessibility focus event? So instead I'm just explicitly setting the selection to the end of the text in our handler for accessibility click.

Changelog: [Android][Fixed] Move selection to the end of the text input on accessibility click

Reviewed By: mdvacca

Differential Revision: D23441077

fbshipit-source-id: 16964f5b106637e55a98c6b0ef0f0041e8e6215d
2020-09-02 16:17:02 -07:00
Héctor RamosandFacebook GitHub Bot 5fdb558104 Use Xcode 11.6.0 and CocoaPods 1.9.3 (#28837)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/28837

CocoaPods 1.9.3 is the version that is distributed by Circle CI to macOS machines alongside Xcode 11.6.0.

The upgrade to CocoaPods and Xcode is therefore tightly coupled due to our dependency on Circle for our open source CI.

With the upgrade to Xcode 11.6.0, we also bump our target OS to ensure iOS tests use an iOS Simulator that is part of the image.

Reference:
* Circle CI macOS Xcode 11.6.0 image manifest (new version): https://circle-macos-docs.s3.amazonaws.com/image-manifest/v3299/index.html
* Circle CI macOS Xcode 11.3.1 image manifest (previous version): https://circle-macos-docs.s3.amazonaws.com/image-manifest/v2244/index.html

> Source: https://circleci.com/docs/2.0/testing-ios/#supported-xcode-versions

Changelog:
[Internal] Bump Xcode version used for iOS tests.

Reviewed By: fkgozali

Differential Revision: D21415049

fbshipit-source-id: 7a5532e69cfef25999a5b31a09d844f48be9827c
2020-09-02 14:27:48 -07:00
DulmandakhandFacebook GitHub Bot 7465239230 bump SoLoader to 0.9.0 (#29821)
Summary:
SoLoader fixed crash on Android 4.1, and includes many improvements and fixes https://github.com/facebook/SoLoader/releases/tag/v0.9.0. Also Fresco 2.3.0 depends on it, and will create a PR soon to bump Fresco.

## Changelog

[Android] [Changed] - Bump SoLoader to 0.9.0

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

Test Plan: CI is green

Reviewed By: fkgozali

Differential Revision: D23477538

Pulled By: mdvacca

fbshipit-source-id: d2d982d5c5c84fc173dc66dfe069713ca90711a8
2020-09-02 11:38:26 -07:00
Rick HanlonandFacebook GitHub Bot 87b91c057c Clean up eager component stack regexes
Summary:
Clean up from a previous diff.

Changelog: [Internal]

Reviewed By: motiz88

Differential Revision: D23475250

fbshipit-source-id: 3f390134e684bbe95b584dc01b8272a29cecc0af
2020-09-02 10:01:13 -07:00
Lulu WuandFacebook GitHub Bot b5b4a70410 Set caretHidden to true to fix the Xiaomi crash
Summary:
After monitoring scuba for a few days,  previous fixes(D23301714 D23331828 (https://github.com/facebook/react-native/commit/07a597ad185c8c31ac38bdd4d022b0b880d02859)) don't work as expected.

I managed to test this issue on a Xiaomi device, the crash didn't happen but the there was a popup "Frequetly used email" on top of email edit text:

{F317216473}

Getting rid of the popup probably be the right fix.

For more context see https://github.com/facebook/react-native/issues/27204

Changelog: [Android] - Set caretHidden to true to fix the Xiaomi crash

Reviewed By: mdvacca

Differential Revision: D23451929

fbshipit-source-id: 521931422f3a46a056a9faa4b10fe93cf4732db0
2020-09-02 05:28:49 -07:00
Lulu WuandFacebook GitHub Bot 59ddd7cd4b Add memory pressure listener in ReactHost
Summary:
Add memory pressure listener for ReactHost and ReactInstance

Changelog: [Internal]

Reviewed By: ejanzer

Differential Revision: D23214241

fbshipit-source-id: ec8476aeda8d9781d918ea41e5cab69fa862996e
2020-09-02 03:00:57 -07:00
Ankit TiwariandFacebook GitHub Bot 6581c77d0a Refactor RNTester (#29777)
Summary:
This PR tries to remove the code duplication between `RNTesterApp.ios.js` and `RNTesterApp.android.js`. The common code has been moved to `RNTesterAppShared.js`.

This PR also refactors the state architecture and simplifies it to use just one single `useReducer` hook to manage the app's state.

It also adds the visibility hack to make the screen change a little bit faster and removed the unneeded test files.

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

Reviewed By: cpojer

Differential Revision: D23349302

Pulled By: rickhanlonii

fbshipit-source-id: ce0d7b03e6ef65b1655bcb744817b73c5144438b
2020-09-01 19:34:52 -07:00
chirag-singhalandFacebook GitHub Bot abb6433f50 Fix RNTester Path (#29786)
Summary:
* Corrects running on android instructions for rn-tester
 * Corrects path for rn-tester in package.json, contributing.md and .buckconfig

## Changelog

[General] [Fixed] - Fix rn-tester path in documentation and configs

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

Reviewed By: hramos

Differential Revision: D23441274

Pulled By: rickhanlonii

fbshipit-source-id: 9454679335d3794b59a1e4c2e7eae23ed348a427
2020-09-01 18:47:08 -07:00
Frieder BluemleandFacebook GitHub Bot 3a8559b86c Use Gradle Wrapper 6.6 (-all variant) (#29793)
Summary:
`-all` is the **default** for projects generated by Android Studio, and it provides **additional sources** helpful for debugging. It's also much more likely to already exist on a developer's machine (which has built other Android projects), avoiding additional downloads and saving disk space.

`-all` has also been the variant used in `react-native` for all versions prior to 5bc67b658e.

Follow-up to https://github.com/facebook/react-native/issues/29613

## Changelog

[Android] [Changed] - Use Gradle Wrapper 6.6 (-all variant)

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

Test Plan: No test needed since versions are the same.

Reviewed By: fkgozali

Differential Revision: D23406546

Pulled By: mdvacca

fbshipit-source-id: b74dbbfc0317bccf1940b1e5062d866e50aed28a
2020-09-01 17:09:27 -07:00
David VaccaandFacebook GitHub Bot 7d6d5daa2b Refactor caching of Spannable objects instide TextLayoutManager
Summary:
This diff optimizes the caching of Spannable objects managed by the TextLayoutManager class.
Previously, these objects were cached using unsing a String representation of the RedableMap (creating this string adds a non trivial cost), this diff improves the caching performance relying on the equals / hashcode methods of the ReadableNativeMap class

I created a MC just to have a killswitch

Motivation: I was analysing another bug and I found this non performant code

changelog: [internal] internal

Reviewed By: shergin

Differential Revision: D23429365

fbshipit-source-id: 59e5ad0b1b95da992ac393aecfe029da68a8df97
2020-09-01 17:09:27 -07:00
Emily JanzerandFacebook GitHub Bot 045d8fe8c3 Revert D23426786: Prevent ScrollView From Stealing Responder Capture When Using Physical Keyboard
Differential Revision:
D23426786 (https://github.com/facebook/react-native/commit/93e7a7a70dc2f41fccd3c1e4cce80d92913c4243)

Original commit changeset: 7138ef0bc450

fbshipit-source-id: 363d18e68390c2cbc3dabd3cba343ddd313a8b23
2020-09-01 16:47:14 -07:00
Moti ZilbermanandFacebook GitHub Bot 345baf477c Fix reorder-init-list warning in RCTViewComponentView
Summary:
Changes the order of `RCTBorderColors` field designators to match their declaration order, fixing one case of `-Wreorder-init-list` when compiling the RN codebase with Xcode 12.

Changelog: [Internal]

Reviewed By: MichaReiser

Differential Revision: D23447685

fbshipit-source-id: f04a3841187f0869d2efb60e81ce075c45f27f3c
2020-09-01 07:32:57 -07:00
Nick GerlemanandFacebook GitHub Bot 93e7a7a70d Prevent ScrollView From Stealing Responder Capture When Using Physical Keyboard (#29798)
Summary:
Fixes https://github.com/microsoft/react-native-windows/issues/5867

ScrollResponder has logic so that the first tap exiting out of a soft keyboard is captured instead of leaking to its children. This state is checked by testing if `TextInputState.currentlyFocusedInput()` is non-null. This also fires in cases a soft keyboard is not present (e.g. on Desktop where a physical keyboard is in use). This presents to users as clicks/taps not being registered when moving from a TextInput to something esle.

Instead of checking TextInputState to see if the softKeyboard is open, check `this.keyboardWillOpenTo`, which is tied to keyboard open and close events.

## Changelog

[General] [Fixed] - Prevent ScrollView From Stealing Responder Capture When Using Physical Keyboard

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

Test Plan: Validated that on react-native-windows, ScrollView will capture responder events when tapped and a soft-keyboard is open, but will not capture events when clicking from a TextView to a child of a ScrollView and no soft keyboard is open.

Reviewed By: kacieb

Differential Revision: D23426786

Pulled By: TheSavior

fbshipit-source-id: 7138ef0bc4508aaec5531f455b022b105b5d858a
2020-08-31 14:51:39 -07:00
Peter ArganyandFacebook GitHub Bot b231e3ab41 Fix CircleCI breakage in RCTPropsAnimatedNode (#29800)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/29800

I changed this line in D23272735 (https://github.com/facebook/react-native/commit/700960c9f1a27a12d703b4f0a17673690799f019), to conform to normal ObjC semantics: impl files can import their header by file name.

I forgot that their's some special linking logic happening in this directory that doesn't allow for this import type.

This diff just reverts one line to fix CircleCI builds.

Changelog: [Internal]

Reviewed By: shergin

Differential Revision: D23399893

fbshipit-source-id: 976199c659522effd632aaeb38616d0d6c962f1f
2020-08-31 11:39:54 -07:00
Ian ChildsandFacebook GitHub Bot 05abbd245c Declare all attrs used in res targets (#29794)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/29794

Per title - need to declare deps of attrs that we are using (soon Buck will enforce this).

Changelog: declare dependencies of all attributes that are used in the resource target.

Reviewed By: jiawei-lyu

Differential Revision: D23388058

fbshipit-source-id: b395d153188f75f8c0d4a6d69302812a56b23925
2020-08-31 11:36:33 -07:00
Valentin SherginandFacebook GitHub Bot 6d3dcc72c5 Fabric: Using include instead of import in non-Objective-C file
Summary:
`#import` is non-standard C++ extension which is AFAIK part of Objective-C. I am surprised that it even compiles on Android.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D23407689

fbshipit-source-id: 2861138cbcce33674e118a1ad816e33bbf8f30fe
2020-08-30 22:26:38 -07:00
David VaccaandFacebook GitHub Bot fe79abb32c Introduce TransparentImmersiveReactActivity in FB4A
Summary:
This diff creates the new TransparentImmersiveReactActivity in FB4A, the intention is to help integrate TransparentReactActivity with Fb4A

Changelog: [Deprecated][Android] Deprecated method UIManagerModule.getUIImplementation. This method will not be part of the new architecture of React Native.

Reviewed By: stashuk

Differential Revision: D23324543

fbshipit-source-id: 35395fe410790a9611a4637361b888678eb0a836
2020-08-28 17:01:07 -07:00
HamidandFacebook GitHub Bot 0f6fcb2c27 okhttp version 3.12.12 (#29741)
Summary:
This updates okhttp to the newest compatible version with a couple of fixes and improvements. See https://github.com/square/okhttp/commits/okhttp_3.12.x

## Changelog

[Android] [Changed] - Update Okhttp to version 3.12.12

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

Test Plan: Current tests should pass.

Reviewed By: shergin

Differential Revision: D23406613

Pulled By: mdvacca

fbshipit-source-id: b0b4ec52a6a8345f1c36e18e384761386096f1d8
2020-08-28 16:58:09 -07:00
Shoaib MeenaiandFacebook GitHub Bot f19372361f Fix secure text entry setting
Summary:
We have password components which allow visibility to be toggled by
setting both the keyboardType and secureTextEntry props. The order in
which those updates are executed is determined by iterating a NativeMap
of props, and the iteration order of a NativeMap is implementation
dependent.

With libc++ as our STL, we observe that setSecureTextEntry is called
before setKeyboardType. This results in the following sequence of input
type flag settings when toggling the component to visible and then back
to hidden:

* The field starts out with TYPE_TEXT_VARIATION_PASSWORD (0x80).
* When we toggle to visible, setSecureTextEntry is called with password
  being false, which clears TYPE_TEXT_VARIATION_PASSWORD.
  setKeyboardType is then called with the visible-password keyboard
  type, which sets TYPE_TEXT_VARIATION_VISIBLE_PASSWORD (0x90).
* When we toggle back to hidden, setSecureTextEntry is called with
  password being true, which sets TYPE_TEXT_VARIATION_PASSWORD but
  doesn't clear TYPE_TEXT_VARIATION_VISIBLE_PASSWORD. setKeyboardType is
  then called with the default keyboard type and additionally sets
  TYPE_CLASS_TEXT, but TYPE_TEXT_VARIATION_VISIBLE_PASSWORD remains and
  the password field remains visible.

The fix is to clear TYPE_TEXT_VARIATION_VISIBLE_PASSWORD when
setSecureTextEntry is called with password being true, to ensure the
password gets hidden.

Changelog:
[Android][Fixed] - Fix secure text entry setting to always hide text

Reviewed By: shergin

Differential Revision: D23399174

fbshipit-source-id: a81deec702e768672e2103b76ab50ec728dac229
2020-08-28 16:13:21 -07:00
Jimmy ZhangandFacebook GitHub Bot 7d44959940 Respect port information if available from RCTBundleURLProvider
Summary:
Changelog:
Sometimes a port different than kRCTBundleURLProviderDefaultPort (8081) can be specified to RCTBundleURLProvider for packager checking or requesting resources through saving them in JSLocation, this adds support for that rather than always falling back to kRCTBundleURLProviderDefaultPort

Reviewed By: PeteTheHeat

Differential Revision: D23395548

fbshipit-source-id: b7a6f0816d1f226a2e3fb82bf2dc0ab9e79ef966
2020-08-28 16:01:02 -07:00
Tim YungandFacebook GitHub Bot 54e19a6b7f RN: Remove fbjs Dependency
Summary:
Removes `fbjs` dependency from `react-native` because it is no longer referenced.

Changelog:
[General][Changed] - Removed `fbjs` dependency from `react-native`.

Reviewed By: cpojer

Differential Revision: D23358201

fbshipit-source-id: 1945590d2e7ea853434c716a151fc1058718d471
2020-08-28 12:16:26 -07:00
Valentin SherginandFacebook GitHub Bot 6729a3e0bf Fabric: Reviving of RN_SHADOW_TREE_INTROSPECTION in DEBUG mode
Summary:
Shadow tree introspection was disabled for a while, now we need it back working. This diff also restructures the logic of `MountingCoordinator::pullTransaction()` splitting it into two sections, first one for the base case and the second for the overriding case.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: mdvacca

Differential Revision: D23374948

fbshipit-source-id: 0b5f1c598975bceb3dcb6a0eaee67ff58ef9dda1
2020-08-28 10:22:41 -07:00
Valentin SherginandFacebook GitHub Bot bc3251c6a5 Fabric: MountingTelemetry renamed to TransactionTelemetry
Summary:
Just renaming, nothing more.
The idea of MountingTelemetry already grown to something bigger than just mounting telemetry, so we are renaming it.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: mdvacca

Differential Revision: D23374947

fbshipit-source-id: f60ce38b75d1ce77498b84688e59598314c69a78
2020-08-28 10:22:41 -07:00
Lulu WuandFacebook GitHub Bot 07a597ad18 Fix Xiaomi TextInput crash in native
Summary:
Long term fix in native for Error: android_crash:java.lang.NullPointerException:android.widget.Editor$SelectionModifierCursorController.access$300

For more detail please see T68183343 D23301714

Changelog:
[Android][Changed] - Fix Xiaomi TextInput crash in native

Reviewed By: mdvacca

Differential Revision: D23331828

fbshipit-source-id: 914f2d431772f49711b940d47a2b3ef57ab82cdc
2020-08-28 01:44:37 -07:00
David VaccaandFacebook GitHub Bot 871e14fd80 Fix initial render of RN Android TextInput
Summary:
This diff fixes the initial render of RN Android TextInput. The problem was that "attributedString" was not serialized until an event was sent from native side.

Changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D23383969

fbshipit-source-id: 86601434b1fbaa9f712bdb79b013a1d004bc55a4
2020-08-27 20:56:46 -07:00
Joshua GrossandFacebook GitHub Bot e60564215d ReactModalHostView: Prevent infinite SetState/UpdateState loop
Summary:
Make sure to check incoming state values before calling SetState, or we call back and forth forever.

Changelog: [internal]

Reviewed By: mdvacca

Differential Revision: D23389355

fbshipit-source-id: 9cf6110cf654fe93f555a6fbfd9b20f112214e0a
2020-08-27 20:00:02 -07:00
Joshua GrossandFacebook GitHub Bot ab8b77c3d2 Don't allow removeDelete collation experiment if LayoutAnimations is enabled
Summary:
See title.

This feature makes LayoutAnimations less stable and isn't needed generally; will be deleted soon.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D23382973

fbshipit-source-id: f633f482d463b3ee3e4625b30544a33cd6e36119
2020-08-27 19:37:06 -07:00
Joshua GrossandFacebook GitHub Bot fe7ff13fcf LayoutAnimations: stopSurface
Summary:
Implementing stopSurface to stop ongoing animations.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D23382974

fbshipit-source-id: 478e0b1ad443ceeb771b03bd1689ec2bdbe02979
2020-08-27 19:37:06 -07:00
Joshua GrossandFacebook GitHub Bot 6a3c866b6a LayoutAnimations: work on making index adjustment more robust to flattening/unflattening and many reorders
Summary:
My goal in this diff is to make LayoutAnimations more stable, and more resilient to challenging situations. Namely, LayoutAnimations already works fine with:

1) Reorders
2) Flattening/unflattening
3) Deletion and recreation of the same hierarchy
4) Updates conflicting with an existing animation

However, what if /all/ of those things are combined? Handling update conflicts with multiple ongoing animations, repeatedly flattening/unflattening the same layer of hierarchy and reordering both parents and children, etc .

This diff does not make LayoutAnimations perfect, but it does make LayoutAnimations much more resilient to situations it was not able to handle before.

My primary method of testing was to use two Playground examples: one just repeatedly queues up mutations (some animated, some not) that create, update, and delete in the same hierarchy layer. The second, more complex one, mutates between random view hierarchies that involve a lot of flattening and unflattening as well as reordering, over a depth of 5. It also exercises animations over TextInlineViews, which is more challenging.

LayoutAnimations works best with the new "Flattening Differ" for now, because the Flattening Differ produces a much smaller, nearly minimal set of instructions in cases of flattening-unflattening. I would like that to not be a hard requirement for using LayoutAnimations, but it's a good starting-point for now.

As part of this work, I also developed a lot of debugging and logging mechanisms that are handy for detecting inconsistencies and debugging crashes. Some are included in this diff behind `#define` statements that are disabled by default, and the rest will be published separately and likely cannot be landed permanently, as they're more invasive changes that are only helpful in debugging.

# Followups:

- Automate testing: write a suite of C++ tests that mutates between random diffs and guarantees that all mutations in a StubViewTree are sensible
- Construct a set of minimal repros that catalogues all remaining crashes and inconsistency issues (these seem to be extremely marginal cases and are very hard to repro - so I think it's fine to run this in prod for now, but I will follow-up as soon as I'm back to catalogue and fix all remaining issues)
- This diff focuses on *not crashing*, but it is still possible to construct a sequence of complex mutations that results in (for example) views having some opacity between 0 and 1 if animations are interrupted repeatedly. Although this is easy enough to prevent in product code - the types of scenarios I'm running in tests are very unlikely to ever happen in production - it would be nice to be *sure* that LayoutAnimations will always converge to a sensible View hierarchy with up-to-date props.
- In general, the index adjustment logic is complicated. I don't know if there's a great way around it, so I need to at least catalogue and test all edge-cases as mentioned above.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D23382975

fbshipit-source-id: f379d9aa2a4b9c33fa2ba8fa07870c9e31fad5e7
2020-08-27 19:37:06 -07:00
Joshua GrossandFacebook GitHub Bot e3711407a1 Noop when removing views from empty parent
Summary:
In some cases (BottomSheet?) the parent/ViewManager removes all children of the View before Fabric gets a chance to remove the children.

Apparently prior to D23368229 (https://github.com/facebook/react-native/commit/d344fb4e29a827d1e7d233672a3efe3b2b981a8a) (landed just today!) this sequence of operations happened and just noop'ed. Since we've been doing that happily as long as Fabric
has existed, we'll keep doing that for now.

I suspect that on *some* versions of Android this crashes and others it doesn't, based on logviews and my inability to repro certain crashes.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D23387044

fbshipit-source-id: 88a46191adef4f6816bd7babd9103d103ddcef33
2020-08-27 19:37:06 -07:00
Tim YungandFacebook GitHub Bot 9a5ab9e366 EventEmitter: Default Export {Native,RCTDevice}EventEmitter
Summary:
Refactors `NativeEventEmitter` and `RCTDeviceEventEmitter` to be default exports.

Changelog:
[Internal]

Reviewed By: RSNara

Differential Revision: D22203918

fbshipit-source-id: 575b2baf1604d1a8a1bffd6d108c12f3f8415e0a
2020-08-27 17:52:44 -07:00
Frieder BluemleandFacebook GitHub Bot cf8368f204 Update Android Gradle plugin to 3.6.4 (#28170)
Summary:
Android Studio 3.6.3 is now available in the stable channel

https://androidstudio.googleblog.com/2020/04/android-studio-363-available.html

EDIT: Another patch update to `3.6.4` was released in July 2020:

> This minor update supports compatibility with new default settings and features for package visibility in Android 11.

Details: https://developer.android.com/studio/releases/gradle-plugin#3-6-0

## Changelog

[Android] [Changed] - Update Android Gradle plugin to 3.6.4

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

Test Plan: Build project

Reviewed By: mdvacca

Differential Revision: D23357163

Pulled By: fkgozali

fbshipit-source-id: 45f1bfc8a1b21e60c6da03e60e4fa3b1e30c221c
2020-08-27 16:28:28 -07:00
Agastya DarmaandFacebook GitHub Bot 8d198ee5b9 Removing unused import on RCTMultilineTextInputNativeComponent & RCTSingelineTextInputNativeComponent spec. (#29652)
Summary:
This pr removes unused import on RCTMultilineTextInputNativeComponent & RCTSingelineTextInputNativeComponent spec.

## Changelog

[General] [Changed] - Removing unused import on RCTMultilineTextInputNativeComponent & RCTSingelineTextInputNativeComponent spec.

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

Test Plan: TODO

Reviewed By: shergin

Differential Revision: D23346830

Pulled By: sammy-SC

fbshipit-source-id: 59e8cb83a6c1e987e98ba00786a4c54744012466
2020-08-27 15:39:35 -07:00
Tim YungandFacebook GitHub Bot a0dc252dc8 RN: Cleanup ImageSource Flow Type
Summary:
Cleans up the documentation and types for `ImageSource`.

The only material changes here are:

-  `ImageSource`'s array variant will now be `$ReadOnlyArray` instead of `Array`.
- `ImageURISource.headers` is now an object of string properties.

Changelog:
[General][Changed] - Refined `ImageSource` Flow type for array-variant and headers.

Reviewed By: kacieb

Differential Revision: D23355812

fbshipit-source-id: c3407db037dfb1d3514a028d1a237eb76ee6fedd
2020-08-27 15:20:09 -07:00
Emily JanzerandFacebook GitHub Bot 39f694a748 Re-enable animations on Android
Summary:
We disabled animations on Android because native driver animations weren't working yet. After recent changes in NativeAnimatedModule, animations are now working as expected. This diff re-enables animations for bridgeless mode on Android.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D22605612

fbshipit-source-id: 7a7078bf23bb88e7745fc899e1a5ff551425dbad
2020-08-27 15:08:48 -07:00
Joshua GrossandFacebook GitHub Bot d344fb4e29 When logging errors with deleteView, try to find actual index of view
Summary:
If we try to delete a view and find the wrong one, when we crash, try to log the *actual* index of the view in question.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D23368229

fbshipit-source-id: 7f9835fd07cfe4924d05c7e37b42b9bcdffff4a9
2020-08-27 14:00:09 -07:00
Valentin SherginandFacebook GitHub Bot cb48b50290 Fabric: Storing commit revision number in MountingTelemetry
Summary:
Now we store a revision number of a Shadow Tree that leads to a transaction for which the concrete instance of MountingTelemetry corresponds. This is useful to understand how many actual transactions were skipped during a mounting phase (a mounting transaction does not directly correspond to a commit operation).

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: mdvacca

Differential Revision: D23364663

fbshipit-source-id: 32b86bcdfc1ae97d8fff3b97a8615cc5a5b4d4a9
2020-08-27 12:33:58 -07:00
Valentin SherginandFacebook GitHub Bot dfa25df2cf Fabric: Counting number of text measuments as part of MountingTelemetry
Summary:
With this change, we now collect the number of text measurements that we perform during the layout phase of the commit. Text measurements are the most expensive layout operations which pretty much responsible for the vast majority of time spent in the layout phase.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: mdvacca

Differential Revision: D23364664

fbshipit-source-id: 19514b93166b4053c2f3be37e79507f2c5248000
2020-08-27 12:33:58 -07:00
Joshua GrossandFacebook GitHub Bot 0fb7f5a6f5 NativeAnimatedModule in Fabric no longer crashes if all Animated nodes are not visited
Summary:
Previously this was crashing only in debug, but that's too noisy and isn't giving us any value for now.

Changelog: [Internal]

Differential Revision: D23338800

fbshipit-source-id: bf1535cdda231ccf30af6d00509eec1499a552a1
2020-08-27 01:32:08 -07:00
Joshua GrossandFacebook GitHub Bot 5e04e932a8 Give MountingManager debug log a little more context
Summary:
see title

Changelog: [internal]

Differential Revision: D23338751

fbshipit-source-id: 0ad9d4f4a415aaab762572a11044f359d60c2de7
2020-08-27 01:32:08 -07:00
Joshua GrossandFacebook GitHub Bot 792f6f69c9 New StopSurface deleteView mechanism
Summary:
Simplifying the StopSurface flow. Before we would still attempt to execute MountItems, but only the "Delete" operations. This was... well, frankly, overcomplicated. Instead we can just ignore all future MountInstructions for that Surface and delete all views recursively from the root.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D23338752

fbshipit-source-id: 6e7ab29ad85572782bfc6a39845a8a619f001559
2020-08-27 01:32:08 -07:00
Eloy DuránandFacebook GitHub Bot 941bc0ec19 Upstream RN macOS Hermes integration bits (#29748)
Summary:
Microsoft’s RN for macOS fork supports the Hermes engine nowadays https://github.com/microsoft/react-native-macos/pull/473. As a longer term work item, we’ve started moving bits that are not invasive for iOS but _are_ a maintenance burden on us—mostly when merging—upstream. Seeing as this one is a recent addition, it seemed like a good candidate to start with.

As to the actual changes, these include:

* Sharing Android’s Hermes executor with the objc side of the codebase.
* Adding a CocoaPods subspec to build the Hermes inspector source and its dependencies (`Folly/Futures`, `libevent`).
* Adding the bits to the Xcode build phase script that creates the JS bundle for release builds to compile Hermes bytecode and source-maps…
* …coincidentally it turns out that the Xcode build phase script did _not_ by default output source-maps for iOS, which is now fixed too.

All of the Hermes bits are automatically enabled, on macOS, when providing the `hermes-engine-darwin` [npm package](https://www.npmjs.com/package/hermes-engine-darwin) and enabling the Hermes pods.

## Changelog

[General] [Added] - Upstream RN macOS Hermes integration bits

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

Test Plan:
Building RNTester for iOS and Android still works as before.

To test the actual changes themselves, you’ll have to use the macOS target in RNTester in the macOS fork, or create a new application from `master`:

<img width="812" alt="Screenshot 2020-08-18 at 16 55 06" src="https://user-images.githubusercontent.com/2320/90547606-160f6480-e18c-11ea-9a98-edbbaa755800.png">

Reviewed By: TheSavior

Differential Revision: D23304618

Pulled By: fkgozali

fbshipit-source-id: 4ef0e0f60d909f3c59f9cfc87c667189df656a3b
2020-08-27 01:18:33 -07:00
Luna WeiandFacebook GitHub Bot e3845f44ea Clean up unused methods of IPerformanceLogger
Summary:
Changelog:
[Internal][Removed] - Remove unused performance logger methods and merged all the logs to `logEverything`

Reviewed By: cpojer

Differential Revision: D23284721

fbshipit-source-id: 91f948302bb36bb45ceb3c9510392029faa59605
2020-08-27 01:09:26 -07:00
Luna WeiandFacebook GitHub Bot affac5ab30 Fix addTimespanAnnotations
Summary:
Changelog:
[Internal][Fixed] - Fix call for addTimespanAnnotations to call addTimespanAnnotation.

I'm not sure why Flow didn't catch this?

Reviewed By: motiz88

Differential Revision: D23284722

fbshipit-source-id: 054446f5e1bd9881eddb0c0252797142026717ef
2020-08-27 01:09:25 -07:00
Samuel SuslaandFacebook GitHub Bot 33c16689a8 Deallocate UIViewController after it was used in Modal component
Summary:
Changelog: [Internal]

# Problem
`RCTModalHostViewComponentView` reuses the same UIViewController between recycles. This can be a problem if dismissal of the modal is animated as the UIViewController is still presented while it is being dismissed. That's when "Application tried to present modally an active controller" exception can happen.

# Solution
Deallocate UIViewController when `RCTModalHostViewComponentView` is recycled.

Reviewed By: PeteTheHeat

Differential Revision: D23345711

fbshipit-source-id: da540571184afcb88b52758c4a1f0b4ec5874eb1
2020-08-26 18:49:21 -07:00