From 69c8aa64e58ea452406199b208d907f03d87304b Mon Sep 17 00:00:00 2001 From: David Vacca Date: Fri, 7 Dec 2018 09:53:08 -0800 Subject: [PATCH] Fix NPE when opening Google Search Assist when a RN Dialog is displayed Summary: This fixes app crashes on opening android search assistant when a RN modal is visible. The root cause is that ViewGroup.dispatchProvideStructure() method uses the private variable 'mChildren' to access the children of a view group instead of the publicApi. This fixes the top crash for the react_MarketplaceProductDetailsNonIPadRoute route. This also fixes github issues: https://github.com/facebook/react-native/issues/15932 https://github.com/facebook/react-native/issues/13201 https://github.com/facebook/react-native/issues/15440 that were closed without a fix Reviewed By: PeteTheHeat Differential Revision: D13375993 fbshipit-source-id: d603cb4ef65a423c63a6ef2b51235702c7dbffcb --- .../facebook/react/views/modal/ReactModalHostView.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java index 7ec8ae51691b24..6eeb10aae71fcb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java @@ -7,6 +7,7 @@ package com.facebook.react.views.modal; +import android.annotation.TargetApi; import android.app.Activity; import android.app.Dialog; import android.content.Context; @@ -15,6 +16,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.ViewStructure; import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.widget.FrameLayout; @@ -73,6 +75,12 @@ public ReactModalHostView(Context context) { mHostView = new DialogRootViewGroup(context); } + @TargetApi(23) + @Override + public void dispatchProvideStructure(ViewStructure structure) { + mHostView.dispatchProvideStructure(structure); + } + @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // Do nothing as we are laid out by UIManager