From 8b53a2b29bc14cb5b74c1c29a7adc9a62f9cae97 Mon Sep 17 00:00:00 2001 From: Kathy Gray Date: Thu, 11 May 2017 03:39:38 -0700 Subject: [PATCH] Merging cxxbridge and bridge packages Reviewed By: javache Differential Revision: D5027875 fbshipit-source-id: 47e081069d4219bdb29f63ce8a78c1f31a590da7 --- .../java/com/facebook/react/testing/BUCK | 1 - .../react/testing/ReactTestHelper.java | 8 +- .../src/main/java/com/facebook/react/BUCK | 1 - .../react/NativeModuleRegistryBuilder.java | 4 +- .../facebook/react/ReactInstanceManager.java | 14 +- .../react/ReactInstanceManagerBuilder.java | 2 +- .../com/facebook/react/bridge/Arguments.java | 169 ++++++++++++++++-- .../main/java/com/facebook/react/bridge/BUCK | 1 + .../CatalystInstanceImpl.java | 2 +- .../CxxCallbackImpl.java} | 8 +- .../CxxModuleWrapper.java | 2 +- .../CxxModuleWrapperBase.java | 2 +- .../FallbackJSBundleLoader.java | 2 +- .../{cxxbridge => bridge}/JSBundleLoader.java | 2 +- .../JSCJavaScriptExecutor.java | 2 +- .../JavaMethodWrapper.java | 2 +- .../JavaModuleWrapper.java | 2 +- .../JavaScriptExecutor.java | 2 +- .../{cxxbridge => bridge}/ModuleHolder.java | 2 +- .../NativeModuleRegistry.java | 2 +- .../ProxyJavaScriptExecutor.java | 2 +- .../{cxxbridge => bridge}/ReactCallback.java | 2 +- .../react/{cxxbridge => bridge}/bridge.pro | 0 .../com/facebook/react/bridge/reactnative.pro | 10 +- .../main/java/com/facebook/react/common/BUCK | 1 + .../DebugServerException.java | 0 .../facebook/react/cxxbridge/Arguments.java | 159 ---------------- .../java/com/facebook/react/cxxbridge/BUCK | 34 ---- .../react/cxxbridge/SoftAssertions.java | 52 ------ .../react/cxxbridge/UiThreadUtil.java | 56 ------ .../java/com/facebook/react/module/model/BUCK | 1 - .../jni/xreact/jni/CatalystInstanceImpl.h | 4 +- .../main/jni/xreact/jni/CxxModuleWrapper.h | 2 +- .../jni/xreact/jni/CxxModuleWrapperBase.h | 2 +- .../src/main/jni/xreact/jni/JCallback.h | 8 +- .../main/jni/xreact/jni/JavaModuleWrapper.h | 4 +- .../jni/xreact/jni/JavaScriptExecutorHolder.h | 2 +- .../src/main/jni/xreact/jni/MethodInvoker.cpp | 6 +- .../jni/xreact/jni/ModuleRegistryBuilder.h | 2 +- .../src/main/jni/xreact/jni/OnLoad.cpp | 6 +- .../test/java/com/facebook/react/bridge/BUCK | 1 + .../BaseJavaModuleTest.java | 8 +- .../FallbackJSBundleLoaderTest.java | 2 +- .../java/com/facebook/react/cxxbridge/BUCK | 22 --- 44 files changed, 218 insertions(+), 398 deletions(-) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/CatalystInstanceImpl.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge/CallbackImpl.java => bridge/CxxCallbackImpl.java} (72%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/CxxModuleWrapper.java (95%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/CxxModuleWrapperBase.java (97%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/FallbackJSBundleLoader.java (98%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JSBundleLoader.java (98%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JSCJavaScriptExecutor.java (97%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JavaMethodWrapper.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JavaModuleWrapper.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/JavaScriptExecutor.java (96%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/ModuleHolder.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/NativeModuleRegistry.java (99%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/ProxyJavaScriptExecutor.java (98%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/ReactCallback.java (93%) rename ReactAndroid/src/main/java/com/facebook/react/{cxxbridge => bridge}/bridge.pro (100%) rename ReactAndroid/src/main/java/com/facebook/react/{devsupport => common}/DebugServerException.java (100%) delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/cxxbridge/Arguments.java delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/cxxbridge/SoftAssertions.java delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UiThreadUtil.java rename ReactAndroid/src/test/java/com/facebook/react/{cxxbridge => bridge}/BaseJavaModuleTest.java (91%) rename ReactAndroid/src/test/java/com/facebook/react/{cxxbridge => bridge}/FallbackJSBundleLoaderTest.java (99%) delete mode 100644 ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BUCK diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK index 57276c344..242629969 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK @@ -26,7 +26,6 @@ android_library( react_native_target("java/com/facebook/react:react"), react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), - react_native_target("java/com/facebook/react/cxxbridge:bridge"), react_native_target("java/com/facebook/react/devsupport:interfaces"), react_native_target("java/com/facebook/react/module/annotations:annotations"), react_native_target("java/com/facebook/react/module/model:model"), diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java index 13a38acd0..f37c9a83f 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java @@ -27,10 +27,10 @@ import com.facebook.react.bridge.NativeModuleCallExceptionHandler; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.WritableNativeMap; import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec; -import com.facebook.react.cxxbridge.CatalystInstanceImpl; -import com.facebook.react.cxxbridge.JSBundleLoader; -import com.facebook.react.cxxbridge.JSCJavaScriptExecutor; -import com.facebook.react.cxxbridge.JavaScriptExecutor; +import com.facebook.react.bridge.CatalystInstanceImpl; +import com.facebook.react.bridge.JSBundleLoader; +import com.facebook.react.bridge.JSCJavaScriptExecutor; +import com.facebook.react.bridge.JavaScriptExecutor; import com.facebook.react.modules.core.ReactChoreographer; import com.android.internal.util.Predicate; diff --git a/ReactAndroid/src/main/java/com/facebook/react/BUCK b/ReactAndroid/src/main/java/com/facebook/react/BUCK index 2982e603c..6f9688993 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/BUCK @@ -9,7 +9,6 @@ DEPS = [ react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), - react_native_target("java/com/facebook/react/cxxbridge:bridge"), react_native_target("java/com/facebook/react/devsupport:devsupport"), react_native_target("java/com/facebook/react/devsupport:interfaces"), react_native_target("java/com/facebook/react/jstasks:jstasks"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java index c8693345f..cabe52043 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java @@ -10,14 +10,14 @@ import java.util.Map; import com.facebook.common.logging.FLog; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.bridge.ModuleSpec; +import com.facebook.react.bridge.ModuleHolder; import com.facebook.react.bridge.NativeModule; +import com.facebook.react.bridge.NativeModuleRegistry; import com.facebook.react.bridge.OnBatchCompleteListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactMarker; import com.facebook.react.bridge.ReactMarkerConstants; import com.facebook.react.common.ReactConstants; -import com.facebook.react.cxxbridge.ModuleHolder; -import com.facebook.react.cxxbridge.NativeModuleRegistry; import com.facebook.react.module.model.ReactModuleInfo; /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index 6fde30b39..6044151e5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -39,16 +39,16 @@ import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactMarker; import com.facebook.react.bridge.ReactMarkerConstants; import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec; +import com.facebook.react.bridge.CatalystInstanceImpl; +import com.facebook.react.bridge.JSBundleLoader; +import com.facebook.react.bridge.JSCJavaScriptExecutor; +import com.facebook.react.bridge.JavaScriptExecutor; +import com.facebook.react.bridge.NativeModuleRegistry; +import com.facebook.react.bridge.ProxyJavaScriptExecutor; +import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.LifecycleState; import com.facebook.react.common.ReactConstants; import com.facebook.react.common.annotations.VisibleForTesting; -import com.facebook.react.cxxbridge.CatalystInstanceImpl; -import com.facebook.react.cxxbridge.JSBundleLoader; -import com.facebook.react.cxxbridge.JSCJavaScriptExecutor; -import com.facebook.react.cxxbridge.JavaScriptExecutor; -import com.facebook.react.cxxbridge.NativeModuleRegistry; -import com.facebook.react.cxxbridge.ProxyJavaScriptExecutor; -import com.facebook.react.cxxbridge.UiThreadUtil; import com.facebook.react.devsupport.DevSupportManagerFactory; import com.facebook.react.devsupport.ReactInstanceDevCommandsHandler; import com.facebook.react.devsupport.RedBoxHandler; diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java index 91eb86f23..941c204bd 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java @@ -13,8 +13,8 @@ import android.app.Application; import com.facebook.infer.annotation.Assertions; import com.facebook.react.bridge.NativeModuleCallExceptionHandler; import com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener; +import com.facebook.react.bridge.JSBundleLoader; import com.facebook.react.common.LifecycleState; -import com.facebook.react.cxxbridge.JSBundleLoader; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.devsupport.RedBoxHandler; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java index 866104fb1..e30f0288d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java @@ -6,14 +6,155 @@ * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ - package com.facebook.react.bridge; +import java.lang.reflect.Array; + +import java.util.AbstractList; +import java.util.List; +import java.util.Map; + import javax.annotation.Nullable; import android.os.Bundle; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.ReadableMapKeySetIterator; +import com.facebook.react.bridge.ReadableType; +import com.facebook.react.bridge.WritableNativeArray; +import com.facebook.react.bridge.WritableNativeMap; + public class Arguments { + private static Object makeNativeObject(Object object) { + if (object == null) { + return null; + } else if (object instanceof Float || + object instanceof Long || + object instanceof Byte || + object instanceof Short) { + return new Double(((Number) object).doubleValue()); + } else if (object.getClass().isArray()) { + return makeNativeArray(object); + } else if (object instanceof List) { + return makeNativeArray((List) object); + } else if (object instanceof Map) { + return makeNativeMap((Map) object); + } else if (object instanceof Bundle) { + return makeNativeMap((Bundle) object); + } else { + // Boolean, Integer, Double, String, WritableNativeArray, WritableNativeMap + return object; + } + } + + /** + * This method converts a List into a NativeArray. The data types supported + * are boolean, int, float, double, and String. List, Map, and Bundle + * objects, as well as arrays, containing values of the above types and/or + * null, or any recursive arrangement of these, are also supported. The best + * way to think of this is a way to generate a Java representation of a json + * list, from Java types which have a natural representation in json. + */ + public static WritableNativeArray makeNativeArray(List objects) { + WritableNativeArray nativeArray = new WritableNativeArray(); + if (objects == null) { + return nativeArray; + } + for (Object elem : objects) { + elem = makeNativeObject(elem); + if (elem == null) { + nativeArray.pushNull(); + } else if (elem instanceof Boolean) { + nativeArray.pushBoolean((Boolean) elem); + } else if (elem instanceof Integer) { + nativeArray.pushInt((Integer) elem); + } else if (elem instanceof Double) { + nativeArray.pushDouble((Double) elem); + } else if (elem instanceof String) { + nativeArray.pushString((String) elem); + } else if (elem instanceof WritableNativeArray) { + nativeArray.pushArray((WritableNativeArray) elem); + } else if (elem instanceof WritableNativeMap) { + nativeArray.pushMap((WritableNativeMap) elem); + } else { + throw new IllegalArgumentException("Could not convert " + elem.getClass()); + } + } + return nativeArray; + } + + /** + * This overload is like the above, but uses reflection to operate on any + * primitive or object type. + */ + public static WritableNativeArray makeNativeArray(final Object objects) { + if (objects == null) { + return new WritableNativeArray(); + } + // No explicit check for objects's type here. If it's not an array, the + // Array methods will throw IllegalArgumentException. + return makeNativeArray(new AbstractList() { + public int size() { + return Array.getLength(objects); + } + + public Object get(int index) { + return Array.get(objects, index); + } + }); + } + + private static void addEntry(WritableNativeMap nativeMap, String key, Object value) { + value = makeNativeObject(value); + if (value == null) { + nativeMap.putNull(key); + } else if (value instanceof Boolean) { + nativeMap.putBoolean(key, (Boolean) value); + } else if (value instanceof Integer) { + nativeMap.putInt(key, (Integer) value); + } else if (value instanceof Number) { + nativeMap.putDouble(key, ((Number) value).doubleValue()); + } else if (value instanceof String) { + nativeMap.putString(key, (String) value); + } else if (value instanceof WritableNativeArray) { + nativeMap.putArray(key, (WritableNativeArray) value); + } else if (value instanceof WritableNativeMap) { + nativeMap.putMap(key, (WritableNativeMap) value); + } else { + throw new IllegalArgumentException("Could not convert " + value.getClass()); + } + } + + /** + * This method converts a Map into a NativeMap. Value types are supported as + * with makeNativeArray. The best way to think of this is a way to generate + * a Java representation of a json object, from Java types which have a + * natural representation in json. + */ + public static WritableNativeMap makeNativeMap(Map objects) { + WritableNativeMap nativeMap = new WritableNativeMap(); + if (objects == null) { + return nativeMap; + } + for (Map.Entry entry : objects.entrySet()) { + addEntry(nativeMap, entry.getKey(), entry.getValue()); + } + return nativeMap; + } + + /** + * Like the above, but takes a Bundle instead of a Map. + */ + public static WritableNativeMap makeNativeMap(Bundle bundle) { + WritableNativeMap nativeMap = new WritableNativeMap(); + if (bundle == null) { + return nativeMap; + } + for (String key : bundle.keySet()) { + addEntry(nativeMap, key, bundle.get(key)); + } + return nativeMap; + } /** * This method should be used when you need to stub out creating NativeArrays in unit tests. @@ -64,35 +205,34 @@ public class Arguments { * Convert an array to a {@link WritableArray}. * * @param array the array to convert. Supported types are: {@code String[]}, {@code Bundle[]}, - * {@code int[]}, {@code float[]}, {@code double[]}, {@code boolean[]}. - * + * {@code int[]}, {@code float[]}, {@code double[]}, {@code boolean[]}. * @return the converted {@link WritableArray} * @throws IllegalArgumentException if the passed object is none of the above types */ public static WritableArray fromArray(Object array) { WritableArray catalystArray = createArray(); if (array instanceof String[]) { - for (String v: (String[]) array) { + for (String v : (String[]) array) { catalystArray.pushString(v); } } else if (array instanceof Bundle[]) { - for (Bundle v: (Bundle[]) array) { + for (Bundle v : (Bundle[]) array) { catalystArray.pushMap(fromBundle(v)); } } else if (array instanceof int[]) { - for (int v: (int[]) array) { + for (int v : (int[]) array) { catalystArray.pushInt(v); } } else if (array instanceof float[]) { - for (float v: (float[]) array) { + for (float v : (float[]) array) { catalystArray.pushDouble(v); } } else if (array instanceof double[]) { - for (double v: (double[]) array) { + for (double v : (double[]) array) { catalystArray.pushDouble(v); } } else if (array instanceof boolean[]) { - for (boolean v: (boolean[]) array) { + for (boolean v : (boolean[]) array) { catalystArray.pushBoolean(v); } } else { @@ -104,11 +244,11 @@ public class Arguments { /** * Convert a {@link Bundle} to a {@link WritableMap}. Supported key types in the bundle * are: - * + *

*

    - *
  • primitive types: int, float, double, boolean
  • - *
  • arrays supported by {@link #fromArray(Object)}
  • - *
  • {@link Bundle} objects that are recursively converted to maps
  • + *
  • primitive types: int, float, double, boolean
  • + *
  • arrays supported by {@link #fromArray(Object)}
  • + *
  • {@link Bundle} objects that are recursively converted to maps
  • *
* * @param bundle the {@link Bundle} to convert @@ -117,7 +257,7 @@ public class Arguments { */ public static WritableMap fromBundle(Bundle bundle) { WritableMap map = createMap(); - for (String key: bundle.keySet()) { + for (String key : bundle.keySet()) { Object value = bundle.get(key); if (value == null) { map.putNull(key); @@ -144,6 +284,7 @@ public class Arguments { /** * Convert a {@link WritableMap} to a {@link Bundle}. + * * @param readableMap the {@link WritableMap} to convert. * @return the converted {@link Bundle}. */ diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK b/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK index 0f67d30d3..b2a5d5d72 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK @@ -33,5 +33,6 @@ android_library( react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_target("java/com/facebook/react/common:common"), + react_native_target("java/com/facebook/react/module/model:model"), ], ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CatalystInstanceImpl.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CatalystInstanceImpl.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java index 04b5f5973..42ffc8c19 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CatalystInstanceImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CallbackImpl.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxCallbackImpl.java similarity index 72% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CallbackImpl.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/CxxCallbackImpl.java index 76d83ea32..bb774a6af 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CallbackImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxCallbackImpl.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; @@ -10,15 +10,15 @@ import com.facebook.react.bridge.NativeArray; import static com.facebook.react.bridge.Arguments.*; /** - * Callback impl that calls directly into the cxxbridge. Created from C++. + * Callback impl that calls directly into the cxx bridge. Created from C++. */ @DoNotStrip -public class CallbackImpl implements Callback { +public class CxxCallbackImpl implements Callback { @DoNotStrip private final HybridData mHybridData; @DoNotStrip - private CallbackImpl(HybridData hybridData) { + private CxxCallbackImpl(HybridData hybridData) { mHybridData = hybridData; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java similarity index 95% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapper.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java index c576290b8..3b14ec442 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapperBase.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java similarity index 97% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapperBase.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java index f763d9282..e6cb4e61c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/CxxModuleWrapperBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/FallbackJSBundleLoader.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/FallbackJSBundleLoader.java similarity index 98% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/FallbackJSBundleLoader.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/FallbackJSBundleLoader.java index ea2ff3274..d81949093 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/FallbackJSBundleLoader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/FallbackJSBundleLoader.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import java.util.ArrayList; import java.util.List; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSBundleLoader.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java similarity index 98% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSBundleLoader.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java index 812676778..b00a7851b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSBundleLoader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import android.content.Context; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSCJavaScriptExecutor.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java similarity index 97% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSCJavaScriptExecutor.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java index 36e0bb29e..1d65e9b1d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JSCJavaScriptExecutor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaMethodWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaMethodWrapper.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java index 0728b413b..c78be62ca 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaMethodWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaModuleWrapper.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaModuleWrapper.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java index bb67aaaa8..7c243711f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaModuleWrapper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaScriptExecutor.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptExecutor.java similarity index 96% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaScriptExecutor.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptExecutor.java index 7f1573240..f03218ff5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/JavaScriptExecutor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptExecutor.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java index 9285a9c9f..d19cb336a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java @@ -1,6 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; import javax.inject.Provider; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java similarity index 99% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java index 63597eb85..e9c2080b0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import java.util.ArrayList; import java.util.Collection; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ProxyJavaScriptExecutor.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java similarity index 98% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ProxyJavaScriptExecutor.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java index 48fd281e3..57d965062 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ProxyJavaScriptExecutor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.annotation.Nullable; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ReactCallback.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCallback.java similarity index 93% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ReactCallback.java rename to ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCallback.java index d4299a439..94784cb30 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ReactCallback.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCallback.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import com.facebook.proguard.annotations.DoNotStrip; diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/bridge.pro b/ReactAndroid/src/main/java/com/facebook/react/bridge/bridge.pro similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/cxxbridge/bridge.pro rename to ReactAndroid/src/main/java/com/facebook/react/bridge/bridge.pro diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro b/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro index f5c925a42..2625c0032 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro @@ -1,5 +1,5 @@ -keepnames class * extends com.facebook.react.bridge.JavaScriptModule { *; } --keepnames class * extends com.facebook.react.cxxbridge.CxxModuleWrapper {*; } +-keepnames class * extends com.facebook.react.bridge.CxxModuleWrapper {*; } -keepclassmembers class * extends com.facebook.react.bridge.NativeModule { @com.facebook.react.bridge.ReactMethod *; public (...); @@ -17,3 +17,11 @@ void markerAnnotate(int,int,java.lang.String,java.lang.String); void markerTag(int,int,java.lang.String); } + +## Putting this here is kind of a hack. I don't want to modify the OSS bridge. +## TODO mhorowitz: add @DoNotStrip to the interface directly. + +-keepclassmembers class com.facebook.react.bridge.queue.MessageQueueThread { + public boolean isOnThread(); + public void assertIsOnThread(); +} diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/BUCK b/ReactAndroid/src/main/java/com/facebook/react/common/BUCK index 8ba1da479..12fe6d3a8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/common/BUCK @@ -18,6 +18,7 @@ android_library( ], deps = [ ":build_config", + react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), react_native_dep("third-party/android/support/v4:lib-support-v4"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DebugServerException.java b/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/devsupport/DebugServerException.java rename to ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/Arguments.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/Arguments.java deleted file mode 100644 index fbfe0db11..000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/Arguments.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -package com.facebook.react.cxxbridge; - -import java.lang.reflect.Array; - -import java.util.AbstractList; -import java.util.List; -import java.util.Map; - -import javax.annotation.Nullable; - -import android.os.Bundle; - -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.ReadableMapKeySetIterator; -import com.facebook.react.bridge.ReadableType; -import com.facebook.react.bridge.WritableNativeArray; -import com.facebook.react.bridge.WritableNativeMap; - -public class Arguments { - private static Object makeNativeObject(Object object) { - if (object == null) { - return null; - } else if (object instanceof Float || - object instanceof Long || - object instanceof Byte || - object instanceof Short) { - return new Double(((Number) object).doubleValue()); - } else if (object.getClass().isArray()) { - return makeNativeArray(object); - } else if (object instanceof List) { - return makeNativeArray((List) object); - } else if (object instanceof Map) { - return makeNativeMap((Map) object); - } else if (object instanceof Bundle) { - return makeNativeMap((Bundle) object); - } else { - // Boolean, Integer, Double, String, WritableNativeArray, WritableNativeMap - return object; - } - } - - /** - * This method converts a List into a NativeArray. The data types supported - * are boolean, int, float, double, and String. List, Map, and Bundle - * objects, as well as arrays, containing values of the above types and/or - * null, or any recursive arrangement of these, are also supported. The best - * way to think of this is a way to generate a Java representation of a json - * list, from Java types which have a natural representation in json. - */ - public static WritableNativeArray makeNativeArray(List objects) { - WritableNativeArray nativeArray = new WritableNativeArray(); - if (objects == null) { - return nativeArray; - } - for (Object elem : objects) { - elem = makeNativeObject(elem); - if (elem == null) { - nativeArray.pushNull(); - } else if (elem instanceof Boolean) { - nativeArray.pushBoolean((Boolean) elem); - } else if (elem instanceof Integer) { - nativeArray.pushInt((Integer) elem); - } else if (elem instanceof Double) { - nativeArray.pushDouble((Double) elem); - } else if (elem instanceof String) { - nativeArray.pushString((String) elem); - } else if (elem instanceof WritableNativeArray) { - nativeArray.pushArray((WritableNativeArray) elem); - } else if (elem instanceof WritableNativeMap) { - nativeArray.pushMap((WritableNativeMap) elem); - } else { - throw new IllegalArgumentException("Could not convert " + elem.getClass()); - } - } - return nativeArray; - } - - - /** - * This overload is like the above, but uses reflection to operate on any - * primitive or object type. - */ - public static WritableNativeArray makeNativeArray(final Object objects) { - if (objects == null) { - return new WritableNativeArray(); - } - // No explicit check for objects's type here. If it's not an array, the - // Array methods will throw IllegalArgumentException. - return makeNativeArray(new AbstractList() { - public int size() { - return Array.getLength(objects); - } - public Object get(int index) { - return Array.get(objects, index); - } - }); - } - - private static void addEntry(WritableNativeMap nativeMap, String key, Object value) { - value = makeNativeObject(value); - if (value == null) { - nativeMap.putNull(key); - } else if (value instanceof Boolean) { - nativeMap.putBoolean(key, (Boolean) value); - } else if (value instanceof Integer) { - nativeMap.putInt(key, (Integer) value); - } else if (value instanceof Number) { - nativeMap.putDouble(key, ((Number) value).doubleValue()); - } else if (value instanceof String) { - nativeMap.putString(key, (String) value); - } else if (value instanceof WritableNativeArray) { - nativeMap.putArray(key, (WritableNativeArray) value); - } else if (value instanceof WritableNativeMap) { - nativeMap.putMap(key, (WritableNativeMap) value); - } else { - throw new IllegalArgumentException("Could not convert " + value.getClass()); - } - } - - /** - * This method converts a Map into a NativeMap. Value types are supported as - * with makeNativeArray. The best way to think of this is a way to generate - * a Java representation of a json object, from Java types which have a - * natural representation in json. - */ - public static WritableNativeMap makeNativeMap(Map objects) { - WritableNativeMap nativeMap = new WritableNativeMap(); - if (objects == null) { - return nativeMap; - } - for (Map.Entry entry : objects.entrySet()) { - addEntry(nativeMap, entry.getKey(), entry.getValue()); - } - return nativeMap; - } - - /** - * Like the above, but takes a Bundle instead of a Map. - */ - public static WritableNativeMap makeNativeMap(Bundle bundle) { - WritableNativeMap nativeMap = new WritableNativeMap(); - if (bundle == null) { - return nativeMap; - } - for (String key: bundle.keySet()) { - addEntry(nativeMap, key, bundle.get(key)); - } - return nativeMap; - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK deleted file mode 100644 index 42c40aa1e..000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK +++ /dev/null @@ -1,34 +0,0 @@ -include_defs("//ReactAndroid/DEFS") - -android_library( - name = "bridge", - srcs = glob(["**/*.java"]), - exported_deps = [ - react_native_dep("java/com/facebook/jni:jni"), - react_native_dep("java/com/facebook/proguard/annotations:annotations"), - react_native_target("java/com/facebook/react/bridge:bridge"), - ], - proguard_config = "bridge.pro", - visibility = [ - "PUBLIC", - ], - deps = [ - react_native_dep("java/com/facebook/systrace:systrace"), - react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), - react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), - # TODO mhorowitz: - # java/com/facebook/catalyst/js/react-native-github/ReactAndroid/src/main/java/com/facebook/react/bridge/ - # lacks a similar dependency to this. This means that the - # loadLibrary calls in it are not guaranteed to succeed. This is - # kind of a mess for the jni/jni-internal stuff. In theory, we - # should be creating -internal android_library rules, too. In - # practice, since these are resolved at runtime, putting the - # dependency in the app works, too. gross. - # '//native/react/jni:jni-internal', - react_native_dep("third-party/java/infer-annotations:infer-annotations"), - react_native_dep("third-party/java/jsr-305:jsr-305"), - react_native_target("java/com/facebook/react/common:common"), - react_native_target("java/com/facebook/react/devsupport:devsupport"), - react_native_target("java/com/facebook/react/module/model:model"), - ], -) diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/SoftAssertions.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/SoftAssertions.java deleted file mode 100644 index 8809540a0..000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/SoftAssertions.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -package com.facebook.react.cxxbridge; - -import javax.annotation.Nullable; - -import com.facebook.react.bridge.AssertionException; - -/** - * Utility class to make assertions that should not hard-crash the app but instead be handled by the - * Catalyst app {@link NativeModuleCallExceptionHandler}. See the javadoc on that class for - * more information about our opinion on when these assertions should be used as opposed to - * assertions that might throw AssertionError Throwables that will cause the app to hard crash. - */ -public class SoftAssertions { - - /** - * Throw {@link AssertionException} with a given message. Use this method surrounded with - * {@code if} block with assert condition in case you plan to do string concatenation to produce - * the message. - */ - public static void assertUnreachable(String message) { - throw new AssertionException(message); - } - - /** - * Asserts the given condition, throwing an {@link AssertionException} if the condition doesn't - * hold. - */ - public static void assertCondition(boolean condition, String message) { - if (!condition) { - throw new AssertionException(message); - } - } - - /** - * Asserts that the given Object isn't null, throwing an {@link AssertionException} if it was. - */ - public static T assertNotNull(@Nullable T instance) { - if (instance == null) { - throw new AssertionException("Expected object to not be null!"); - } - return instance; - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UiThreadUtil.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UiThreadUtil.java deleted file mode 100644 index d8624474b..000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UiThreadUtil.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -package com.facebook.react.cxxbridge; - -import javax.annotation.Nullable; - -import android.os.Handler; -import android.os.Looper; - -/** - * Utility for interacting with the UI thread. - */ -public class UiThreadUtil { - - @Nullable private static Handler sMainHandler; - - /** - * @return {@code true} if the current thread is the UI thread. - */ - public static boolean isOnUiThread() { - return Looper.getMainLooper().getThread() == Thread.currentThread(); - } - - /** - * Throws an {@link AssertionException} if the current thread is not the UI thread. - */ - public static void assertOnUiThread() { - SoftAssertions.assertCondition(isOnUiThread(), "Expected to run on UI thread!"); - } - - /** - * Throws an {@link AssertionException} if the current thread is the UI thread. - */ - public static void assertNotOnUiThread() { - SoftAssertions.assertCondition(!isOnUiThread(), "Expected not to run on UI thread!"); - } - - /** - * Runs the given {@code Runnable} on the UI thread. - */ - public static void runOnUiThread(Runnable runnable) { - synchronized (UiThreadUtil.class) { - if (sMainHandler == null) { - sMainHandler = new Handler(Looper.getMainLooper()); - } - } - sMainHandler.post(runnable); - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK b/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK index de69557c9..aa229b304 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK @@ -8,6 +8,5 @@ android_library( ], deps = [ react_native_dep("third-party/java/jsr-305:jsr-305"), - react_native_target("java/com/facebook/react/bridge:bridge"), ], ) diff --git a/ReactAndroid/src/main/jni/xreact/jni/CatalystInstanceImpl.h b/ReactAndroid/src/main/jni/xreact/jni/CatalystInstanceImpl.h index 391d195b1..774be5f85 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/CatalystInstanceImpl.h +++ b/ReactAndroid/src/main/jni/xreact/jni/CatalystInstanceImpl.h @@ -19,12 +19,12 @@ class JavaScriptExecutorHolder; class NativeArray; struct ReactCallback : public jni::JavaClass { - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/ReactCallback;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/ReactCallback;"; }; class CatalystInstanceImpl : public jni::HybridClass { public: - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/CatalystInstanceImpl;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/CatalystInstanceImpl;"; static jni::local_ref initHybrid(jni::alias_ref); ~CatalystInstanceImpl() override; diff --git a/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapper.h b/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapper.h index 11551e3df..74d51563f 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapper.h +++ b/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapper.h @@ -10,7 +10,7 @@ namespace react { class CxxModuleWrapper : public jni::HybridClass { public: constexpr static const char *const kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/CxxModuleWrapper;"; + "Lcom/facebook/react/bridge/CxxModuleWrapper;"; static void registerNatives() { registerHybrid({ diff --git a/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapperBase.h b/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapperBase.h index 7ae922e4a..c184464f1 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapperBase.h +++ b/ReactAndroid/src/main/jni/xreact/jni/CxxModuleWrapperBase.h @@ -24,7 +24,7 @@ class CxxModuleWrapperBase : public jni::HybridClass { public: constexpr static const char *const kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/CxxModuleWrapperBase;"; + "Lcom/facebook/react/bridge/CxxModuleWrapperBase;"; static void registerNatives() { registerHybrid({ diff --git a/ReactAndroid/src/main/jni/xreact/jni/JCallback.h b/ReactAndroid/src/main/jni/xreact/jni/JCallback.h index ccdbcabce..b4b68d1f8 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JCallback.h +++ b/ReactAndroid/src/main/jni/xreact/jni/JCallback.h @@ -18,20 +18,20 @@ struct JCallback : public jni::JavaClass { constexpr static auto kJavaDescriptor = "Lcom/facebook/react/bridge/Callback;"; }; -class JCallbackImpl : public jni::HybridClass { +class JCxxCallbackImpl : public jni::HybridClass { public: - constexpr static auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/CallbackImpl;"; + constexpr static auto kJavaDescriptor = "Lcom/facebook/react/bridge/CxxCallbackImpl;"; static void registerNatives() { javaClassStatic()->registerNatives({ - makeNativeMethod("nativeInvoke", JCallbackImpl::invoke), + makeNativeMethod("nativeInvoke", JCxxCallbackImpl::invoke), }); } private: friend HybridBase; using Callback = std::function; - JCallbackImpl(Callback callback) : callback_(std::move(callback)) {} + JCxxCallbackImpl(Callback callback) : callback_(std::move(callback)) {} void invoke(NativeArray* arguments) { callback_(arguments->consume()); diff --git a/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h b/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h index 6ab0d6406..0612ccde4 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h +++ b/ReactAndroid/src/main/jni/xreact/jni/JavaModuleWrapper.h @@ -16,7 +16,7 @@ class MessageQueueThread; struct JMethodDescriptor : public jni::JavaClass { static constexpr auto kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/JavaModuleWrapper$MethodDescriptor;"; + "Lcom/facebook/react/bridge/JavaModuleWrapper$MethodDescriptor;"; jni::local_ref getMethod() const; std::string getSignature() const; @@ -25,7 +25,7 @@ struct JMethodDescriptor : public jni::JavaClass { }; struct JavaModuleWrapper : jni::JavaClass { - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/JavaModuleWrapper;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/JavaModuleWrapper;"; jni::local_ref getModule() { // This is the call which causes a lazy Java module to actually be diff --git a/ReactAndroid/src/main/jni/xreact/jni/JavaScriptExecutorHolder.h b/ReactAndroid/src/main/jni/xreact/jni/JavaScriptExecutorHolder.h index f59d9ad55..5baf7153d 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JavaScriptExecutorHolder.h +++ b/ReactAndroid/src/main/jni/xreact/jni/JavaScriptExecutorHolder.h @@ -12,7 +12,7 @@ namespace react { class JavaScriptExecutorHolder : public jni::HybridClass { public: static constexpr auto kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/JavaScriptExecutor;"; + "Lcom/facebook/react/bridge/JavaScriptExecutor;"; std::shared_ptr getExecutorFactory() { return mExecutorFactory; diff --git a/ReactAndroid/src/main/jni/xreact/jni/MethodInvoker.cpp b/ReactAndroid/src/main/jni/xreact/jni/MethodInvoker.cpp index 51664a3d4..1e1cb862d 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/MethodInvoker.cpp +++ b/ReactAndroid/src/main/jni/xreact/jni/MethodInvoker.cpp @@ -46,11 +46,11 @@ jdouble extractDouble(const folly::dynamic& value) { } } -local_ref extractCallback(std::weak_ptr& instance, const folly::dynamic& value) { +local_ref extractCallback(std::weak_ptr& instance, const folly::dynamic& value) { if (value.isNull()) { - return local_ref(nullptr); + return local_ref(nullptr); } else { - return JCallbackImpl::newObjectCxxArgs(makeCallback(instance, value)); + return JCxxCallbackImpl::newObjectCxxArgs(makeCallback(instance, value)); } } diff --git a/ReactAndroid/src/main/jni/xreact/jni/ModuleRegistryBuilder.h b/ReactAndroid/src/main/jni/xreact/jni/ModuleRegistryBuilder.h index b17664cd9..e295ebc55 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/ModuleRegistryBuilder.h +++ b/ReactAndroid/src/main/jni/xreact/jni/ModuleRegistryBuilder.h @@ -17,7 +17,7 @@ class MessageQueueThread; class ModuleHolder : public jni::JavaClass { public: static auto constexpr kJavaDescriptor = - "Lcom/facebook/react/cxxbridge/ModuleHolder;"; + "Lcom/facebook/react/bridge/ModuleHolder;"; std::string getName() const; xplat::module::CxxModule::Provider getProvider() const; diff --git a/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp b/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp index f576955a1..d86c971d1 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp +++ b/ReactAndroid/src/main/jni/xreact/jni/OnLoad.cpp @@ -35,7 +35,7 @@ namespace { class JSCJavaScriptExecutorHolder : public HybridClass { public: - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/JSCJavaScriptExecutor;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/JSCJavaScriptExecutor;"; static local_ref initHybrid(alias_ref, ReadableNativeArray* jscConfigArray) { // See JSCJavaScriptExecutor.Factory() for the other side of this hack. @@ -61,7 +61,7 @@ struct JavaJSExecutor : public JavaClass { class ProxyJavaScriptExecutorHolder : public HybridClass { public: - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/cxxbridge/ProxyJavaScriptExecutor;"; + static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/ProxyJavaScriptExecutor;"; static local_ref initHybrid( alias_ref, alias_ref executorInstance) { @@ -159,7 +159,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { CatalystInstanceImpl::registerNatives(); CxxModuleWrapperBase::registerNatives(); CxxModuleWrapper::registerNatives(); - JCallbackImpl::registerNatives(); + JCxxCallbackImpl::registerNatives(); #ifdef WITH_INSPECTOR JInspector::registerNatives(); #endif diff --git a/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK b/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK index ea3b9df94..b7650485f 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK +++ b/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK @@ -42,5 +42,6 @@ rn_robolectric_test( react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), react_native_target("java/com/facebook/react/uimanager:uimanager"), + react_native_tests_target("java/com/facebook/common/logging:logging"), ], ) diff --git a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BaseJavaModuleTest.java b/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java similarity index 91% rename from ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BaseJavaModuleTest.java rename to ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java index bb837d164..6af5b6905 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BaseJavaModuleTest.java +++ b/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java @@ -7,17 +7,11 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import javax.inject.Provider; import java.util.List; -import com.facebook.react.bridge.BaseJavaModule; -import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.ReadableNativeArray; -import com.facebook.react.bridge.Promise; -import com.facebook.react.bridge.NativeArgumentsParseException; - import org.junit.Before; import org.junit.Rule; import org.junit.runner.RunWith; diff --git a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/FallbackJSBundleLoaderTest.java b/ReactAndroid/src/test/java/com/facebook/react/bridge/FallbackJSBundleLoaderTest.java similarity index 99% rename from ReactAndroid/src/test/java/com/facebook/react/cxxbridge/FallbackJSBundleLoaderTest.java rename to ReactAndroid/src/test/java/com/facebook/react/bridge/FallbackJSBundleLoaderTest.java index bb7ae0151..df8e00028 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/FallbackJSBundleLoaderTest.java +++ b/ReactAndroid/src/test/java/com/facebook/react/bridge/FallbackJSBundleLoaderTest.java @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -package com.facebook.react.cxxbridge; +package com.facebook.react.bridge; import java.util.ArrayList; import java.util.Arrays; diff --git a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BUCK b/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BUCK deleted file mode 100644 index d622c49e3..000000000 --- a/ReactAndroid/src/test/java/com/facebook/react/cxxbridge/BUCK +++ /dev/null @@ -1,22 +0,0 @@ -include_defs("//ReactAndroid/DEFS") - -rn_robolectric_test( - name = "cxxbridge", - srcs = glob(["*Test.java"]), - # Please change the contact to the oncall of your team - contacts = ["oncall+fbandroid_sheriff@xmail.facebook.com"], - visibility = [ - "PUBLIC", - ], - deps = [ - react_native_dep("libraries/fbcore/src/test/java/com/facebook/powermock:powermock"), - react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), - react_native_dep("third-party/java/fest:fest"), - react_native_dep("third-party/java/junit:junit"), - react_native_dep("third-party/java/mockito:mockito"), - react_native_dep("third-party/java/robolectric3/robolectric:robolectric"), - react_native_target("java/com/facebook/react/bridge:bridge"), - react_native_target("java/com/facebook/react/cxxbridge:bridge"), - react_native_tests_target("java/com/facebook/common/logging:logging"), - ], -)