Commit Graph
22452 Commits
Author SHA1 Message Date
Joshua Gross 08a1531a1f Differ: simplify flatten/unflatten logic
Summary:
Since each ShadowViewNodePair will point to any matched pair in the "other" tree during diffing, we can rely on the presence of the "other" pointer instead of
always removing nodes from `deletionCreationCandidatePairs` when they're matched.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D28003335

fbshipit-source-id: 0b886946eedc497091ca79c436f160b3d4bf3f1e
2021-04-26 11:59:11 -07:00
Joshua Gross 6e13040ecb Differ: consolidate two code paths into updateMatchedPairSubtrees
Summary:
There's a lot of code duplication in the differ. Reduce by factoring a duplicated code path into `updateMatchedPairSubtrees`.

This handles cases of updating trees with flattening or unflattening.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D28003339

fbshipit-source-id: cbbf890ba447b29d79aedea374b173de40e71334
2021-04-26 11:59:11 -07:00
Joshua Gross 11e166b9aa Differ: refactor: use mutation container list to store all temporary mutations
Summary:
Simple refactor to use this struct to store lists instead of references to lists.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D28003337

fbshipit-source-id: a37fa23ed3c1e1b273f92bf5ad5179a0fd1d852b
2021-04-26 11:59:10 -07:00
Joshua Gross 3a99c7cdbb Differ: add failing test case 1167342011 which covers an existing error
Summary:
Found by running random tests and extracting a failing seed.

This error existed in master (and existed prior to recent refactors) and will be fixed by the end of this stack.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D28003332

fbshipit-source-id: 9c4a10d236c24337b089c44e8c1beb22358cfb05
2021-04-26 11:59:10 -07:00
Joshua Gross 1b4a5176d7 Testing mechanism to find new failing Differ test-cases
Summary:
This code can be uncommented locally and run several times to discover new failing seeds.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D28003333

fbshipit-source-id: 6a3b6c08ae02bccc5c4d26067409ff6c736f8a89
2021-04-26 11:59:10 -07:00
Joshua Gross 66ba89921a Differ tests: use react_native_assert(false) instead of FAIL() to get logs upon test failure
Summary:
Calling `FAIL()` doesn't flush glog, but `react_native_assert(false)` does. Both will have the effect of failing the test.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D28003334

fbshipit-source-id: 802ad1f59e46eb048fd6ca95f5978eeaaad83f3a
2021-04-26 11:59:10 -07:00
Samuel Susla 9cd98fa3ee Prevent redundant dispatches onto RuntimeExecutor queue in AsynchronousEventBeat::induce
Summary:
Changelog: [internal]

Prevent redundant calls to RuntimeExecutor by making sure no two calls to the executor are scheduled at the same time.

Reviewed By: mdvacca

Differential Revision: D27989412

fbshipit-source-id: 8f9b1591f7c9c2265fd4b05bf3dc5505ffc2568b
2021-04-25 16:15:25 -07:00
Tim Yung f598dd0ee3 RN: Create Experiment for collapsable (iOS)
Summary:
Sets up an experiment that enables `collapsable` in Fabric for iOS. This will enable us to validate with production data that enabling the use of this prop does not cause unexpected regressions.

Changelog:
[internal]

Reviewed By: mdvacca

Differential Revision: D27987619

fbshipit-source-id: 9b1c0ff45bed09b1e72ad7d9c782f07bb4211cc6
2021-04-25 01:17:55 -07:00
Tim Yung b914153286 Animated: Delete getNode() on Refs
Summary:
In 0.62, `createAnimatedComponent` was changed to use `forwardRef` instead of requiring callers to use `ref.getNode()`. In order to preserve backward-compatibility, `ref.getNode()` was monkey-patched onto the returned ref, if possible, to return the `ref` and output a console warning.

Three major (well, technically, minor) releases later, we are dropping support for `getNode()`. Calling it on the `ref` of an animated component will begin to fail after this (unless the underlying component itself actually implements a `getNode()` method on its imperative handle).

Changelog:
[General][Removed] - Removed `getNode()` from animated component refs.

Reviewed By: nadiia

Differential Revision: D27979882

fbshipit-source-id: 885c3dbf4f2749c994fc2662dd6f16ff3dd887c7
2021-04-24 17:09:12 -07:00
Samuel Susla 1b592631a7 Prevent redundant dispatches onto RuntimeExecutor queue in AsynchronousEventBeat::induce
Summary:
Changelog: [internal]

Current implementation of `AsynchronousEventBeat` dispatches lambdas through `RuntimeExecutor` regardless if it has done so previously.

So if `AsynchronousEventBeat::induce` is called 30 times, it will dispatch 30 lambdas.

In `AsynchronousEventBeatV2`, we make sure only single lambda is dispatched to `RuntimeExecutor` at a time.

Reviewed By: mdvacca

Differential Revision: D27940300

fbshipit-source-id: 2bad25c86315c1712b4a1da8c1d4702734cec70f
2021-04-24 03:21:09 -07:00
Samuel Susla 09cb12c26c Pass eventPriority by value instead of reference
Summary:
Changelog: [internal]

EventPriority is backed by int, passing it by reference doesn't provide any performance benefits. Quite contrary, it can make it slower because of indirectness (in our case it is probably negligible).

Reviewed By: mdvacca

Differential Revision: D27938600

fbshipit-source-id: 37d1312627dd5a8f9012dfb35d21afe716a16ad7
2021-04-24 03:21:08 -07:00
Kevin Gozali f31497354b iOS: make RCTSurfaceHostingView have default backgroundColor
Summary:
Previously it defaults to using transparent color (iOS default), but when using `RCTSurfaceHostingProxyRootView` we actually manually set to `[UIColor whiteColor]`. However, if the surface is initialized via a different API, the color wasn't set. To avoid confusion and backward incompatibility, let's just set the same background color here.

We can decide in the future if the default color should be transparent instead.

Changelog: [Fixed][iOS] RCTSurfaceHostingView default background color is now consistent with RCTRootView

Reviewed By: RSNara

Differential Revision: D27973748

fbshipit-source-id: c506afbc5629df6647277aa2323f084773c8e760
2021-04-23 19:54:54 -07:00
Ramanpreet Nara d48c2be46f Wire up RuntimeExecutorFlushing to MobileConfig
Summary:
With D27975839, RuntimeExecutor will be able to start flushing the queued up NativeModule calls in every call from C++ -> JavaScript. We're going to test this feature to measure its impact. In this diff, I wire up the the MobileConfig to ReactFeatureFlags.

Changelog: [Internal]

Reviewed By: JoshuaGross

Differential Revision: D27978112

fbshipit-source-id: 47e1e74398c62755bb0fdc6b54b7fd3aa47eb877
2021-04-23 18:16:03 -07:00
Ramanpreet Nara c0ec82e61e Add flushing to RuntimeExecutor
Summary:
## Motivation
With the bridge, every call into JS flushes the queue of NativeModule calls. Fabric bypasses this mechanism, because it uses a RuntimeExecutor that schedules work directly on the JavaScript thread. This diff makes Fabric's RuntimeExecutor also flush the queue of NativeModule calls.

This likely won't fix anything in Fabric, because we don't execute any async NativeModule calls on Fb4a. However, this is necessary for the drainMicrotask work we're doing in D27729702 (https://github.com/facebook/react-native/commit/73108477589a18cecb303ef556fa3da02f8ca1b8), because (1) we need to drain the Hermes microtask queue on every call from C++ -> JavaScript (2) we drain the microtask queue [inside JSIExecutor::flush()](https://github.com/facebook/react-native/blob/de477a0df6da770e579892d4875a8995c430ebdf/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp#L427,L445).

Changelog: [Android][Fixed] - Flush JSIExecutor in Fabric's RuntimeExecutor

Reviewed By: JoshuaGross

Differential Revision: D27975839

fbshipit-source-id: 27f031fb36593253da116a033e30998475eb1473
2021-04-23 18:16:03 -07:00
Ramanpreet Nara db3625a3b0 Refactor: Move RuntimeExecutor into Instance.cpp
Summary:
RuntimeExecutor is currently declared inside NativeToJsBridge. It doesn't need to be: Instance.cpp can use NativeToJsBridge::runOnExecutorQueue to schedule work on the JS Thread. So, this diff moves RuntimeExecutor out of NativeToJsBridge into Instance.cpp. Now, both the JS CallInvoker and the RuntimeExecutor are declared in the same file.

Changelog: [Internal]

Reviewed By: JoshuaGross

Differential Revision: D27975840

fbshipit-source-id: aa06f479fa24bb7a15bfd21712df5414a183266c
2021-04-23 18:16:03 -07:00
Neil Dhar c68c55469f Initialise LineMeasurement::xHeight in constructor
Summary:
Fix a bug in the constructor of `LineMeasurement` where it did not initialise `xHeight` correctly.

Changelog: [Internal]

Reviewed By: JoshuaGross

Differential Revision: D27972942

fbshipit-source-id: a56d55fdfe286bd11a6a81a3d024504f070bdb19
2021-04-23 17:46:38 -07:00
Ramanpreet Nara da150343f7 TM Create: log error when method queue is nil
Summary:
When TurboModuleManager creates TurboModules, it creates and assigns a method queue to the module using ObjC's Associated Object API:

https://www.internalfb.com/code/fbsource/[c91dc16f4b63]/xplat/js/react-native-github/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm?lines=636

Down the line, we retrieve this method queue, and use it to create a native CallInvoker:

https://www.internalfb.com/code/fbsource/[c91dc16f4b63abd05c7c9a038e88ca692a453c69]/xplat/js/react-native-github/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm?lines=279-284

We should assert that this method queue isn't nil.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D27956219

fbshipit-source-id: 2554cf2bffc732bb895e6dc082338a38b05f6580
2021-04-23 15:59:24 -07:00
Ramanpreet Nara 497eb578ab Fix invalidation for modules with infra-generated method queues
Summary:
When invalidating TurboModules, the TurboModule infra looks for a methodQueue method on the TurboModule (line 871 below). If it finds one, the TurboModuleManager dispatches module invalidate on that method queue:

https://www.internalfb.com/code/fbsource/[c91dc16f4b63abd05c7c9a038e88ca692a453c69]/xplat/js/react-native-github/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm?lines=847-848%2C870-883

## The Problem

TurboModules that neither provide a method queue, nor request a method queue won't respond to selector(methodQueue). For those modules, the TurboModule system won't dispatch invalidate to their method queue

## The Fix
Calling selector(methodQueue) is an unreliable way of getting the module's method queue. The TurboModuleManager attaches a method queue to every TurboModule as an associated object:

https://www.internalfb.com/code/fbsource/[c91dc16f4b63]/xplat/js/react-native-github/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm?lines=636

In this diff, in the TurboModule invalidate method, we retrieve the method queue using ObjC's associated object API. This guarantees that all TurboModules will be invalidated on their method queues.

Changelog: [iOS][Fixed] - Invalidate TurboModules with infra-generated method queues on their method queues

Reviewed By: appden

Differential Revision: D27954644

fbshipit-source-id: af4408e444d03a15d8d8e154b3980511b81d5fb1
2021-04-23 15:59:24 -07:00
Ramanpreet Nara f34a2899e4 Invalidate TurboModules on their method queues
Summary:
## Rationale
With the bridge, the invalidate method of every TurboModule gets called on the TurboModule's method queue. This ensures that we can safely clean up resources accessed in the TurboModule's async methods. In bridgeless mode, we don't invalidate each module on its method queue. After this diff, we will clean up every TurboModule on its own method queue.

## Changes
- Make RCTInstance dealloc itself on the JavaScript thread.
- Terminate the JavaScript thread on the JavaScript thread. This ensures that no work executes on the JavaScript thread after we clean up RCTInstance.
- Make [RCTTurboModuleManager invalidate] execute right before RCTInstance terminates the JavaScript thread.
- **Fix:** Make [RCTTurboModuleManger invalidate] synchronously invalidate modules on their own method queues.

Changelog: [Internal]

Reviewed By: PeteTheHeat

Differential Revision: D27933587

fbshipit-source-id: 7630e7fc074df2f5a3293192431105c747b8588f
2021-04-23 15:59:24 -07:00
Ramanpreet Nara 090196f330 ReactContext: Fail fast when NativeModules thread is null
Summary:
By the time that we call [ReactContext.assertOnNativeModulesQueueThread()](https://www.internalfb.com/intern/diffusion/FBS/browsefile/master/xplat/js/react-native-github/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java?commit=747a25280435d276fb975ccfe36fd5e60254c4e4&lines=355%2C359), ReactContext.mNativeModulesMessageQueueThread must be non-null. This implies that two things must have happened:
1. We initialized the ReactContext
2. After initialization, ReactContext.mNativeModulesMessageQueueThread must be non-null.

According to T85807990, ReactContext.mNativeModulesMessageQueueThread is null. Since ReactContext doesn't ever write to ReactContext.mNativeModulesMessageQueueThread aside from during initialization, it must mean that we either didn't initialize properly, or we initialized, but set the NativeModules thread to null. This diff throws IllegalStateExceptions inside ReactContext initialization, which should help narrow down the crash in T85807990.

Changelog: [Internal]

Reviewed By: PeteTheHeat

Differential Revision: D27729355

fbshipit-source-id: e39030b7db8862ae76fb644efaafb382a79b8ad0
2021-04-23 15:12:46 -07:00
Andrei Shikov bda032af6e Adjust animation batch numbers to be consistent when controlled by native
Summary:
D27682424 (https://github.com/facebook/react-native/commit/ea1ff374de2ece7d1698b14d4e1aa8075df22cdd) updated how animated node batches are executed in Fabric. On Paper, these batches were controlled by native module in some places (batch was executed ~every 2 frames), but some animations were switching animation batching control to JS globally there as well.

This change updates two things:
- If batching is controlled by native, it makes sure batches are calculated correctly.
- At the same time, this change switches control for animation node batching to JS, aligning it with Fabric.

Changelog: [Internal]

Reviewed By: JoshuaGross, mdvacca

Differential Revision: D27939659

fbshipit-source-id: d6251bce2a303a4a007dc10297edc0175cc4b348
2021-04-23 15:07:35 -07:00
Lulu Wu de477a0df6 Register RCTEventEmitter as callable module for Venice
Summary:
## Context
Trying to fix this js error
```
com.facebook.errorreporting.lacrima.common.exception.LacrimaJavascriptException: Error: Module RCTEventEmitter has not been registered as callable. Did you forget to call `RN$registerCallableModule`?, js build: UNKNOWN
```
https://fburl.com/logview/fvc33d48

Changelog:
[General][Changed] - Register RCTEventEmitter as callable module for Venice

Reviewed By: PeteTheHeat

Differential Revision: D27969226

fbshipit-source-id: 8e807ee5b2ef447b0bb49fa2107352d89584c181
2021-04-23 13:32:05 -07:00
Nadiia D 23ae702d97 Add e2e test for a Modal component
Summary:
Changelog:
[General][Added] - [RNTester] Added a modal component example with onShow/onDismiss callbacks

Reviewed By: lunaleaps

Differential Revision: D27926745

fbshipit-source-id: c2f2b8a15154a090bb747bb02cdf428e90861824
2021-04-23 10:12:59 -07:00
Xuan Huang 7310847758 Perform Engine Microtasks in JSIExecutor
Summary:
Changelog: [Internal]

This diff introduce a helper `performMicrotaskCheckpoint` to
repetitively invoke `jsi::Runtime::drainMicrotasks` to exhaust
the microtasks queue provided by JS VMs. Please refer to `jsi.h`
for more details about the behavior of the API.

Conceptually, the checkpoint needs to be performed whenever the
JS stack is considered empty. In practice, we can just make a
call whenever RN is returned from C++->JS calls.

In the current RN, this happened in JSIExecutor:
- `::callFunction` => `callFunctionReturnFlushedQueue_-> call`
- `::invokeCallback` => `invokeCallbackAndReturnFlushedQueue_-> call`
- `::flush` => `flushedQueue_->call`

Each of them invoke a bound method on the JS bridge object. Note
that `setImmediate` callbacks are executed before they returned.
This means immmediates are invoked before engine microtasks. This
is okay because the priority between `setImmediate` and engine
"microtask" are not defined. (`setImmediate` is non-standard and RN
already treat `setImmediate` in a similar priority as microtask
for the existing Promise polyfill.)

Reviewed By: RSNara

Differential Revision: D27729702

fbshipit-source-id: b64b3705d2ff5100075d860c89f03a847369b7ac
2021-04-23 02:43:06 -07:00
Xuan Huang bddff73790 Introduce drainMicrotasks to JSI
Summary:
Changelog:
[Internal][Added] - Introduce drainMicrotasks to JSI

This diff proposed a new JSI API `drainMicrotasks` to define
how hosts may integrate with the JSVMs' internal microtask
queue (a.k.a. job queue) and hence their native Promise.

The name `drainMicrotasks` is slightly preferred over `drainJobs`
to favor *host-friendliness* over *engine-friendliness*.

This diff auto implement the new API in JSC and Hermes as stubs
to make sure things compiled.

Please refer to the doc-comments in the `jsi.h` for a detailed
documentation on the semantics and the design of this API.

### Notes on the existing APIs from JSVMs

The presence of such queue and APIs to operate on them are
ubiquitous:
- Hermes: `Runtime::drainJobs`
- V8: `MicrotaskQueue::PerformCheckpoint`
- JSC: `VM::drainMicrotasks`
- QuickJS: `JS_ExecutePendingJob`

The only exception is ChakraCore, which requires hosts to provide
the queue and set up the `JsSetPromiseContinuationCallback`,
but a JSI implementation can provide that queue trivially.

### Extra note on ECMA-262

ECMA-262 changed the spec at Mar 2020 from "asking an ECMAScript
implementation to maintain a Job Queue" to "Ask the embedder to
define its event loop, including the job queue" so technically:
- the internal approach is closer to the old spec.
- the ChakraCore approach is closer to the current spec.

Reviewed By: mhorowitz

Differential Revision: D27727920

fbshipit-source-id: b839b959facbc009f7d14b781e9287c46ea64373
2021-04-23 02:43:06 -07:00
Andy Chou 266b21baf3 Update height for different UIDatePickerStyles
Summary:
Adding support for DatePickerStyles on iOS13.4+
Changelog:
[iOS][Added] - Expose UIDatePickerStyles as a prop for DatePickerIOS

Reviewed By: PeteTheHeat

Differential Revision: D27953279

fbshipit-source-id: a35adf245147467ecbacac3770b9c50836cea468
2021-04-22 22:27:22 -07:00
Andy Chou 2b62e19a78 iOS 14 Support new DatePicker styles
Summary:
Adding support for DatePickerStyles on iOS13.4+

Changelog:
[iOS][Added] - Expose UIDatePickerStyles as a prop for DatePickerIOS

Reviewed By: PeteTheHeat

Differential Revision: D27948608

fbshipit-source-id: fcc16c630148818d9db0c9eef8363f8592b13791
2021-04-22 22:27:22 -07:00
Xuan Huang 5127c71d67 Upgrade npm ssri to fix security vulnerability
Summary:
Changelog: [internal]

`ssri` usages came from `webpack` so we ran
`yarn upgrade "webpack"`.

Reviewed By: dulinriley

Differential Revision: D27922406

fbshipit-source-id: cddca21a8035d3bd303f8cea82afe2264b35eed1
2021-04-22 12:16:18 -07:00
Peter Laraia 42b6e6682c Fix crash - check if backgroundColor is null before trying to fetch it in ViewProps isLayoutOnly
Summary:
Noticed while working in MobileHome with android device, when interacting with the Tasks change progress/priority components (MobileHomeTasksDetailsSelectorToken), which provides `borderRadius` style and `backgroundColor: ifSelected ? value : null`, and when `backgroundColor` is `null`, the line changed in this diff crashes (throwing the `NoSuchKeyException` at `ReadableNativeMap:110` [because of isNull check on `ReadableNativeMap:107`])

Changelog:
[Android][Fixed] - Fixed crash when using style borderRadius: any with backgroundColor: null

Reviewed By: JoshuaGross

Differential Revision: D27932828

fbshipit-source-id: 801b04c856ee9dc5a36bbf3e6e3d81de9b1e81a1
2021-04-22 10:41:38 -07:00
David Vacca b67dc01d1d Replace int -> int32_t
Summary:
This diff replaces all usages of int by int32_t. This is to ensure we always use a fixed size for int that matches what's expected on Java.

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27915608

fbshipit-source-id: 634c45796dda1d4434c3ad6ff3e199931c22940b
2021-04-22 09:50:23 -07:00
Kevin Gozali 6155ad0438 iOS: allow disabling packager access at runtime
Summary:
Allow disabling packager access based on the app runtime environment, e.g. running tests.

Changelog: [Internal]

Differential Revision: D27903019

fbshipit-source-id: cafa25e93efab3cf8e96d60a8fc03de8abb833f4
2021-04-22 08:15:28 -07:00
Rick Hanlon 96930fad13 Flip useTransition tuple
Summary:
This diff flips the order of the tuple returned by useTransition.

See here for more info: https://github.com/facebook/react/pull/20976

Changelog: internal

Reviewed By: gaearon

Differential Revision: D27928490

fbshipit-source-id: a1896f92ef24382012fa3be1ef043752e62b21e7
2021-04-21 20:29:34 -07:00
Peter Argany 2c34946662 Bridgeless support for RCTSourceCode
Summary:
Changelog: [Internal]

`RCTSourceCode` uses the bridge to export bundleURL. This adds bridgeless support.

Reviewed By: mdvacca

Differential Revision: D27925767

fbshipit-source-id: 46e93f54abfe8d27ace1241317fa22f24be717fe
2021-04-21 17:11:53 -07:00
Luna Wei ca8a75536e Add scrollToEnd ability to viewability tests
Summary:
Changelog:
[Internal] - RNTester FlatList and SectionList examples to add prop for scrolling to end of list.

Reviewed By: kacieb

Differential Revision: D27816830

fbshipit-source-id: 6b4bd4cb9a651f4a4e9045d600cc219a6ba2e39b
2021-04-21 15:09:33 -07:00
Pavlos Vinieratos 73844712b6 Fixing the git attrs for all the people and all the files and all future (#31128)
Summary:
We have had problems with `.gitattributes`, `.bat` and `.pbxproj` (Xcode) files for a while. The two main concerns were:
- Xcode project files not diffing correctly.
- Windows files having messed up line endings.
This PR fixes both issues, hopefully forever.

After seeing the diffs from v0.63 -> v0.64 and the changes in https://github.com/facebook/react-native/pull/29792, I, again, felt that this is going to cause problems, so I looked into both issues.

I started with `git check-attr -a Artsy.xcodeproj/project.pbxproj` after removing the `.gitattributes` file that contained `*.pbxproj -text` and there are no "guessed" attributes that would break things, and diffing and checking in worked well with the current git version. I agree this is not needed, so I left it out.

I looked into what it was doing before, and it was telling git (for the xcode project file) to "unset text", which means (according to https://git-scm.com/docs/gitattributes#_text) that it should not try to do any line ending changes when checking in that file. At some point git must have done this, and that's why it was needed, but no more, so it's safe and good to get rid of this, as it helps with nothing anymore.

Now for the bat files. We don't need any extra instructions for `gradle` and `*.sh` files as they are guessed correctly, so these are also safe to keep removed (https://github.com/facebook/react-native/pull/29792/files#diff-618cd5b83d62060ba3d027e314a21ceaf75d36067ff820db126642944145393eL5).

But we do need the `*.bat` instruction. I noticed that when working on macOS there were two problems that made things funky.
- One, is that the editor (usually vscode but not the important) would convert line endings to lf when editing a bat file.
- Two, is that git thought the files are lf line endings.

To fix the first one, I added a rule in `.editorconfig` (that's whats important, when any editor just supports editorconfig, but all my editors do). I can't believe how we missed that for sooooo long {emoji:1f605}!

To fix the second, I added the `.gitattributes` instruction **and** `renormalize`d the files (https://git-scm.com/docs/git-add#Documentation/git-add.txt---renormalize and https://docs.github.com/en/github/using-git/configuring-git-to-handle-line-endings#refreshing-a-repository-after-changing-line-endings). I think the problem all along was that even though the files had crlf, git still thought they were using lf.

After the editorconfig change and the renormalization, everything behaves correctly and as expected. Changing bat files on macOS and Windows is fine now, producing only the smallest change needed, no random line ending diffs. Also here is a screenshot of one of the files actually crlf. It's these tiny things at the end of each line {emoji:1f453}.
<img width="612" alt="Screenshot 2021-03-10 at 12 20 28" src="https://user-images.githubusercontent.com/100233/110630943-ef536280-819d-11eb-9212-dbd70f038a44.png">

I have tested this on macOS and Windows, doing changes in both bat and xcode files, and verified that diffing and checking in files works well.

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

[General] [Added] - Added an `.editorconfig` file to help with default line endings for Windows files.

[Internal] [Fixed] - Added a rule in `.editorconfig` and `.gitattributes` to help with default line endings for Windows files.

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

Test Plan: Feel free to go on a macOS or Windows machine (or both) and, using any editor that supports editorconfig, do any change in a `.bat` file. Then look at your git diff in terminal or gui or whatever you use, and then look at the sky and smile. It's fixed. The diff is just your change. Everything is as it should {emoji:1f49c}.

Reviewed By: nadiia

Differential Revision: D27914636

Pulled By: hramos

fbshipit-source-id: fc4e53a4fa42cb13e29686669e8de1679c2242e7
2021-04-21 11:27:32 -07:00
Andrei Shikov 6fda118116 Show surfaceId when logging IntBufferBatchMountItem
Summary:
Adds surface id for string logs of the IntBufferBatchMountItem to help debug updates with multiple surfaces.

Changelog: [Internal]

Reviewed By: JoshuaGross

Differential Revision: D27884232

fbshipit-source-id: c5ec65585830f7aa5b902603bcd1e91b61cfe4c1
2021-04-21 10:32:18 -07:00
David Vacca 091197be5e Fix MapBufferBuilder::ensureDynamicDataSpace
Summary:
There was a subtle bug in MapBufferBuilder::ensureDynamicDataSpace where in some situations allowed MapBufferBuilder to use unowned memory.

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D27904642

fbshipit-source-id: de447633349094b0e8c5cb5e377dd31f5bfd1471
2021-04-21 10:27:57 -07:00
David Vacca b614afc613 Refactor MapBufferBuilder to use int to store size of Mapbuffer data
Summary:
Refactor MapBufferBuilder to use int to store size of Mapbuffer data

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D27904646

fbshipit-source-id: 6b8b96fdd30184b6d35c1d612743eae653854d6d
2021-04-21 10:27:57 -07:00
David Vacca 668d71aa0b Refactor dataSize to use int instead of short
Summary:
DynamicData can contain a big amount of data, refactoring type to use int instead of short

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27904643

fbshipit-source-id: 157064b280e27a9c7c4a4f55af310392b178feda
2021-04-21 10:27:57 -07:00
David Vacca f946001c4e Change type of MapBufferBuilder.dynamicDataSize variable
Summary:
Dynamicdata can contain long datastructures, increasing type of MapBufferBuilder.dynamicDataSize to int

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27904647

fbshipit-source-id: ccbccf9328a6aa301aa3f9bf5c1b3c20f56e2a19
2021-04-21 10:27:57 -07:00
David Vacca 8cdba40987 Fix MapBuffer.getString() method
Summary:
found a bug in MapBuffer.getString() method, this diff is fixing it

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27904644

fbshipit-source-id: 746812235539ff75c5ce53c6f872ede9779fa1fa
2021-04-21 10:27:57 -07:00
David Vacca e92be1c14b Add extra asserts and early deallocation in ReadableMapBuffer::importByteBufferAllocateDirect
Summary:
Add extra asserts and early deallocation in ReadableMapBuffer::importByteBufferAllocateDirect

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27904645

fbshipit-source-id: 075a007c4ec5e005b839add054bd68c233b65801
2021-04-21 10:27:57 -07:00
David Vacca 64844d900a Refactor names of ReadableMapBuffer class variables
Summary:
Refactor names of ReadableMapBuffer class variables

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27867056

fbshipit-source-id: de96429cbd1142e14fa74f7f953d560ba5918954
2021-04-21 10:27:57 -07:00
Rick Hanlon 42dceaf21c React Native sync for revisions f7cdc89...bd7f4a0
Summary:
This sync includes the following changes:
- **[bd7f4a013](https://github.com/facebook/react/commit/bd7f4a013 )**: Fix sloppy factoring in `performSyncWorkOnRoot` ([#21246](https://github.com/facebook/react/pull/21246)) //<Andrew Clark>//
- **[78120032d](https://github.com/facebook/react/commit/78120032d )**: Remove `flushDiscreteUpdates` from end of event ([#21223](https://github.com/facebook/react/pull/21223)) //<Andrew Clark>//
- **[a3a7adb83](https://github.com/facebook/react/commit/a3a7adb83 )**: Turn off enableSyncDefaultUpdates in test renderer ([#21319](https://github.com/facebook/react/pull/21319)) //<Ricky>//
- **[cdb6b4c55](https://github.com/facebook/react/commit/cdb6b4c55 )**: Only hide outermost host nodes when Offscreen is hidden ([#21250](https://github.com/facebook/react/pull/21250)) //<Brian Vaughn>//
- **[b9c6a2b30](https://github.com/facebook/react/commit/b9c6a2b30 )**: Remove LayoutStatic check from commit phase ([#21249](https://github.com/facebook/react/pull/21249)) //<Brian Vaughn>//
- **[af1a4cbf7](https://github.com/facebook/react/commit/af1a4cbf7 )**: Revert expiration for retry lanes ([#21300](https://github.com/facebook/react/pull/21300)) //<Andrew Clark>//
- **[cc4b431da](https://github.com/facebook/react/commit/cc4b431da )**: Mark boundary as client rendered even if aborting fallback ([#21294](https://github.com/facebook/react/pull/21294)) //<Sebastian Markbåge>//

Changelog:
[General][Changed] - React Native sync for revisions f7cdc89...bd7f4a0

jest_e2e[run_all_tests]

Reviewed By: JoshuaGross

Differential Revision: D27909257

fbshipit-source-id: 36ec4cf1de9df109f1fe1542031df10a693baae0
2021-04-21 09:58:51 -07:00
Pieter Vanderwerff 06f52f7667 Deploy v0.149.0 to xplat
Summary: Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D27896693

fbshipit-source-id: 2db8eea616bb6e482903cbfa6fc6d40262e958c6
2021-04-20 19:01:24 -07:00
Paige Sun d90253da36 iOS: Fix InputAccessoryView disappearing when inputAccessoryViewID exists
Summary:
InputAccessoryView disappears on Fabric (not Paper) when the text prop changes.

Changelog: [Fabric] [iOS] Fix InputAccessoryView disappearing when inputAccessoryViewID exists

Differential Revision: D27721549

fbshipit-source-id: 163dfcf0a8d5226453f4de356650a6ba82bee10b
2021-04-20 12:50:25 -07:00
David Vacca 69a48ec9d4 Fix importByteBufferAllocateDirect method
Summary:
This diff fixes the importByteBufferAllocateDirect method.
This was tested enabling importByteBufferAllocateDirect in ReadableMapBuffer.java

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27867055

fbshipit-source-id: 9ef5e93ff6c7903782598dde1c499daa82cd467b
2021-04-20 12:13:48 -07:00
David Vacca c9a69de962 Add TODOs and Tasks into TODOs
Summary:
Add TODOs and Tasks into TODOs

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27865470

fbshipit-source-id: fcc7f86b0e6b290bf9f691a2dafea18d8addf782
2021-04-20 12:13:48 -07:00
David Vacca 19d881d838 integrate asserts in ReadableMapBuffer
Summary:
This diff integrates asserts in ReadableMapBuffer

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27864305

fbshipit-source-id: 0e7802a33cbf5ccfb4b845fffd14f8517bed70ec
2021-04-20 12:13:48 -07:00
David Vacca a32a636909 Fix assert in mapbufferBuilder
Summary:
This diff fixes an assert in mapbufferBuilder

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D27864306

fbshipit-source-id: fbeb812906441c50bf51ca71566fcd6f6e494322
2021-04-20 12:13:48 -07:00