2902 Commits

Author SHA1 Message Date
Andrew Chen (Eng)
83405ff316 Fix crash when releasing RN views
Summary: There are cases where we're trying to drop a view that is not associated with a ViewManager. This is likely caused by race conditions that can occur if we're dropping a view from JS (when it's no longer used) but at the same time dropping it from native (when layout animation ends, when the rootview gets unmounted). In either of those cases, it should be safe to ignore the drop operation because the view was likely dropped already.

Reviewed By: mdvacca

Differential Revision: D13036643

fbshipit-source-id: 260ffb56d32a0d670ad08f449b8df165b2533195
2018-11-14 10:51:15 -08:00
Taras Tsugrii
9b781bdda8 Remove unused loads from xplat.
Summary:
Unused loads still take time to process and pollute
execution environment.

drop-conflicts

Reviewed By: passy

Differential Revision: D13054018

fbshipit-source-id: a8fe58d1c55c031925c2c0267e24e67f021cd91d
2018-11-14 10:51:15 -08:00
Sidharth Guglani
6eb5bd381c added functionality using which child node can tell parent node to use it as a reference baseline
Summary:
@public
Currently only parent can tell the layout to align its children based on baseline. But if one of the children is a column or row then basealign does not work as expected.

We have added an api setReferenceBaseline which when set to true would mean that it's baseline would be considered as the reference baseline for parent amongst its siblings. If there are more than one siblings with referenceBaseline set, the first one would be considered.

Reviewed By: davidaurelio

Differential Revision: D12883323

fbshipit-source-id: 19beccfc47d98bb38f81f5b66ba764e83680f821
2018-11-14 02:51:34 -08:00
Eric Butler
a508134724 Fixed HTTP connection timeout on Android (#22164)
Summary:
Fixes #11666 (Which was incorrectly closed)
Pull Request resolved: https://github.com/facebook/react-native/pull/22164

Differential Revision: D13057001

Pulled By: hramos

fbshipit-source-id: bcd53e893bc7c114f866e54938166b74b8ae0299
2018-11-14 00:43:35 -08:00
Ranjan Shrestha
2e465bca15 Android: Close websocket properly when remote server initiates close (#22248)
Summary:
When the remote server closes the websocket, the app doesn't get a 'close' event in Android, There is no issue on iOS.
Pull Request resolved: https://github.com/facebook/react-native/pull/22248

Differential Revision: D13047556

Pulled By: hramos

fbshipit-source-id: c5c56ea8418cfdf734fb51f863b3066856de6512
2018-11-13 23:19:42 -08:00
Ram N
9f9390ddfc Moved androidID constant to a method
Summary:
androidID was a constant that was exposed as a Platform constant, but it seems to use slightly expensive methods when they need to be computed. Moving this to a method so that it is computed only when needed.
Test Plan

Reviewed By: ejanzer

Differential Revision: D6563853

fbshipit-source-id: 3c5929fcbc947c13c3a25f2bf473e145ac4bf73e
2018-11-10 08:54:18 -08:00
Stepan Hruda
2bf0d54f15 Only include ServerHost constant in debug builds
Summary: I recently changed the implementation of `getServerHost` to be more expensive. I am excluding it from constants in non-debug builds, since loading that module lies on a critical path.

Reviewed By: axe-fb

Differential Revision: D12982150

fbshipit-source-id: eaaa50418726dbb2da2d517d0810f39b0dc7fac2
2018-11-09 17:03:02 -08:00
Andrew Chen (Eng)
be282b5287 Fix ReactRootView attachRootView race condition
Summary:
Yet another issue with mAttachedRootViews. Every time attachRootView is called, the root view's id is reset to NO_ID. However, there can be a case where the react context has not initialized yet, so we delay attaching the root view to the instance manager until setupReactContext. If attachRootView was called a second time before the react context has finished initializing, we end up in a situation where we try to attach the same root view twice

I'm planning to remove mAttachedRootViews all together in a future diff, but for now let's avoid these crashes.

Reviewed By: mmmulani

Differential Revision: D12835167

fbshipit-source-id: ebef3fadc5f9f467eebb3b5644c685acc5ea10bf
2018-11-09 16:08:05 -08:00
Ram N
d4aef08af9 Add a marker to indicate when JS thread priority is lowered
Summary:
When RN starts up, it lowers the default priority of the JS thread. This diff sets a point to see when the JS thread priority is lowered.

In subsequent diffs, we will be able to use this marker to play around with bumping the priority of the JS thread till TTI is done.

Reviewed By: alexeylang

Differential Revision: D8965457

fbshipit-source-id: 87cb1e3d3b370af183f388c411fd9a87a6cba250
2018-11-09 14:24:57 -08:00
Andrew Chen (Eng)
df7e8c64ff Fix ReactInstanceManager deadlock
Summary:
D12829677 introduced a deadlock where onHostResume holds the lock on `moveToResumedLifecycleState()` then waits for the `mReactContext` lock, but at the same time setupReactContext holds the `mReactContext` lock and waits for `moveToResumedLifecycleState()` https://our.intern.facebook.com/intern/everpaste/?handle=GAgXFgLQH1ZlQikBAMQzo2LZ6h9TbiAxAAAz. The purpose of the previous diff was to make sure that detachRootoView and
setupReactContext did not interfere with each other, and implemented that by blocking on mReactContext. Since this overloads the usage of mReactContext, let's use a different lock `mAttachedRootViews` to implement this behavior instead

Reviewed By: mdvacca

Differential Revision: D12989555

fbshipit-source-id: c12e5fd9c5fa4c2037167e9400dc0c1578e38959
2018-11-09 13:43:17 -08:00
David Vacca
fba7c1ece2 Add copyright header into ContextUtils class
Summary: Trivial diff to include copyright header into ContextUtils class

Reviewed By: achen1

Differential Revision: D13001556

fbshipit-source-id: 439f25647a094485381637ea2b59f62962b9c1ac
2018-11-09 11:21:26 -08:00
Ram N
803e993e6a Use static constants instead of strings when referring to View Managers and Native Modules
Summary: Using strings to refer to Native Modules and View Managers in ReactPackages are prone to error. The compiler replaces the constants with the actual strings anyway, so using constants gives us  better type safety

Reviewed By: achen1

Differential Revision: D12843649

fbshipit-source-id: 7a7c6c854c8689193f40df92dc8426a3b37f82c8
2018-11-09 10:50:54 -08:00
Chris Tolliday
918a7d5b70 Turn off static linking for cxxreact:bridge
Summary: Remove `force_static=true` from cxxreact:bridge, add dependencies to targets that were pulling them in from a statically linked cxxreact:bridge.

Reviewed By: mhorowitz

Differential Revision: D12914861

fbshipit-source-id: ff335b70e80d014538a8d5dc8c0bb7b095e7940e
2018-11-08 22:33:37 -08:00
Ignacio Olaciregui
7b3c91ef16 Fix inline styles eslint warnings for examples (#22123)
Summary:
Fixes `react-native/no-inline-styles` warning for several examples. I'm limiting the size of this PR to make it simpler to review.
Pull Request resolved: https://github.com/facebook/react-native/pull/22123

Reviewed By: RSNara

Differential Revision: D12929701

Pulled By: TheSavior

fbshipit-source-id: 7a976f2208b557fcfda46d5b586b30652c550eb2
2018-11-08 17:20:33 -08:00
David Vacca
95b21b4828 Refactor 'induce' of events in Fabric Android
Summary:
This diff refactors the exeuction of 'AsyncEventBeat.induce()' as part of the delivery of events of Fabric Android implementation.
The first part of the refactor moves the exeuction of onBatchEventDispatched out of the synchronization block for mEventsToDispatchLock. This lock is accessed from the UI Thread and executing the induce inside this synchronization block will affect UI,
The second part of the refactor is to ensure that the exeuction of the C++ method AsyncEventBeat.induce() always happen in the JS Thread.

Reviewed By: shergin

Differential Revision: D12861387

fbshipit-source-id: e1cd03467274a1c5fcd04b0ac7efdbe7169b14c3
2018-11-08 16:57:46 -08:00
David Vacca
fe7eb61989 Force navigation to use root tag
Summary: This diff ensures that JS uses rootTags during navigation. A redbox will be rendered in debug mode when a non-rootTag is used during navigation. This change enables proper navigation for Fabric.

Reviewed By: shergin

Differential Revision: D10855198

fbshipit-source-id: a82aaa706cd62ce92143fa86d0a422c1ae439a50
2018-11-08 16:57:46 -08:00
David Vacca
8329c10932 Stop mounting of Views when there is an exception in Native
Summary: This diff fixes exception handling for Mounting of views, as soon as there is an exception we stop the mounting of views because from that point the UI View tree is going to be inconsistent with the ReactShadow tree from C++. We also stop the mounting of views when the host is paused, this allows us to not keep mounting views

Reviewed By: shergin

Differential Revision: D10510334

fbshipit-source-id: b0d3eba580ff92d8b8400244ec9d7c266db42ff9
2018-11-08 16:57:46 -08:00
Ram N
fe498096b6 Replace String with constants for Module names in Fb4aCoreInfraPackage
Summary: Using constants is safer than using strings. More details at D12843649

Reviewed By: sahrens

Differential Revision: D8226521

fbshipit-source-id: 4c78c8dfe0bd658f46c8f81e50ceae9299fc6f3c
2018-11-08 12:29:26 -08:00
Ram N
54e8d6cdc8 Fix args passed when measuring Androidwitch
Summary: The first argument to `View.MeasureSpec.makeMeasureSpec` should be positive, but was being passed WRAP_CONTENT, which is negative. This diff fixes that.

Reviewed By: achen1

Differential Revision: D6601683

fbshipit-source-id: 6d8499830f7b6da40848bab77d5ddbbb8a6fe44f
2018-11-07 20:17:42 -08:00
David Vacca
e57ad4ee37 Fix IllegalArgumentException when dismissing ReactModalHostView
Summary: This diff fixes an IllegalArgumentException when dismissing ReactModalHostView. I wasn't able to reproduce this error because this is likely created by a race condition.

Reviewed By: axe-fb

Differential Revision: D12916787

fbshipit-source-id: b071ffc4c251f2a613bb1270de005def56818376
2018-11-07 18:30:53 -08:00
David Aurelio
2a8f6c3028 Add Yoga JNI bindings to libcoldstart
Summary:
Yoga's JNI bindings are usually loaded during class loading, and can stall the UI thread.

Here, we try to mitigate the problem by adding the bindings to libcoldstart.

Reviewed By: michalgr

Differential Revision: D12956818

fbshipit-source-id: 9dda5cb6d26c2bae64606bc2d7c98ab8f7c05a30
2018-11-07 09:35:45 -08:00
Stepan Hruda
e02a154787 Allow overriding Metro server host with a system prop
Summary:
Allow a device to override the host to which to connect to for getting dev bundles, debugging etc.

This is read from a system prop so it can be shared across all React Native apps and persists between app installs.

Reviewed By: mdvacca

Differential Revision: D10842213

fbshipit-source-id: d15b7d0255130090744d60ffb239778cba15e49c
2018-11-06 15:35:41 -08:00
Ignacio Olaciregui
8b46c9a40b Fix inline styles in ReactAndroid (#22166)
Summary:
Fix `react-native/no-inline-styles` eslint warning for ReactAndroid module.
Pull Request resolved: https://github.com/facebook/react-native/pull/22166

Differential Revision: D12946925

Pulled By: TheSavior

fbshipit-source-id: f4bc0653bd2971e551bc46d89455c006003947c7
2018-11-06 13:47:46 -08:00
Spencer Ahrens
7b5277bb75 mostly working on Android + OTA
Summary:
It works great on iOS, and mostly works on Android, and is now OTA'able as part of the screen config! Haven't done template view yet. One remaining issue:

Layout is borked on Android. I'm guessing the issue has to do with the timing of setting the constraints in `updateRootLayoutSpecs` and calling `mBinding.startSurface` which actually builds the shadow tree. If I try to call `updateRootLayoutSpecs` earlier, it just crashes immediately. Here's the layout it spits out, which clearly has -440 for the x of 420006, which is the RCTText component, causing it to get cut off on the left of the screen:
```
updateLayoutMountItem for reactTag: 420006 x: -440, y: -13, width: 931, height: 78
updateLayoutMountItem for reactTag: 420010 x: 26, y: 79, width: 0, height: 1651
updateLayoutMountItem for reactTag: 420012 x: 0, y: 26, width: 0, height: 158
updateLayoutMountItem for reactTag: 420016 x: 0, y: 210, width: 454, height: 454
updateLayoutMountItem for reactTag: 420018 x: 454, y: 210, width: 455, height: 454
updateLayoutMountItem for reactTag: 420022 x: 0, y: 690, width: 454, height: 454
updateLayoutMountItem for reactTag: 420024 x: 454, y: 690, width: 455, height: 454
updateLayoutMountItem for reactTag: 420028 x: 0, y: 1171, width: 454, height: 454
updateLayoutMountItem for reactTag: 420030 x: 454, y: 1171, width: 455, height: 454
updateLayoutMountItem for reactTag: 420032 x: 0, y: 1651, width: 0, height: 0
```

Reviewed By: mdvacca

Differential Revision: D12813192

fbshipit-source-id: 450d646af4883ff25184141721351da67b091b7c
2018-11-05 15:43:55 -08:00
Victor Calvello
ffd7195543 Remove unused styles (#22083)
Summary:
Removes unused styles.

NOTE: Lint rule `react-native/no-unused-styles` not added because of custom lint rule internally at Facebook that does this.
Pull Request resolved: https://github.com/facebook/react-native/pull/22083

Differential Revision: D12929443

Pulled By: TheSavior

fbshipit-source-id: d42b0be3db745e445447e65df3b78b61f53e4229
2018-11-05 13:57:47 -08:00
nd-02110114
9d132339f7 Remove var in ReactAndroid/src/androidTest (#22135)
Summary:
I removed var in ReactAndroid/src/androidTest.

- [x] npm run prettier
- [x] npm run flow-check-ios
- [x] npm run flow-check-android

[GENERAL] [ReactAndroid/src/androidTest] - remove var
Pull Request resolved: https://github.com/facebook/react-native/pull/22135

Differential Revision: D12921224

Pulled By: TheSavior

fbshipit-source-id: 9a14755944df642f8b82c46c691d6ed6ee8fa623
2018-11-05 00:41:21 -08:00
nd-02110114
6f781d9c25 remove var in ReactAndroid/src/androidTest. (#22137)
Summary:
I removed var in ReactAndroid/src/androidTest.

- [x] npm run prettier
- [x] npm run flow-check-ios
- [x] npm run flow-check-android

[GENERAL] [ReactAndroid/src/androidTest] - remove var
Pull Request resolved: https://github.com/facebook/react-native/pull/22137

Differential Revision: D12921228

Pulled By: TheSavior

fbshipit-source-id: d3b7380b6047fc304265d0f47a53cb1170a6aea6
2018-11-05 00:37:26 -08:00
nd-02110114
0beb1cc55d remove var in ReactAndroid/src/androidTest (#22136)
Summary:
I removed var in ReactAndroid/src/androidTest.

- [x] npm run prettier
- [x] npm run flow-check-ios
- [x] npm run flow-check-android

[GENERAL] [ReactAndroid/src/androidTest] - remove var
Pull Request resolved: https://github.com/facebook/react-native/pull/22136

Differential Revision: D12921227

Pulled By: TheSavior

fbshipit-source-id: 45c03a52a5eafa25965aa785da094421c3df3999
2018-11-05 00:34:04 -08:00
Tim Yung
4d16a0e84e RN: Copyright Header for ReactInstanceManagerTest.java
Summary: Missing when D12829677 landed.

Reviewed By: mdvacca

Differential Revision: D12903182

fbshipit-source-id: 1c142acb2a098b1118170f2f8ed8cf719fc14f90
2018-11-03 14:15:55 -07:00
David Vacca
83c7303a19 Trivial cleanup in ReactRootView
Summary: Trivial clanup of imports in ReactRootView

Reviewed By: fkgozali

Differential Revision: D12899430

fbshipit-source-id: 83bb052bbeee9e02e91157305420a2dd799e60e2
2018-11-03 01:14:07 -07:00
David Vacca
38e01a20c3 Fix IllegalStateException when dismissing DialogManager
Summary: This diff fixes a IllegalStateException that can happen because of a race condition when using DialogManager

Reviewed By: fkgozali

Differential Revision: D12899432

fbshipit-source-id: 98fb7c1ee1d292a959628a33c8a2dd5a6d93e328
2018-11-03 01:14:07 -07:00
Spencer Ahrens
2486d12b81 lint autofixes
Summary: `find js/react-native-github | xargs arc lint -a`

Reviewed By: yungsters

Differential Revision: D12902940

fbshipit-source-id: fd1158f7a0ec322cf89bc4f727943bff4600b399
2018-11-02 12:44:59 -07:00
Radovan Šmitala
7f79254cfe Remove AndroidManifest.xml from UIManager (#22044)
Summary:
AndroidManifest.xml file in UIManager only defines minimum SDK version for whole namespace "com.facebook". But it is always redefined by build.gradle file because Gradle file has precedence.

https://github.com/facebook/react-native/blob/master/ReactAndroid/build.gradle#L273

Anyway Gradle is prefered way to define it. So i think it should be removed if it is not used for another purpose.
Pull Request resolved: https://github.com/facebook/react-native/pull/22044

Differential Revision: D12898251

Pulled By: hramos

fbshipit-source-id: 087b5cc45495109b5626c9cb232d0546c53fb709
2018-11-01 20:11:09 -07:00
Ignacio Olaciregui
ae8ec39397 Fix linting issues (#22062)
Summary:
Fixes lots of ESLint warnings. Many of them where in PR #20877 by janicduplessis which requested to split the linting fixes from configuration and package changes.

I solved only the issues that I was most certain about but I would love to get hands on all of them with a little bit of input.
Pull Request resolved: https://github.com/facebook/react-native/pull/22062

Differential Revision: D12889447

Pulled By: TheSavior

fbshipit-source-id: 35f7a08104a5b859c860afdde4af2b32c0685c50
2018-11-01 14:29:16 -07:00
Ram N
b3b67499dd Add tracing for loading .so files during startup
Summary: During RN's startup, libfbjs-slow.so file is loaded when it is injected into FBReactInstanceHolder. This initialization takes a while, and has usually been showing up as a blank under `FBReactInstanceHolder`. By adding Systrace and QPL, we can estimate how long this takes. Traces will also be useful as we start optimizing this.

Reviewed By: ejanzer

Differential Revision: D5950803

fbshipit-source-id: 711c1d6c16e0f3d5c2dc23606be4e73880152b17
2018-10-31 20:05:31 -07:00
Andrew Chen (Eng)
309f85ace2 Fix ReactRootView mount/unmount race condition
Summary:
There are multiple reports of the NativeViewHierarchyManager trying to remove a root view with id -1. This can occur because of a race condition caused by calls to startReactApplication + unmountReactApplication.

We unfortunately overload overload the id field of the ReactRootView to store its react tag. This id is typically set when the view is attached to the react instance, and reset to NO_ID right before an attach occurs or when the react context is tearing down. If the react context has already been initialized, attaching the root view is synchronous and the id is set immediately. If the context has not been initialized, we save the root view in a mAttachedRootViews list and wait until setupReactContext (where the context is created) to finish attaching the root views.

There were two issues:
1) In setupReactContext, synchronizing on mReactContextLock is not enough to ensure that the root views in mAttachedRootViews have been initialized already
2) In detachRootView, removing the root view from mAttachedRootViews immediately will cause mAttachedRootViews to be out of sync when it is accessed by the time it is accessed in setupReactContext

To address these, the mReactContextLock will synchronize both the creation of the react context AND the initialization of the root views and detachRootView will synchronize on the mReactContextLock before mutating the mAttachedRootViews list.

Reviewed By: mmmulani

Differential Revision: D12829677

fbshipit-source-id: 3f3b0669e5be2b570c9d534503d04e5d0816196b
2018-10-31 16:37:50 -07:00
Scott Rice
c1470736b0 Use fb_native_wrapper for all targets
Differential Revision: D12867696

fbshipit-source-id: bd52c1ead04065addece3a3104c4a1a9359ceb95
2018-10-31 11:47:42 -07:00
Tim Yung
a689711f68 RN: Missing Copyright Headers
Summary: Adds copyright headers to all files that are missing them.

Reviewed By: hramos

Differential Revision: D12837494

fbshipit-source-id: 6330a18919676dec9ff2c03b7c9329ed9127d930
2018-10-31 01:37:26 -07:00
Ram N
c91a2b36d7 Remove view managers from @ReactModuleList
Summary: The annotation ReactModuleList that was processed by ReactModuleSpecProcessor.java does not use ViewManagers. Removing this method from the annotation so that there is no confusion on how view managers are added to individual packages.

Reviewed By: achen1

Differential Revision: D9115363

fbshipit-source-id: 43d12e09b0e9b8e1732533f9a4456327778a0eaf
2018-10-29 12:22:38 -07:00
Kudo Chien
a316dc6ec3 Upgrade folly to v2018.10.22.00 for Android (#21977)
Summary:
Fixes #20302 (For Android)

Note:
------
1. New folly will have build break for a gcc-4.9 and gcc-4.9 seems to be deprecated for latest folly.
    As we only use partial folly implementations, I just fixed the build break part.
    To support building RN on Windows, the patches are written by gradle ReplaceTokens.

2. The change for glog copying header into exported/ is to prevent build break for folly.
    `folly/detail/Demangle.h` will try to use libstdc++'s demangle.h. Unfortunately, glog also has a demangle.h in source code. So I copy exported headers and only search headers in exported/ folder during build.
Pull Request resolved: https://github.com/facebook/react-native/pull/21977

Reviewed By: hramos

Differential Revision: D12818133

Pulled By: fkgozali

fbshipit-source-id: 2c1f6f012663204581a86141d0c9ed0eb9d8c698
2018-10-29 12:06:37 -07:00
Alexandre Kirszenberg
1eedf05651 Update the Delta/HMR format
Summary:
Makes the delta bundle data structures more consistent.

The changes are as follows:
* There are now two types of JSON bundles that can be downloaded from the delta endpoint. Base bundles (`Bundle` type), and Delta bundles (`DeltaBundle` type).
* The `reset` boolean is renamed to `base`.
* `pre` and `post` properties are now strings.
* Only `Bundle` can define `pre` and `post` properties.
* The `delta` property is renamed to `modules`.
* Deleted modules are now listed inside of the `deleted` property, which is only defined by `DeltaBundle`.

Reviewed By: mjesun

Differential Revision: D10446831

fbshipit-source-id: 40e229a2811d48950f0bad8dd341ece189089e9b
2018-10-29 08:58:30 -07:00
Dulmandakh
99632e16d9 fix android ci (#21913)
Summary:
This PR adds support-annotations to devsupport buck dependency, which fixes Android CI.
Pull Request resolved: https://github.com/facebook/react-native/pull/21913

Differential Revision: D10842175

Pulled By: hramos

fbshipit-source-id: f3f3e0e6a3a5e9ceb18db11ac67e820a7f10937a
2018-10-24 14:48:42 -07:00
Andrew Chen (Eng)
dc74975c5f Remove hard crash when root view is reused
Summary: Alternative to D10499861. If an app does not have an exception handler, context.handleException will still hard crash. Since this error is just saying that we're reusing an unexpected RootView, it might be safe to continue execution. Let's remove the exception for now while we investigate further

Reviewed By: mmmulani

Differential Revision: D10560413

fbshipit-source-id: 6c08a16cd250a019d2aef5afcaf3ba61534d29f7
2018-10-24 13:08:41 -07:00
Max Sherman
b141363943 Instrument native library load time
Summary: I'm interested in measuring this.

Reviewed By: alexeylang

Differential Revision: D10510275

fbshipit-source-id: e833153524413bc5ec6159ff100ade92b29e6d0c
2018-10-24 09:00:22 -07:00
Andrew Chen (Eng)
f671f8868f Don't crash when ReactRootView's id is already set
Summary:
This is a bandaid fix to address a crash with a stack trace involving

```
com.facebook.react.uimanager.IllegalViewOperationException: Trying to add a root view with an explicit id already set. React Native uses the id field to track react tags and will overwrite this field. If that is fine, explicitly overwrite the id field to View.NO_ID before calling addRootView.
0+com.facebook.react.uimanager.NativeViewHierarchyManager.addRootViewGroup(NativeViewHierarchyManager.java:546) [inlined]
1+com.facebook.react.uimanager.NativeViewHierarchyManager.addRootView(NativeViewHierarchyManager.java:538) [inlined]
2+com.facebook.react.uimanager.UIViewOperationQueue.addRootView(UIViewOperationQueue.java:678) [inlined]
3+com.facebook.react.uimanager.UIImplementation.registerRootView(UIImplementation.java:216) [inlined]
4+com.facebook.react.uimanager.UIManagerModule.addRootView(UIManagerModule.java:355)
5+com.facebook.react.ReactInstanceManager.attachRootViewToInstance(ReactInstanceManager.java:1032)
6+com.facebook.react.ReactInstanceManager.attachRootView(ReactInstanceManager.java:726) [inlined]
7+com.facebook.react.ReactRootView.attachToReactInstanceManager(ReactRootView.java:524)
8+com.facebook.react.ReactRootView.startReactApplication(ReactRootView.java:377)
```

This crash seems to be happening because the root view's id is set to a non NO_ID value, but further up in the stack trace, UIManager.addRootView() is called which always sets the root view's id to NO_ID. It's not clear how this error is happening, but in this code path it's expected that addRootView should always ensure that the id is always reset. In order to avoid crashing for this, let's remove the exception and log the issue instead.

In the future, we should not be overloading the android view id field with these types of react native implementation details. The react tag should be stored as a view tag instead.

Reviewed By: mmmulani

Differential Revision: D10499861

fbshipit-source-id: 4dffedab4e7a34eee7f64bb43ec8209699521c73
2018-10-22 17:28:17 -07:00
David Vacca
6debfdf6d6 RN crash when processing Exception with null message
Summary: This diff fixes a crash that happens when a component throws an exception that contains a null message

Reviewed By: achen1

Differential Revision: D10429661

fbshipit-source-id: 9faed36906844b51f5a3dc2b3cbc80ede6b93457
2018-10-22 01:07:45 -07:00
David Vacca
b002df945b Re-introduce UIImplementationProvider
Summary: UIImplementationProvider was removed as part of D8650376, this was a breaking change that caused problems in OSS. This diff introduces the concept of a deprecated UIImplementationProvider again to allow OSS community to upgrade to latest version of RN.

Reviewed By: achen1

Differential Revision: D10456317

fbshipit-source-id: 6817629524f927dfcb5ebc054dbfd983877b7606
2018-10-20 11:27:50 -07:00
Marc Horowitz
6b0e924915 lint fixes
Reviewed By: QueryConnectionException

Differential Revision: D10458992

fbshipit-source-id: f57b0ef3c51a0bcf5703e187d36960aa3b944002
2018-10-19 11:35:06 -07:00
Héctor Ramos
47fb387455 Update copyright headers
Summary: Use MIT License copyright headers in JSI source code.

Reviewed By: axe-fb

Differential Revision: D10454031

fbshipit-source-id: d584073bb885fb7d977df1a45a6666ef6f52dcd6
2018-10-19 11:08:57 -07:00
Marc Horowitz
6370b86c1f Get RNTester to compile and run
Summary:
This diff includes a few changes:
1. Move the headers inside `jsiexecutor` into `jsiexecutor/jsireact`. As far as I'm aware, the Android ndk build system isn't flexible enough to support header namespaces, so we can't just expose the headers inside the `jsiexecutor` directory under the `jsireact` namespace. Therefore, I moved the headers to `jsiexecutor/jsireact`, and added `jsiexecutor` to the header search path.  This was the easiest way to simulate `jsireact` namespace.
2. Setup the Android.mk files to get RNTester compiling and running.
3. Introduce a `jscexecutor` module to make `JSCExecutor.java` execute without throwing.

**Note:** Moving the header files inside `jsiexecutor` probably breaks the iOS builds and internal builds. I'll fix those in subsequent diffs on this stack.

Reviewed By: shergin

Differential Revision: D9995429

fbshipit-source-id: 418a4ee91f585842c5e317af2f300227a51e9ba8
2018-10-18 01:06:24 -07:00