From c20963e11cc1c10f20a2a0a3c209f5b403c9e899 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Fri, 20 Dec 2019 08:24:01 -0800 Subject: [PATCH] Unregister JSDevSupport from DebugCorePackage Summary: ## Problem `DebugCorePackage` is a `TurboReactPackage`. To register a `TurboReactPackage`s NativeModules, the `NativeModuleRegistryBuilder` loops over all `ReactModuleInfo`s in the package's auto-generated `ReactModuleInfo` list. This list is generated from the `ReactModuleList` annotation of the package using our annotation processors. Because `JSDevSupport` was in its package's `ReactModuleList` annotation, we generated a `ReactModuleInfo` object for it. Therefore, `NativeModuleRegistryBuilder` registered `JSDevSupport` twice (once in `DebugCorePackage` and twice in `Fb4aReactPackage`). ## How did this work before? `JSDevSupport` was always a part of the `ReactModuleList` annotation of `DebugCorePackage`. However, before D18974084 landed, there were two key things that made this work: 1. `DebugCorePackage` was a `LazyReactPackage`, 2. The `DebugCorePackage.getNativeModules()` did not return a `ModuleHolder` for `JSDevSupport`. For `LazyReactPackage`s, `NativeModuleRegistryBuilder` calls `LazyReactPackage.getNativeModuleIterator()` to register NativeModules. The iterator returned from `LazyReactPackage.getNativeModuleIterator()`, in this case, loops over the NativeModules returned from `DebugCorePackage.getNativeModules()`. Therefore, we don't register any NativeModules that aren't in `DebugCorePackage.getNativeModules()`. Since `DebugCorePackage.getNativeModules()` didn't contain `JSDevSupport`, it wasn't registered for the second time. Changelog: [Android][Fixed] - Unregister JSDevSupport from DebugCorePackage Reviewed By: ejanzer Differential Revision: D19187664 fbshipit-source-id: 34141c60542179567d75705937ba09ec8a3dfc2b --- .../src/main/java/com/facebook/react/DebugCorePackage.java | 3 --- .../main/java/com/facebook/react/devsupport/JSDevSupport.java | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java b/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java index b289585f6f8933..24116e4f99db4e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java @@ -27,7 +27,6 @@ @ReactModuleList( nativeModules = { JSCHeapCapture.class, - JSDevSupport.class, }) public class DebugCorePackage extends TurboReactPackage { public DebugCorePackage() {} @@ -37,8 +36,6 @@ public NativeModule getModule(String name, ReactApplicationContext reactContext) switch (name) { case JSCHeapCapture.TAG: return new JSCHeapCapture(reactContext); - case JSDevSupport.MODULE_NAME: - return new JSDevSupport(reactContext); default: throw new IllegalArgumentException( "In CoreModulesPackage, could not find Native module for " + name); diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDevSupport.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDevSupport.java index 39b0d62757e7de..1b3c60f9850880 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDevSupport.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDevSupport.java @@ -17,7 +17,7 @@ import java.util.HashMap; import java.util.Map; -@ReactModule(name = JSDevSupport.MODULE_NAME, canOverrideExistingModule = true) +@ReactModule(name = JSDevSupport.MODULE_NAME) public class JSDevSupport extends NativeJSDevSupportSpec { public static final String MODULE_NAME = "JSDevSupport";