react-native/Libraries
Ryan Gomba c858420b2d Fix NativeAnimation invalidation & races on iOS
Summary:
This diff attempts to fix a number of iOS native animation bugs related to improper node invalidation and a race with view creation. The major issues were presented in #9120 as problems 3 and 3b, but I'll recap here:

The invalidation model we use is overly complicated and incomplete. The proper combination of `_needsUpdate` and `_hasUpdated` will result in nodes values being recomputed. However, we do not invalidate nodes in all the places we should, e.g. if we create a new view and attach it to an existing value node (see example in #9120). This diff chooses to remove the `_hasUpdated` flag, and simply relies on the `_needsUpdate` flag to mark a node as dirty.

We mark nodes as dirty when they are:
- created
- updated
- attached to new parents
- detached from old parents
- attached to a view

Calling `updateNodeIfNecessary` will, if necessary, compute all invalidated parent values before recomputing the node value. It will then apply the update, and mark the no
Closes https://github.com/facebook/react-native/pull/10663

Differential Revision: D4120301

Pulled By: mkonicek

fbshipit-source-id: e247afcb5d8c15999b8328c664b9f7e764d76a75
2016-11-28 11:13:31 -08:00
..
ART RN: Update React (2/2) 2016-11-04 05:43:44 -07:00
ActionSheetIOS Move all header imports to "<React/..>" 2016-11-23 07:58:39 -08:00
AdSupport Move all header imports to "<React/..>" 2016-11-23 07:58:39 -08:00
Alert fix typo in Alert.js 2016-10-14 08:13:55 -07:00
Animated Deploy v0.36.0 2016-11-28 10:13:31 -08:00
AppState Remove deprecated APIs and modules 2016-10-11 07:43:52 -07:00
BatchedBridge Deploy v0.35.0 2016-11-14 20:45:17 -08:00
BugReporting RN: Update React (2/2) 2016-11-04 05:43:44 -07:00
CameraRoll Move all header imports to "<React/..>" 2016-11-23 07:58:39 -08:00
Components Don't dismiss keyboard when tapping another text input 2016-11-25 05:43:30 -08:00
Core Cannot assign to read only property 'product' of object '#<WorkerNavi… 2016-11-22 07:28:34 -08:00
CustomComponents Typo 2016-11-28 03:43:32 -08:00
DebugComponentHierarchy Move React Core Integration to a Dependency 2016-04-21 09:28:23 -07:00
EventEmitter RN: Cleanup OSS JS & Flow Declarations 2016-11-20 17:58:29 -08:00
Experimental enable variable size slideoutView with swipeableListView 2016-11-14 11:58:58 -08:00
Geolocation Move all header imports to "<React/..>" 2016-11-23 07:58:39 -08:00
Image Fix imports in UIExplorerUnitTests 2016-11-24 09:58:31 -08:00
Inspector RN: Update React (2/2) 2016-11-04 05:43:44 -07:00
Interaction RN: Update React (2/2) 2016-11-04 05:43:44 -07:00
JSInspector Add Network agent 2016-11-02 12:29:15 -07:00
LayoutAnimation Mention that LayoutAnimation has to be explicitly enabled on A… 2016-11-25 15:28:28 -08:00
Linking Auto-fix lint errors 2016-08-09 06:43:46 -07:00
LinkingIOS Move all header imports to "<React/..>" 2016-11-23 07:58:39 -08:00
Modal make Modal pass rootTag to AppContainer 2016-11-18 01:43:26 -08:00
NativeAnimation Fix NativeAnimation invalidation & races on iOS 2016-11-28 11:13:31 -08:00
NavigationExperimental Fix animation in fast navigation between scenes 2016-11-23 09:58:42 -08:00
Network Deploy v0.36.0 2016-11-28 10:13:31 -08:00
Performance RN: Update React (2/2) 2016-11-04 05:43:44 -07:00
PermissionsAndroid Handle "Never Ask Again" in permissions and add requestMultiplePermissions 2016-11-24 22:43:28 -08:00
PushNotificationIOS Remove deprecated push notification method info 2016-11-25 03:58:32 -08:00
RCTTest Fix imports in UIExplorerUnitTests 2016-11-24 09:58:31 -08:00
ReactNative Don't dismiss keyboard when tapping another text input 2016-11-25 05:43:30 -08:00
Renderer Unbreak custom animated components 2016-11-14 20:58:56 -08:00
Sample Update React Native minimum OS version to iOS8 2016-09-01 19:43:47 -07:00
Settings Move all header imports to "<React/..>" 2016-11-23 07:58:39 -08:00
Share Update Share.js. Fixed bad grammar 2016-11-23 11:28:29 -08:00
Storage Auto-fix lint errors 2016-08-09 06:43:46 -07:00
StyleSheet Add support for aspectRatio style prop 2016-11-23 07:43:28 -08:00
Text iOS: Introduce spellCheck prop to TextInput 2016-11-25 04:28:28 -08:00
Utilities Workaround native module dependency in Jest environment 2016-11-22 23:58:30 -08:00
Vibration Move all header imports to "<React/..>" 2016-11-23 07:58:39 -08:00
WebSocket Move all header imports to "<React/..>" 2016-11-23 07:58:39 -08:00
react-native RN: Cleanup OSS JS & Flow Declarations 2016-11-20 17:58:29 -08:00
vendor RN: Cleanup OSS JS & Flow Declarations 2016-11-20 17:58:29 -08:00
Promise.js Make onUnhandled safe for undefined errors 2016-08-02 07:58:28 -07:00
promiseRejectionIsError.js RN: Cleanup OSS JS & Flow Declarations 2016-11-20 17:58:29 -08:00