From 0713246e7b2a8d66434803bfeb78761069ae0272 Mon Sep 17 00:00:00 2001 From: Joshua Gross Date: Wed, 5 Aug 2020 21:59:12 -0700 Subject: [PATCH] Switch to using safer UpdateState mechanism Summary: Update FabricViewStateManager so that the caller can bail out of updates by returning null. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D22966024 fbshipit-source-id: 31cd9ec8a9a9918fbb94844e30ed1a2fcc61997d --- .../java/com/facebook/react/fabric/StateWrapperImpl.java | 6 ------ .../facebook/react/uimanager/FabricViewStateManager.java | 6 +++++- .../java/com/facebook/react/uimanager/StateWrapper.java | 3 --- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java index a40bcaca7ba..6a461623e99 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java @@ -47,12 +47,6 @@ public class StateWrapperImpl implements StateWrapper { public native void updateStateWithFailureCallbackImpl( @NonNull NativeMap map, Object self, int updateStateId); - @Override - public void updateState(@NonNull WritableMap map) { - mUpdateStateId++; - updateStateImpl((NativeMap) map); - } - @Override public void updateState(@NonNull WritableMap map, Runnable failureCallback) { mUpdateStateId++; diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java index 454fd2bbb7d..f78eedad134 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java @@ -78,8 +78,12 @@ public class FabricViewStateManager { } }; } + @Nullable WritableMap stateUpdate = stateUpdateCallback.getStateUpdate(); + if (stateUpdate == null) { + return; + } stateWrapper.updateState( - stateUpdateCallback.getStateUpdate(), + stateUpdate, // Failure callback - this is run if the updateState call fails failureRunnable); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/StateWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/StateWrapper.java index e56a16cd50f..51bbc14349a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/StateWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/StateWrapper.java @@ -21,9 +21,6 @@ public interface StateWrapper { */ ReadableNativeMap getState(); - /** Pass a map of values back to the C++ layer. */ - void updateState(WritableMap map); - /** * Pass a map of values back to the C++ layer. /Last/ runnable passed into updateState is called * if an updateState call fails.