diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java index db0224d0871..b50f3dafb48 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java @@ -12,6 +12,7 @@ import android.view.ViewGroup; import com.facebook.common.logging.FLog; import com.facebook.infer.annotation.Assertions; import com.facebook.react.common.ReactConstants; +import com.facebook.react.uimanager.common.UIManagerType; import com.facebook.react.uimanager.events.EventDispatcher; import com.facebook.react.uimanager.events.TouchEvent; import com.facebook.react.uimanager.events.TouchEventCoalescingKeyHelper; @@ -50,14 +51,22 @@ public class JSTouchDispatcher { mTargetTag = -1; } + /** + * See Event.java. By contract, this surfaceId should be a valid SurfaceId in Fabric, and should + * ALWAYS return -1 in non-Fabric. + * + * @return + */ private int getSurfaceId() { - if (mRootViewGroup instanceof ReactRoot) { + if (mRootViewGroup != null + && mRootViewGroup instanceof ReactRoot + && ((ReactRoot) mRootViewGroup).getUIManagerType() == UIManagerType.FABRIC) { + if (mRootViewGroup.getContext() instanceof ThemedReactContext) { + ThemedReactContext context = (ThemedReactContext) mRootViewGroup.getContext(); + return context.getSurfaceId(); + } return ((ReactRoot) mRootViewGroup).getRootViewTag(); } - if (mRootViewGroup != null && mRootViewGroup.getContext() instanceof ThemedReactContext) { - ThemedReactContext context = (ThemedReactContext) mRootViewGroup.getContext(); - return context.getSurfaceId(); - } return -1; }