diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java index fddd70478..3be9a92e1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java @@ -62,7 +62,6 @@ import com.facebook.react.touch.JSResponderHandler; private final SparseArray mTagsToViews; private final SparseArray mTagsToViewManagers; private final SparseBooleanArray mRootTags; - private final SparseArray mRootViewsContext; private final ViewManagerRegistry mViewManagers; private final JSResponderHandler mJSResponderHandler = new JSResponderHandler(); private final RootViewManager mRootViewManager = new RootViewManager(); @@ -73,7 +72,6 @@ import com.facebook.react.touch.JSResponderHandler; mTagsToViews = new SparseArray<>(); mTagsToViewManagers = new SparseArray<>(); mRootTags = new SparseBooleanArray(); - mRootViewsContext = new SparseArray<>(); } public AnimationRegistry getAnimationRegistry() { @@ -162,15 +160,14 @@ import com.facebook.react.touch.JSResponderHandler; } public void createView( - int rootViewTagForContext, + ThemedReactContext themedContext, int tag, String className, @Nullable CatalystStylesDiffMap initialProps) { UiThreadUtil.assertOnUiThread(); ViewManager viewManager = mViewManagers.get(className); - View view = - viewManager.createView(mRootViewsContext.get(rootViewTagForContext), mJSResponderHandler); + View view = viewManager.createView(themedContext, mJSResponderHandler); mTagsToViews.put(tag, view); mTagsToViewManagers.put(tag, viewManager); @@ -376,7 +373,6 @@ import com.facebook.react.touch.JSResponderHandler; mTagsToViews.put(tag, view); mTagsToViewManagers.put(tag, mRootViewManager); mRootTags.put(tag, true); - mRootViewsContext.put(tag, themedContext); view.setId(tag); } @@ -416,7 +412,6 @@ import com.facebook.react.touch.JSResponderHandler; View rootView = mTagsToViews.get(rootViewTag); dropView(rootView); mRootTags.delete(rootViewTag); - mRootViewsContext.remove(rootViewTag); } /** @@ -585,14 +580,10 @@ import com.facebook.react.touch.JSResponderHandler; } /** - * @return Themed React context for view with a given {@param reactTag} - in the case of root - * view it returns the context from {@link #mRootViewsContext} and all the other cases it gets the + * @return Themed React context for view with a given {@param reactTag} - it gets the * context directly from the view using {@link View#getContext}. */ private ThemedReactContext getReactContextForView(int reactTag) { - if (mRootTags.get(reactTag)) { - return Assertions.assertNotNull(mRootViewsContext.get(reactTag)); - } View view = mTagsToViews.get(reactTag); if (view == null) { throw new JSApplicationIllegalArgumentException("Could not find view with tag " + reactTag); diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java index fd3946eeb..ef3c2c848 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java @@ -69,11 +69,15 @@ public class NativeViewHierarchyOptimizer { */ public void handleCreateView( ReactShadowNode node, - int rootViewTag, + ThemedReactContext themedContext, @Nullable CatalystStylesDiffMap initialProps) { if (!ENABLED) { int tag = node.getReactTag(); - mUIViewOperationQueue.enqueueCreateView(rootViewTag, tag, node.getViewClass(), initialProps); + mUIViewOperationQueue.enqueueCreateView( + themedContext, + tag, + node.getViewClass(), + initialProps); return; } @@ -83,7 +87,7 @@ public class NativeViewHierarchyOptimizer { if (!isLayoutOnly) { mUIViewOperationQueue.enqueueCreateView( - rootViewTag, + themedContext, node.getReactTag(), node.getViewClass(), initialProps); @@ -391,7 +395,7 @@ public class NativeViewHierarchyOptimizer { // Create the view since it doesn't exist in the native hierarchy yet mUIViewOperationQueue.enqueueCreateView( - node.getRootNode().getReactTag(), + node.getRootNode().getThemedContext(), node.getReactTag(), node.getViewClass(), props); diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java index 94b2307b1..369ffda90 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java @@ -121,7 +121,7 @@ public class UIImplementation { } if (!cssNode.isVirtual()) { - mNativeViewHierarchyOptimizer.handleCreateView(cssNode, rootViewTag, styles); + mNativeViewHierarchyOptimizer.handleCreateView(cssNode, rootNode.getThemedContext(), styles); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java index f26a295ee..6f0ebdcc9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java @@ -122,17 +122,17 @@ public class UIViewOperationQueue { private final class CreateViewOperation extends ViewOperation { - private final int mRootViewTagForContext; + private final ThemedReactContext mThemedContext; private final String mClassName; private final @Nullable CatalystStylesDiffMap mInitialProps; public CreateViewOperation( - int rootViewTagForContext, + ThemedReactContext themedContext, int tag, String className, @Nullable CatalystStylesDiffMap initialProps) { super(tag); - mRootViewTagForContext = rootViewTagForContext; + mThemedContext = themedContext; mClassName = className; mInitialProps = initialProps; } @@ -140,7 +140,7 @@ public class UIViewOperationQueue { @Override public void execute() { mNativeViewHierarchyManager.createView( - mRootViewTagForContext, + mThemedContext, mTag, mClassName, mInitialProps); @@ -533,13 +533,13 @@ public class UIViewOperationQueue { } public void enqueueCreateView( - int rootViewTagForContext, + ThemedReactContext themedContext, int viewReactTag, String viewClassName, @Nullable CatalystStylesDiffMap initialProps) { mOperations.add( new CreateViewOperation( - rootViewTagForContext, + themedContext, viewReactTag, viewClassName, initialProps));