react-native 0.66.0-rc.4 → 0.67.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +14 -1
  2. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -0
  3. package/Libraries/Animated/AnimatedEvent.js +23 -4
  4. package/Libraries/Animated/NativeAnimatedHelper.js +2 -2
  5. package/Libraries/Animated/components/AnimatedImage.js +3 -3
  6. package/Libraries/Animated/components/AnimatedScrollView.js +3 -3
  7. package/Libraries/Animated/components/AnimatedText.js +3 -3
  8. package/Libraries/Animated/components/AnimatedView.js +1 -3
  9. package/Libraries/Animated/createAnimatedComponent.js +3 -34
  10. package/Libraries/Components/Button.js +3 -0
  11. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +3 -6
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -7
  13. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +1 -0
  14. package/Libraries/Components/ScrollView/ScrollView.js +17 -16
  15. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +268 -252
  16. package/Libraries/Components/View/View.js +1 -1
  17. package/Libraries/Components/View/ViewAccessibility.js +1 -1
  18. package/Libraries/Core/ExceptionsManager.js +45 -80
  19. package/Libraries/Core/ExtendedError.js +0 -1
  20. package/Libraries/Core/ReactNativeVersion.js +2 -2
  21. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  22. package/Libraries/Core/setUpGlobals.js +2 -4
  23. package/Libraries/Core/setUpTimers.js +2 -2
  24. package/Libraries/Image/Image.ios.js +6 -0
  25. package/Libraries/Image/ImageBackground.js +10 -8
  26. package/Libraries/Image/ImageProps.js +28 -0
  27. package/Libraries/Image/RCTImageView.mm +4 -0
  28. package/Libraries/LogBox/Data/LogBoxData.js +18 -19
  29. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  30. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  31. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  32. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  33. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  34. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -3
  35. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +6 -3
  36. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +1 -2
  37. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -1
  38. package/Libraries/NewAppScreen/components/logo.png +0 -0
  39. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +2 -1
  40. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +2 -0
  41. package/Libraries/Pressability/Pressability.js +13 -13
  42. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  43. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +0 -1
  44. package/Libraries/ReactNative/AppRegistry.js +4 -2
  45. package/Libraries/Renderer/REVISION +1 -1
  46. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +1569 -875
  47. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +529 -319
  48. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +570 -362
  49. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +1592 -891
  50. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +521 -311
  51. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +562 -354
  52. package/Libraries/Share/Share.js +1 -1
  53. package/Libraries/StyleSheet/normalizeColor.js +2 -2
  54. package/Libraries/Text/TextInput/Multiline/RCTUITextView.m +4 -2
  55. package/Libraries/Text/TextInput/RCTBaseTextInputView.m +2 -12
  56. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
  57. package/Libraries/Text/TextProps.js +1 -7
  58. package/Libraries/TurboModule/TurboModuleRegistry.js +1 -1
  59. package/Libraries/Utilities/HMRClient.js +1 -1
  60. package/README.md +1 -1
  61. package/React/Base/RCTBridge+Private.h +8 -0
  62. package/React/Base/RCTBridge.h +4 -0
  63. package/React/Base/RCTBridge.m +19 -7
  64. package/React/Base/RCTBridgeModule.h +2 -11
  65. package/React/Base/RCTBundleURLProvider.h +1 -1
  66. package/React/Base/RCTBundleURLProvider.mm +5 -3
  67. package/React/Base/RCTConstants.h +0 -6
  68. package/React/Base/RCTConstants.m +0 -15
  69. package/React/Base/RCTConvert.h +1 -1
  70. package/React/Base/RCTDefines.h +12 -3
  71. package/React/Base/RCTEventDispatcherProtocol.h +2 -0
  72. package/React/Base/RCTJSThread.h +29 -0
  73. package/React/Base/RCTJSThread.m +19 -0
  74. package/React/Base/RCTRootView.h +15 -0
  75. package/React/Base/RCTRootView.m +15 -0
  76. package/React/Base/RCTTouchHandler.m +1 -9
  77. package/React/Base/RCTUtils.h +3 -0
  78. package/React/Base/RCTUtils.m +14 -7
  79. package/React/Base/RCTVersion.m +2 -2
  80. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +11 -0
  81. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +35 -1
  82. package/React/CoreModules/RCTAccessibilityManager+Internal.h +24 -0
  83. package/React/CoreModules/RCTAccessibilityManager.mm +18 -3
  84. package/React/CoreModules/RCTActionSheetManager.mm +14 -5
  85. package/React/CoreModules/RCTAppearance.mm +3 -1
  86. package/React/CoreModules/RCTDevLoadingView.mm +5 -10
  87. package/React/CoreModules/RCTDevSettings.mm +6 -6
  88. package/React/CoreModules/RCTDevSplitBundleLoader.mm +1 -1
  89. package/React/CoreModules/RCTDeviceInfo.mm +4 -4
  90. package/React/CoreModules/RCTEventDispatcher.mm +5 -0
  91. package/React/CoreModules/RCTExceptionsManager.mm +11 -24
  92. package/React/CoreModules/RCTPerfMonitor.mm +9 -4
  93. package/React/CoreModules/RCTRedBox.mm +1 -5
  94. package/React/CxxBridge/RCTCxxBridge.mm +18 -1
  95. package/React/DevSupport/RCTPackagerConnection.h +3 -0
  96. package/React/DevSupport/RCTPackagerConnection.mm +9 -5
  97. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +11 -3
  98. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +0 -3
  99. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +16 -0
  100. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
  101. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +3 -5
  102. package/React/Fabric/Mounting/RCTMountingManager.mm +15 -1
  103. package/React/Fabric/RCTScheduler.mm +12 -5
  104. package/React/Fabric/RCTSurfacePresenter.mm +0 -4
  105. package/React/Fabric/RCTSurfaceTouchHandler.mm +6 -20
  106. package/React/Fabric/Surface/RCTFabricSurface.mm +1 -3
  107. package/React/React-RCTFabric.podspec +0 -1
  108. package/React/Views/RCTFont.mm +54 -38
  109. package/React/Views/RCTView.m +1 -6
  110. package/React/Views/RCTViewManager.m +3 -2
  111. package/React/Views/SafeAreaView/RCTSafeAreaView.m +1 -5
  112. package/React/Views/ScrollView/RCTScrollView.m +5 -15
  113. package/React/Views/ScrollView/RCTScrollViewManager.m +0 -7
  114. package/React/Views/UIView+React.m +2 -11
  115. package/React-Core.podspec +0 -1
  116. package/ReactAndroid/build.gradle +11 -5
  117. package/ReactAndroid/gradle.properties +1 -1
  118. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -1
  119. package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -7
  120. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/BUCK +2 -1
  121. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +0 -1
  122. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +7 -0
  123. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +7 -0
  124. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +63 -26
  125. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +46 -1
  126. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +31 -0
  127. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +17 -1
  128. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +2 -0
  129. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +13 -2
  130. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -0
  131. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
  132. package/ReactAndroid/src/main/java/com/facebook/react/bridge/RuntimeScheduler.java +21 -0
  133. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +2 -2
  134. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegate.java +40 -0
  135. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegateFactory.java +24 -0
  136. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +0 -6
  137. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +16 -0
  138. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -0
  139. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +5 -2
  140. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +102 -0
  141. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +35 -11
  142. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +5 -72
  143. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +12 -0
  144. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.java +92 -0
  145. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java +27 -42
  146. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +14 -0
  147. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +5 -4
  148. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +3 -7
  149. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +41 -2
  150. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +8 -3
  151. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +43 -9
  152. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +2 -1
  153. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.cpp +69 -0
  154. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.h +40 -0
  155. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +2 -6
  156. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +84 -32
  157. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +4 -2
  158. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.cpp +20 -2
  159. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.h +2 -1
  160. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +9 -1
  161. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +19 -4
  162. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +6 -2
  163. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +2 -1
  164. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.java +10 -1
  165. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BUCK +0 -6
  166. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +4 -1
  167. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.java +9 -8
  168. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java +7 -19
  169. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
  170. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
  171. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +2 -2
  172. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
  173. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
  174. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
  175. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  176. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +8 -8
  177. package/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java +1 -1
  178. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/BUCK +0 -6
  179. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -1
  180. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -5
  181. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +0 -12
  182. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +1 -1
  183. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +75 -10
  184. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +19 -22
  185. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +42 -0
  186. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +7 -1
  187. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +2 -2
  188. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +7 -0
  189. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +2 -1
  190. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +17 -9
  191. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +43 -8
  192. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java +15 -16
  193. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +108 -19
  194. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +0 -6
  195. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +79 -4
  196. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +5 -0
  197. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +94 -3
  198. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +21 -1
  199. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +5 -0
  200. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -4
  201. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +16 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +9 -1
  203. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +20 -1
  204. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +25 -6
  205. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +25 -5
  206. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +8 -8
  209. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +19 -0
  210. package/ReactAndroid/src/main/jni/react/jni/Android.mk +3 -2
  211. package/ReactAndroid/src/main/jni/react/jni/BUCK +4 -5
  212. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +49 -7
  213. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +15 -2
  214. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
  215. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +25 -0
  216. package/{ReactCommon/react/renderer/core/Constants.cpp → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +6 -8
  217. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -0
  218. package/ReactAndroid/src/main/jni/react/perftests/BUCK +0 -4
  219. package/ReactAndroid/src/main/third-party/android/androidx/BUCK +6 -6
  220. package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +43 -0
  221. package/ReactAndroid/src/test/java/com/facebook/react/modules/clipboard/ClipboardModuleTest.java +3 -1
  222. package/ReactCommon/React-Fabric.podspec +9 -1
  223. package/ReactCommon/better/BUCK +0 -6
  224. package/ReactCommon/callinvoker/BUCK +2 -8
  225. package/ReactCommon/cxxreact/BUCK +1 -16
  226. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  227. package/ReactCommon/hermes/inspector/tools/msggen/package.json +7 -4
  228. package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +13 -10
  229. package/ReactCommon/jsi/BUCK +0 -9
  230. package/ReactCommon/jsinspector/BUCK +0 -5
  231. package/ReactCommon/logger/BUCK +0 -5
  232. package/ReactCommon/react/config/BUCK +0 -6
  233. package/ReactCommon/react/debug/BUCK +0 -6
  234. package/ReactCommon/react/nativemodule/core/BUCK +0 -5
  235. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +14 -31
  236. package/ReactCommon/react/nativemodule/samples/BUCK +0 -7
  237. package/ReactCommon/react/renderer/animations/BUCK +1 -4
  238. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
  239. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -26
  240. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
  241. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +912 -1147
  242. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +80 -245
  243. package/ReactCommon/react/renderer/animations/conversions.h +212 -0
  244. package/ReactCommon/react/renderer/animations/primitives.h +104 -0
  245. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +3 -3
  246. package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
  247. package/ReactCommon/react/renderer/animations/utils.h +80 -0
  248. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
  249. package/ReactCommon/react/renderer/attributedstring/BUCK +0 -6
  250. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +7 -3
  251. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
  252. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +1 -1
  253. package/ReactCommon/react/renderer/attributedstring/conversions.h +58 -3
  254. package/ReactCommon/react/renderer/attributedstring/primitives.h +18 -1
  255. package/ReactCommon/react/renderer/componentregistry/BUCK +0 -6
  256. package/ReactCommon/react/renderer/componentregistry/native/BUCK +0 -6
  257. package/ReactCommon/react/renderer/components/image/BUCK +0 -6
  258. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +0 -2
  259. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +0 -6
  260. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +0 -4
  261. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +0 -6
  262. package/ReactCommon/react/renderer/components/modal/BUCK +0 -6
  263. package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +0 -5
  264. package/ReactCommon/react/renderer/components/progressbar/BUCK +0 -6
  265. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -3
  266. package/ReactCommon/react/renderer/components/root/BUCK +0 -6
  267. package/ReactCommon/react/renderer/components/safeareaview/BUCK +0 -6
  268. package/ReactCommon/react/renderer/components/scrollview/BUCK +0 -6
  269. package/ReactCommon/react/renderer/components/slider/BUCK +0 -6
  270. package/ReactCommon/react/renderer/components/slider/SliderComponentDescriptor.h +0 -3
  271. package/ReactCommon/react/renderer/components/switch/BUCK +0 -6
  272. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -3
  273. package/ReactCommon/react/renderer/components/text/BUCK +0 -6
  274. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +1 -20
  275. package/ReactCommon/react/renderer/components/textinput/BUCK +0 -6
  276. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +0 -3
  277. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +2 -0
  278. package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +0 -6
  279. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h +0 -3
  280. package/ReactCommon/react/renderer/components/unimplementedview/BUCK +0 -6
  281. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +0 -4
  282. package/ReactCommon/react/renderer/components/view/Android.mk +1 -1
  283. package/ReactCommon/react/renderer/components/view/BUCK +0 -6
  284. package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
  285. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -23
  286. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +2 -3
  287. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +3 -3
  288. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
  289. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +4 -0
  290. package/ReactCommon/react/renderer/core/BUCK +2 -6
  291. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +14 -9
  292. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +1 -10
  293. package/ReactCommon/react/renderer/core/EventEmitter.cpp +9 -4
  294. package/ReactCommon/react/renderer/core/EventEmitter.h +2 -1
  295. package/ReactCommon/react/renderer/core/Props.h +1 -0
  296. package/ReactCommon/react/renderer/core/PropsParserContext.h +3 -2
  297. package/ReactCommon/react/renderer/core/RawEvent.h +7 -5
  298. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
  299. package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
  300. package/ReactCommon/react/renderer/core/ShadowNode.cpp +7 -10
  301. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
  302. package/ReactCommon/react/renderer/debug/BUCK +0 -6
  303. package/ReactCommon/react/renderer/element/BUCK +0 -6
  304. package/ReactCommon/react/renderer/graphics/Android.mk +1 -1
  305. package/ReactCommon/react/renderer/graphics/BUCK +0 -6
  306. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +0 -1
  307. package/ReactCommon/react/renderer/graphics/Transform.cpp +1 -1
  308. package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
  309. package/ReactCommon/react/renderer/imagemanager/BUCK +0 -6
  310. package/ReactCommon/react/renderer/leakchecker/BUCK +0 -6
  311. package/ReactCommon/react/renderer/mapbuffer/BUCK +0 -6
  312. package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
  313. package/ReactCommon/react/renderer/mounting/BUCK +0 -6
  314. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
  315. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
  316. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
  317. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
  318. package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -7
  319. package/ReactCommon/react/renderer/runtimescheduler/ErrorUtils.h +36 -0
  320. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +28 -20
  321. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +4 -2
  322. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +4 -3
  323. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +4 -2
  324. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +32 -0
  325. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +36 -0
  326. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
  327. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -3
  328. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +4 -2
  329. package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -2
  330. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
  331. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +26 -1
  332. package/ReactCommon/react/renderer/runtimescheduler/tests/StubErrorUtils.h +72 -0
  333. package/ReactCommon/react/renderer/scheduler/BUCK +0 -6
  334. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +1 -4
  335. package/ReactCommon/react/renderer/scheduler/Scheduler.h +1 -1
  336. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +4 -4
  337. package/ReactCommon/react/renderer/telemetry/BUCK +0 -6
  338. package/ReactCommon/react/renderer/templateprocessor/BUCK +0 -6
  339. package/ReactCommon/react/renderer/textlayoutmanager/BUCK +0 -6
  340. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
  341. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +19 -0
  342. package/ReactCommon/react/renderer/timeline/BUCK +6 -12
  343. package/ReactCommon/react/renderer/uimanager/BUCK +0 -6
  344. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
  345. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -2
  346. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +1 -1
  347. package/ReactCommon/react/test_utils/BUCK +3 -6
  348. package/ReactCommon/react/{renderer/core/Constants.h → test_utils/MockSurfaceHandler.h} +9 -7
  349. package/ReactCommon/react/utils/BUCK +0 -6
  350. package/ReactCommon/react/utils/ContextContainer.h +0 -27
  351. package/ReactCommon/reactperflogger/BUCK +0 -4
  352. package/ReactCommon/runtimeexecutor/BUCK +0 -6
  353. package/ReactCommon/yoga/BUCK +1 -5
  354. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.aar → 0.67.0-rc.1/react-native-0.67.0-rc.1.aar} +0 -0
  355. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.md5 +1 -0
  356. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha1 +1 -0
  357. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha256 +1 -0
  358. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha512 +1 -0
  359. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.module → 0.67.0-rc.1/react-native-0.67.0-rc.1.module} +16 -17
  360. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.md5 +1 -0
  361. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha1 +1 -0
  362. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha256 +1 -0
  363. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha512 +1 -0
  364. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.pom → 0.67.0-rc.1/react-native-0.67.0-rc.1.pom} +2 -2
  365. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.md5 +1 -0
  366. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha1 +1 -0
  367. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha256 +1 -0
  368. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha512 +1 -0
  369. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  370. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  371. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  372. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  373. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  374. package/flow/global.js +45 -0
  375. package/index.js +15 -10
  376. package/jest/mockModal.js +31 -0
  377. package/jest/setup.js +5 -3
  378. package/package.json +8 -9
  379. package/react.gradle +53 -18
  380. package/scripts/find-node.sh +13 -0
  381. package/scripts/generate-specs-cli.js +18 -0
  382. package/scripts/ios-configure-glog.sh +4 -0
  383. package/scripts/react-native-xcode.sh +7 -7
  384. package/scripts/react_native_pods.rb +202 -70
  385. package/template/Gemfile +6 -0
  386. package/template/Gemfile.lock +100 -0
  387. package/template/_bundle/config +2 -0
  388. package/template/_flowconfig +1 -1
  389. package/template/_ruby-version +1 -0
  390. package/template/android/app/build.gradle +1 -1
  391. package/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
  392. package/template/android/app/src/main/res/values/styles.xml +1 -0
  393. package/template/android/build.gradle +7 -3
  394. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  395. package/template/android/gradle.properties +1 -1
  396. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -2
  397. package/template/ios/Podfile +0 -1
  398. package/template/package.json +1 -1
  399. package/third-party-podspecs/RCT-Folly.podspec +1 -1
  400. package/third-party-podspecs/glog.podspec +0 -1
  401. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
  402. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  403. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  404. package/Libraries/Components/StaticContainer.react.js +0 -51
  405. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -25
  406. package/Libraries/Interaction/InteractionMixin.js +0 -54
  407. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  408. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
  409. package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
  410. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
  411. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
  412. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -153
  413. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +0 -15
  414. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
  415. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +0 -20
  416. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +0 -39
  417. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +0 -34
  418. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +0 -35
  419. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +0 -15
  420. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +0 -46
  421. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +0 -40
  422. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerDelegate.java +0 -57
  423. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerInterface.java +0 -23
  424. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/BUCK +0 -19
  425. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerDelegate.java +0 -62
  426. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerInterface.java +0 -25
  427. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerDelegate.java +0 -33
  428. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerInterface.java +0 -17
  429. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerDelegate.java +0 -51
  430. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerInterface.java +0 -21
  431. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerDelegate.java +0 -63
  432. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerInterface.java +0 -24
  433. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.md5 +0 -1
  434. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha1 +0 -1
  435. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha256 +0 -1
  436. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha512 +0 -1
  437. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.md5 +0 -1
  438. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha1 +0 -1
  439. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha256 +0 -1
  440. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha512 +0 -1
  441. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.md5 +0 -1
  442. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha1 +0 -1
  443. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha256 +0 -1
  444. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha512 +0 -1
  445. package/scripts/generate-specs.sh +0 -99
  446. package/template/_editorconfig +0 -3
  447. package/template/_gitattributes +0 -3
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ package com.facebook.react.common;
9
+
10
+ /**
11
+ * Factory to create a {@link SurfaceDelegate}. The moduleName is needed to help the factory decide
12
+ * which surface to return {@link SurfaceDelegate} that the given module should use to interact
13
+ * with.
14
+ */
15
+ public interface SurfaceDelegateFactory {
16
+ /**
17
+ * Create a {@link SurfaceDelegate} instance which is used to interact with a surface of platform
18
+ * the app is running in.
19
+ *
20
+ * @param moduleName the module name that will be using the surface
21
+ * @return {@link SurfaceDelegate} instance
22
+ */
23
+ SurfaceDelegate createSurfaceDelegate(String moduleName);
24
+ }
@@ -11,12 +11,6 @@ rn_xplat_cxx_library(
11
11
  ],
12
12
  prefix = "react/common/mapbuffer",
13
13
  ),
14
- compiler_flags = [
15
- "-fexceptions",
16
- "-frtti",
17
- "-std=c++17",
18
- "-Wall",
19
- ],
20
14
  fbandroid_allow_jni_merging = True,
21
15
  labels = ["supermodule:xplat/default/public.react_native.infra"],
22
16
  platforms = ANDROID,
@@ -25,6 +25,12 @@ public class ReactFeatureFlags {
25
25
  */
26
26
  public static volatile boolean useTurboModules = false;
27
27
 
28
+ /**
29
+ * Should this application use the new (Fabric) Renderer? If yes, all rendering in this app will
30
+ * use Fabric instead of the legacy renderer.
31
+ */
32
+ public static volatile boolean enableFabricRenderer = false;
33
+
28
34
  /**
29
35
  * After TurboModules and Fabric are enabled, we need to ensure that the legacy NativeModule isn't
30
36
  * isn't used. So, turn this flag on to trigger warnings whenever the legacy NativeModule system
@@ -66,6 +72,8 @@ public class ReactFeatureFlags {
66
72
 
67
73
  public static boolean enableRuntimeScheduler = false;
68
74
 
75
+ public static boolean enableRuntimeSchedulerInTurboModule = false;
76
+
69
77
  /** Enables a more aggressive cleanup during destruction of ReactContext */
70
78
  public static boolean enableReactContextCleanupFix = false;
71
79
 
@@ -89,4 +97,12 @@ public class ReactFeatureFlags {
89
97
  public static boolean enableLockFreeEventDispatcher = false;
90
98
 
91
99
  public static boolean enableAggressiveEventEmitterCleanup = false;
100
+
101
+ public static boolean insertZReorderBarriersOnViewGroupChildren = true;
102
+
103
+ public static boolean enableScrollViewSnapToAlignmentProp = true;
104
+
105
+ public static boolean useDispatchUniqueForCoalescableEvents = false;
106
+
107
+ public static boolean useUpdatedTouchPreprocessing = false;
92
108
  }
@@ -57,6 +57,7 @@ rn_android_library(
57
57
  react_native_dep("third-party/android/androidx:annotation"),
58
58
  react_native_dep("third-party/java/jsr-305:jsr-305"),
59
59
  react_native_target("java/com/facebook/react/bridge:bridge"),
60
+ react_native_target("java/com/facebook/react/common:common"),
60
61
  react_native_target("java/com/facebook/react/modules/debug:interfaces"),
61
62
  ],
62
63
  )
@@ -22,6 +22,7 @@ import com.facebook.react.bridge.ReactMarker;
22
22
  import com.facebook.react.bridge.ReactMarkerConstants;
23
23
  import com.facebook.react.bridge.UiThreadUtil;
24
24
  import com.facebook.react.common.ReactConstants;
25
+ import com.facebook.react.common.SurfaceDelegateFactory;
25
26
  import com.facebook.react.common.futures.SimpleSettableFuture;
26
27
  import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
27
28
  import com.facebook.react.devsupport.interfaces.DevOptionHandler;
@@ -71,7 +72,8 @@ public final class BridgeDevSupportManager extends DevSupportManagerBase {
71
72
  @Nullable RedBoxHandler redBoxHandler,
72
73
  @Nullable DevBundleDownloadListener devBundleDownloadListener,
73
74
  int minNumShakes,
74
- @Nullable Map<String, RequestHandler> customPackagerCommandHandlers) {
75
+ @Nullable Map<String, RequestHandler> customPackagerCommandHandlers,
76
+ @Nullable SurfaceDelegateFactory surfaceDelegateFactory) {
75
77
  super(
76
78
  applicationContext,
77
79
  reactInstanceManagerHelper,
@@ -80,7 +82,8 @@ public final class BridgeDevSupportManager extends DevSupportManagerBase {
80
82
  redBoxHandler,
81
83
  devBundleDownloadListener,
82
84
  minNumShakes,
83
- customPackagerCommandHandlers);
85
+ customPackagerCommandHandlers,
86
+ surfaceDelegateFactory);
84
87
 
85
88
  if (getDevSettings().isStartSamplingProfilerOnInit()) {
86
89
  // Only start the profiler. If its already running, there is an error
@@ -0,0 +1,102 @@
1
+ /*
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ package com.facebook.react.devsupport;
9
+
10
+ import android.content.Context;
11
+ import androidx.annotation.Nullable;
12
+ import com.facebook.react.common.SurfaceDelegateFactory;
13
+ import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
14
+ import com.facebook.react.devsupport.interfaces.DevSupportManager;
15
+ import com.facebook.react.packagerconnection.RequestHandler;
16
+ import java.lang.reflect.Constructor;
17
+ import java.util.Map;
18
+
19
+ /**
20
+ * A simple factory that creates instances of {@link DevSupportManager} implementations. Uses
21
+ * reflection to create BridgeDevSupportManager if it exists. This allows ProGuard to strip that
22
+ * class and its dependencies in release builds. If the class isn't found, {@link
23
+ * DisabledDevSupportManager} is returned instead.
24
+ */
25
+ public class DefaultDevSupportManagerFactory implements DevSupportManagerFactory {
26
+
27
+ private static final String DEVSUPPORT_IMPL_PACKAGE = "com.facebook.react.devsupport";
28
+ private static final String DEVSUPPORT_IMPL_CLASS = "BridgeDevSupportManager";
29
+
30
+ public DevSupportManager create(
31
+ Context applicationContext,
32
+ ReactInstanceDevHelper reactInstanceDevHelper,
33
+ @Nullable String packagerPathForJSBundleName,
34
+ boolean enableOnCreate,
35
+ int minNumShakes) {
36
+
37
+ return create(
38
+ applicationContext,
39
+ reactInstanceDevHelper,
40
+ packagerPathForJSBundleName,
41
+ enableOnCreate,
42
+ null,
43
+ null,
44
+ minNumShakes,
45
+ null,
46
+ null);
47
+ }
48
+
49
+ @Override
50
+ public DevSupportManager create(
51
+ Context applicationContext,
52
+ ReactInstanceDevHelper reactInstanceManagerHelper,
53
+ @Nullable String packagerPathForJSBundleName,
54
+ boolean enableOnCreate,
55
+ @Nullable RedBoxHandler redBoxHandler,
56
+ @Nullable DevBundleDownloadListener devBundleDownloadListener,
57
+ int minNumShakes,
58
+ @Nullable Map<String, RequestHandler> customPackagerCommandHandlers,
59
+ @Nullable SurfaceDelegateFactory surfaceDelegateFactory) {
60
+ if (!enableOnCreate) {
61
+ return new DisabledDevSupportManager();
62
+ }
63
+ try {
64
+ // ProGuard is surprisingly smart in this case and will keep a class if it detects a call to
65
+ // Class.forName() with a static string. So instead we generate a quasi-dynamic string to
66
+ // confuse it.
67
+ String className =
68
+ new StringBuilder(DEVSUPPORT_IMPL_PACKAGE)
69
+ .append(".")
70
+ .append(DEVSUPPORT_IMPL_CLASS)
71
+ .toString();
72
+ Class<?> devSupportManagerClass = Class.forName(className);
73
+ Constructor constructor =
74
+ devSupportManagerClass.getConstructor(
75
+ Context.class,
76
+ ReactInstanceDevHelper.class,
77
+ String.class,
78
+ boolean.class,
79
+ RedBoxHandler.class,
80
+ DevBundleDownloadListener.class,
81
+ int.class,
82
+ Map.class,
83
+ SurfaceDelegateFactory.class);
84
+ return (DevSupportManager)
85
+ constructor.newInstance(
86
+ applicationContext,
87
+ reactInstanceManagerHelper,
88
+ packagerPathForJSBundleName,
89
+ true,
90
+ redBoxHandler,
91
+ devBundleDownloadListener,
92
+ minNumShakes,
93
+ customPackagerCommandHandlers,
94
+ surfaceDelegateFactory);
95
+ } catch (Exception e) {
96
+ throw new RuntimeException(
97
+ "Requested enabled DevSupportManager, but BridgeDevSupportManager class was not found"
98
+ + " or could not be created",
99
+ e);
100
+ }
101
+ }
102
+ }
@@ -41,6 +41,8 @@ import com.facebook.react.bridge.UiThreadUtil;
41
41
  import com.facebook.react.common.DebugServerException;
42
42
  import com.facebook.react.common.ReactConstants;
43
43
  import com.facebook.react.common.ShakeDetector;
44
+ import com.facebook.react.common.SurfaceDelegate;
45
+ import com.facebook.react.common.SurfaceDelegateFactory;
44
46
  import com.facebook.react.devsupport.DevServerHelper.PackagerCommandListener;
45
47
  import com.facebook.react.devsupport.interfaces.BundleLoadCallback;
46
48
  import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
@@ -118,6 +120,7 @@ public abstract class DevSupportManagerBase implements DevSupportManager {
118
120
  private @Nullable Map<String, RequestHandler> mCustomPackagerCommandHandlers;
119
121
 
120
122
  private @Nullable Activity currentActivity;
123
+ private @Nullable final SurfaceDelegateFactory mSurfaceDelegateFactory;
121
124
 
122
125
  public DevSupportManagerBase(
123
126
  Context applicationContext,
@@ -127,7 +130,8 @@ public abstract class DevSupportManagerBase implements DevSupportManager {
127
130
  @Nullable RedBoxHandler redBoxHandler,
128
131
  @Nullable DevBundleDownloadListener devBundleDownloadListener,
129
132
  int minNumShakes,
130
- @Nullable Map<String, RequestHandler> customPackagerCommandHandlers) {
133
+ @Nullable Map<String, RequestHandler> customPackagerCommandHandlers,
134
+ @Nullable SurfaceDelegateFactory surfaceDelegateFactory) {
131
135
  mReactInstanceDevHelper = reactInstanceDevHelper;
132
136
  mApplicationContext = applicationContext;
133
137
  mJSAppBundleName = packagerPathForJSBundleName;
@@ -202,7 +206,8 @@ public abstract class DevSupportManagerBase implements DevSupportManager {
202
206
 
203
207
  mRedBoxHandler = redBoxHandler;
204
208
  mDevLoadingViewController = new DevLoadingViewController(reactInstanceDevHelper);
205
- }
209
+ mSurfaceDelegateFactory = surfaceDelegateFactory;
210
+ };
206
211
 
207
212
  protected abstract String getUniqueTag();
208
213
 
@@ -345,16 +350,21 @@ public abstract class DevSupportManagerBase implements DevSupportManager {
345
350
  @Override
346
351
  public void run() {
347
352
  Activity context = mReactInstanceDevHelper.getCurrentActivity();
348
- if (mRedBoxDialog == null || context != currentActivity) {
349
- if (context == null || context.isFinishing()) {
350
- FLog.e(
351
- ReactConstants.TAG,
352
- "Unable to launch redbox because react activity "
353
- + "is not available, here is the error that redbox would've displayed: "
354
- + message);
355
- return;
356
- }
353
+ if (context != null && !context.isFinishing() && currentActivity != context) {
357
354
  currentActivity = context;
355
+ // Create a new RedBox when currentActivity get updated
356
+ mRedBoxDialog =
357
+ new RedBoxDialog(currentActivity, DevSupportManagerBase.this, mRedBoxHandler);
358
+ }
359
+ if (currentActivity == null || currentActivity.isFinishing()) {
360
+ FLog.e(
361
+ ReactConstants.TAG,
362
+ "Unable to launch redbox because react activity "
363
+ + "is not available, here is the error that redbox would've displayed: "
364
+ + message);
365
+ return;
366
+ }
367
+ if (mRedBoxDialog == null) {
358
368
  mRedBoxDialog =
359
369
  new RedBoxDialog(currentActivity, DevSupportManagerBase.this, mRedBoxHandler);
360
370
  }
@@ -1199,4 +1209,18 @@ public abstract class DevSupportManagerBase implements DevSupportManager {
1199
1209
  DevSupportManager.PackagerLocationCustomizer packagerLocationCustomizer) {
1200
1210
  mPackagerLocationCustomizer = packagerLocationCustomizer;
1201
1211
  }
1212
+
1213
+ @Override
1214
+ public @Nullable Activity getCurrentActivity() {
1215
+ return mReactInstanceDevHelper.getCurrentActivity();
1216
+ }
1217
+
1218
+ @Override
1219
+ public @Nullable SurfaceDelegate createSurfaceDelegate(String moduleName) {
1220
+ if (mSurfaceDelegateFactory == null) {
1221
+ return null;
1222
+ }
1223
+
1224
+ return mSurfaceDelegateFactory.createSurfaceDelegate(moduleName);
1225
+ }
1202
1226
  }
@@ -9,42 +9,14 @@ package com.facebook.react.devsupport;
9
9
 
10
10
  import android.content.Context;
11
11
  import androidx.annotation.Nullable;
12
+ import com.facebook.react.common.SurfaceDelegateFactory;
12
13
  import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
13
14
  import com.facebook.react.devsupport.interfaces.DevSupportManager;
14
15
  import com.facebook.react.packagerconnection.RequestHandler;
15
- import java.lang.reflect.Constructor;
16
16
  import java.util.Map;
17
17
 
18
- /**
19
- * A simple factory that creates instances of {@link DevSupportManager} implementations. Uses
20
- * reflection to create BridgeDevSupportManager if it exists. This allows ProGuard to strip that
21
- * class and its dependencies in release builds. If the class isn't found, {@link
22
- * DisabledDevSupportManager} is returned instead.
23
- */
24
- public class DevSupportManagerFactory {
25
-
26
- private static final String DEVSUPPORT_IMPL_PACKAGE = "com.facebook.react.devsupport";
27
- private static final String DEVSUPPORT_IMPL_CLASS = "BridgeDevSupportManager";
28
-
29
- public static DevSupportManager create(
30
- Context applicationContext,
31
- ReactInstanceDevHelper reactInstanceDevHelper,
32
- @Nullable String packagerPathForJSBundleName,
33
- boolean enableOnCreate,
34
- int minNumShakes) {
35
-
36
- return create(
37
- applicationContext,
38
- reactInstanceDevHelper,
39
- packagerPathForJSBundleName,
40
- enableOnCreate,
41
- null,
42
- null,
43
- minNumShakes,
44
- null);
45
- }
46
-
47
- public static DevSupportManager create(
18
+ public interface DevSupportManagerFactory {
19
+ DevSupportManager create(
48
20
  Context applicationContext,
49
21
  ReactInstanceDevHelper reactInstanceManagerHelper,
50
22
  @Nullable String packagerPathForJSBundleName,
@@ -52,45 +24,6 @@ public class DevSupportManagerFactory {
52
24
  @Nullable RedBoxHandler redBoxHandler,
53
25
  @Nullable DevBundleDownloadListener devBundleDownloadListener,
54
26
  int minNumShakes,
55
- @Nullable Map<String, RequestHandler> customPackagerCommandHandlers) {
56
- if (!enableOnCreate) {
57
- return new DisabledDevSupportManager();
58
- }
59
- try {
60
- // ProGuard is surprisingly smart in this case and will keep a class if it detects a call to
61
- // Class.forName() with a static string. So instead we generate a quasi-dynamic string to
62
- // confuse it.
63
- String className =
64
- new StringBuilder(DEVSUPPORT_IMPL_PACKAGE)
65
- .append(".")
66
- .append(DEVSUPPORT_IMPL_CLASS)
67
- .toString();
68
- Class<?> devSupportManagerClass = Class.forName(className);
69
- Constructor constructor =
70
- devSupportManagerClass.getConstructor(
71
- Context.class,
72
- ReactInstanceDevHelper.class,
73
- String.class,
74
- boolean.class,
75
- RedBoxHandler.class,
76
- DevBundleDownloadListener.class,
77
- int.class,
78
- Map.class);
79
- return (DevSupportManager)
80
- constructor.newInstance(
81
- applicationContext,
82
- reactInstanceManagerHelper,
83
- packagerPathForJSBundleName,
84
- true,
85
- redBoxHandler,
86
- devBundleDownloadListener,
87
- minNumShakes,
88
- customPackagerCommandHandlers);
89
- } catch (Exception e) {
90
- throw new RuntimeException(
91
- "Requested enabled DevSupportManager, but BridgeDevSupportManager class was not found"
92
- + " or could not be created",
93
- e);
94
- }
95
- }
27
+ @Nullable Map<String, RequestHandler> customPackagerCommandHandlers,
28
+ @Nullable SurfaceDelegateFactory surfaceDelegateFactory);
96
29
  }
@@ -7,11 +7,13 @@
7
7
 
8
8
  package com.facebook.react.devsupport;
9
9
 
10
+ import android.app.Activity;
10
11
  import android.view.View;
11
12
  import androidx.annotation.Nullable;
12
13
  import com.facebook.react.bridge.DefaultNativeModuleCallExceptionHandler;
13
14
  import com.facebook.react.bridge.ReactContext;
14
15
  import com.facebook.react.bridge.ReadableArray;
16
+ import com.facebook.react.common.SurfaceDelegate;
15
17
  import com.facebook.react.devsupport.interfaces.BundleLoadCallback;
16
18
  import com.facebook.react.devsupport.interfaces.DevOptionHandler;
17
19
  import com.facebook.react.devsupport.interfaces.DevSplitBundleCallback;
@@ -175,4 +177,14 @@ public class DisabledDevSupportManager implements DevSupportManager {
175
177
  public void handleException(Exception e) {
176
178
  mDefaultNativeModuleCallExceptionHandler.handleException(e);
177
179
  }
180
+
181
+ @Override
182
+ public @Nullable Activity getCurrentActivity() {
183
+ return null;
184
+ }
185
+
186
+ @Override
187
+ public @Nullable SurfaceDelegate createSurfaceDelegate(String moduleName) {
188
+ return null;
189
+ }
178
190
  }
@@ -0,0 +1,92 @@
1
+ /*
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ package com.facebook.react.devsupport;
9
+
10
+ import android.app.Activity;
11
+ import android.view.View;
12
+ import android.view.ViewGroup;
13
+ import androidx.annotation.Nullable;
14
+ import com.facebook.infer.annotation.Assertions;
15
+ import com.facebook.react.common.SurfaceDelegate;
16
+ import com.facebook.react.devsupport.interfaces.DevSupportManager;
17
+ import com.facebook.react.util.RNLog;
18
+
19
+ /**
20
+ * The implementation of SurfaceDelegate with {@link Activity}. This is the default SurfaceDelegate
21
+ * for Mobile.
22
+ */
23
+ public class LogBoxDialogSurfaceDelegate implements SurfaceDelegate {
24
+
25
+ private @Nullable View mReactRootView;
26
+ private @Nullable LogBoxDialog mDialog;
27
+ private final DevSupportManager mDevSupportManager;
28
+
29
+ LogBoxDialogSurfaceDelegate(DevSupportManager devSupportManager) {
30
+ mDevSupportManager = devSupportManager;
31
+ }
32
+
33
+ @Override
34
+ public void createContentView(String appKey) {
35
+ Assertions.assertCondition(
36
+ appKey.equals("LogBox"), "This surface manager can only create LogBox React application");
37
+ mReactRootView = mDevSupportManager.createRootView("LogBox");
38
+ if (mReactRootView == null) {
39
+ RNLog.e("Unable to launch logbox because react was unable to create the root view");
40
+ }
41
+ }
42
+
43
+ @Override
44
+ public boolean isContentViewReady() {
45
+ return mReactRootView != null;
46
+ }
47
+
48
+ @Override
49
+ public void destroyContentView() {
50
+ if (mReactRootView != null) {
51
+ mDevSupportManager.destroyRootView(mReactRootView);
52
+ mReactRootView = null;
53
+ }
54
+ }
55
+
56
+ @Override
57
+ public void show() {
58
+ if (isSurfaceVisible() || !isContentViewReady()) {
59
+ return;
60
+ }
61
+
62
+ final @Nullable Activity context = mDevSupportManager.getCurrentActivity();
63
+ if (context == null || context.isFinishing()) {
64
+ RNLog.e(
65
+ "Unable to launch logbox because react activity "
66
+ + "is not available, here is the error that logbox would've displayed: ");
67
+ return;
68
+ }
69
+
70
+ mDialog = new LogBoxDialog(context, mReactRootView);
71
+ mDialog.setCancelable(false);
72
+ mDialog.show();
73
+ }
74
+
75
+ @Override
76
+ public void hide() {
77
+ if (!isSurfaceVisible()) {
78
+ return;
79
+ }
80
+
81
+ if (mReactRootView != null && mReactRootView.getParent() != null) {
82
+ ((ViewGroup) mReactRootView.getParent()).removeView(mReactRootView);
83
+ }
84
+
85
+ mDialog.dismiss();
86
+ mDialog = null;
87
+ }
88
+
89
+ private boolean isSurfaceVisible() {
90
+ return mDialog != null;
91
+ }
92
+ }
@@ -7,16 +7,13 @@
7
7
 
8
8
  package com.facebook.react.devsupport;
9
9
 
10
- import android.app.Activity;
11
- import android.view.View;
12
- import android.view.ViewGroup;
13
10
  import androidx.annotation.Nullable;
14
11
  import com.facebook.fbreact.specs.NativeLogBoxSpec;
15
12
  import com.facebook.react.bridge.ReactApplicationContext;
16
13
  import com.facebook.react.bridge.UiThreadUtil;
14
+ import com.facebook.react.common.SurfaceDelegate;
17
15
  import com.facebook.react.devsupport.interfaces.DevSupportManager;
18
16
  import com.facebook.react.module.annotations.ReactModule;
19
- import com.facebook.react.util.RNLog;
20
17
 
21
18
  @ReactModule(name = LogBoxModule.NAME)
22
19
  public class LogBoxModule extends NativeLogBoxSpec {
@@ -24,24 +21,30 @@ public class LogBoxModule extends NativeLogBoxSpec {
24
21
  public static final String NAME = "LogBox";
25
22
 
26
23
  private final DevSupportManager mDevSupportManager;
27
- private @Nullable View mReactRootView;
28
- private @Nullable LogBoxDialog mLogBoxDialog;
24
+ private final SurfaceDelegate mSurfaceDelegate;
29
25
 
26
+ /**
27
+ * LogBoxModule can be rendered in different surface. By default, it will use LogBoxDialog to wrap
28
+ * the content of logs. In other platform (for example VR), a surfaceDelegate can be provided so
29
+ * that the content can be wrapped in custom surface.
30
+ */
30
31
  public LogBoxModule(ReactApplicationContext reactContext, DevSupportManager devSupportManager) {
31
32
  super(reactContext);
32
33
 
33
34
  mDevSupportManager = devSupportManager;
34
35
 
36
+ @Nullable SurfaceDelegate surfaceDelegate = devSupportManager.createSurfaceDelegate(NAME);
37
+ if (surfaceDelegate != null) {
38
+ mSurfaceDelegate = surfaceDelegate;
39
+ } else {
40
+ mSurfaceDelegate = new LogBoxDialogSurfaceDelegate(devSupportManager);
41
+ }
42
+
35
43
  UiThreadUtil.runOnUiThread(
36
44
  new Runnable() {
37
45
  @Override
38
46
  public void run() {
39
- if (mReactRootView == null && mDevSupportManager != null) {
40
- mReactRootView = mDevSupportManager.createRootView("LogBox");
41
- if (mReactRootView == null) {
42
- RNLog.e("Unable to launch logbox because react was unable to create the root view");
43
- }
44
- }
47
+ mSurfaceDelegate.createContentView("LogBox");
45
48
  }
46
49
  });
47
50
  }
@@ -53,26 +56,17 @@ public class LogBoxModule extends NativeLogBoxSpec {
53
56
 
54
57
  @Override
55
58
  public void show() {
56
- if (mReactRootView != null) {
57
- UiThreadUtil.runOnUiThread(
58
- new Runnable() {
59
- @Override
60
- public void run() {
61
- if (mLogBoxDialog == null && mReactRootView != null) {
62
- Activity context = getCurrentActivity();
63
- if (context == null || context.isFinishing()) {
64
- RNLog.e(
65
- "Unable to launch logbox because react activity "
66
- + "is not available, here is the error that logbox would've displayed: ");
67
- return;
68
- }
69
- mLogBoxDialog = new LogBoxDialog(context, mReactRootView);
70
- mLogBoxDialog.setCancelable(false);
71
- mLogBoxDialog.show();
72
- }
73
- }
74
- });
59
+ if (!mSurfaceDelegate.isContentViewReady()) {
60
+ return;
75
61
  }
62
+
63
+ UiThreadUtil.runOnUiThread(
64
+ new Runnable() {
65
+ @Override
66
+ public void run() {
67
+ mSurfaceDelegate.show();
68
+ }
69
+ });
76
70
  }
77
71
 
78
72
  @Override
@@ -81,13 +75,7 @@ public class LogBoxModule extends NativeLogBoxSpec {
81
75
  new Runnable() {
82
76
  @Override
83
77
  public void run() {
84
- if (mLogBoxDialog != null) {
85
- if (mReactRootView != null && mReactRootView.getParent() != null) {
86
- ((ViewGroup) mReactRootView.getParent()).removeView(mReactRootView);
87
- }
88
- mLogBoxDialog.dismiss();
89
- mLogBoxDialog = null;
90
- }
78
+ mSurfaceDelegate.hide();
91
79
  }
92
80
  });
93
81
  }
@@ -98,10 +86,7 @@ public class LogBoxModule extends NativeLogBoxSpec {
98
86
  new Runnable() {
99
87
  @Override
100
88
  public void run() {
101
- if (mReactRootView != null) {
102
- mDevSupportManager.destroyRootView(mReactRootView);
103
- mReactRootView = null;
104
- }
89
+ mSurfaceDelegate.destroyContentView();
105
90
  }
106
91
  });
107
92
  }
@@ -7,11 +7,13 @@
7
7
 
8
8
  package com.facebook.react.devsupport.interfaces;
9
9
 
10
+ import android.app.Activity;
10
11
  import android.view.View;
11
12
  import androidx.annotation.Nullable;
12
13
  import com.facebook.react.bridge.NativeModuleCallExceptionHandler;
13
14
  import com.facebook.react.bridge.ReactContext;
14
15
  import com.facebook.react.bridge.ReadableArray;
16
+ import com.facebook.react.common.SurfaceDelegate;
15
17
  import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
16
18
  import java.io.File;
17
19
 
@@ -107,4 +109,16 @@ public interface DevSupportManager extends NativeModuleCallExceptionHandler {
107
109
  }
108
110
 
109
111
  void setPackagerLocationCustomizer(PackagerLocationCustomizer packagerLocationCustomizer);
112
+
113
+ @Nullable
114
+ Activity getCurrentActivity();
115
+
116
+ /**
117
+ * Create the surface delegate that the provided module should use to interact with
118
+ *
119
+ * @param moduleName the module name that helps decide which surface it should interact with
120
+ * @return a {@link SurfaceDelegate} instance
121
+ */
122
+ @Nullable
123
+ SurfaceDelegate createSurfaceDelegate(String moduleName);
110
124
  }