Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions packages/react-native/ReactAndroid/api/ReactAndroid.api
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,10 @@ public abstract class com/facebook/react/bridge/BaseJavaModule : com/facebook/re
public fun invalidate ()V
}

public final class com/facebook/react/bridge/BridgeReactContext : com/facebook/react/bridge/ReactApplicationContext {
public fun <init> (Landroid/content/Context;)V
}

public abstract interface class com/facebook/react/bridge/Callback {
public abstract fun invoke ([Ljava/lang/Object;)V
}
Expand Down Expand Up @@ -1052,7 +1056,7 @@ public class com/facebook/react/bridge/ProxyJavaScriptExecutor$Factory : com/fac
public fun stopSamplingProfiler (Ljava/lang/String;)V
}

public class com/facebook/react/bridge/ReactApplicationContext : com/facebook/react/bridge/ReactContext {
public abstract class com/facebook/react/bridge/ReactApplicationContext : com/facebook/react/bridge/ReactContext {
public fun <init> (Landroid/content/Context;)V
}

Expand All @@ -1064,7 +1068,7 @@ public class com/facebook/react/bridge/ReactBridge {
public static fun staticInit ()V
}

public class com/facebook/react/bridge/ReactContext : android/content/ContextWrapper {
public abstract class com/facebook/react/bridge/ReactContext : android/content/ContextWrapper {
protected field mInteropModuleRegistry Lcom/facebook/react/bridge/interop/InteropModuleRegistry;
public fun <init> (Landroid/content/Context;)V
public fun addActivityEventListener (Lcom/facebook/react/bridge/ActivityEventListener;)V
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import com.facebook.infer.annotation.ThreadConfined;
import com.facebook.infer.annotation.ThreadSafe;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.BridgeReactContext;
import com.facebook.react.bridge.CatalystInstance;
import com.facebook.react.bridge.CatalystInstanceImpl;
import com.facebook.react.bridge.JSBundleLoader;
Expand Down Expand Up @@ -1346,7 +1347,7 @@ private ReactApplicationContext createReactContext(
JavaScriptExecutor jsExecutor, JSBundleLoader jsBundleLoader) {
FLog.d(ReactConstants.TAG, "ReactInstanceManager.createReactContext()");
ReactMarker.logMarker(CREATE_REACT_CONTEXT_START, jsExecutor.getName());
final ReactApplicationContext reactContext = new ReactApplicationContext(mApplicationContext);
final BridgeReactContext reactContext = new BridgeReactContext(mApplicationContext);

JSExceptionHandler exceptionHandler =
mJSExceptionHandler != null ? mJSExceptionHandler : mDevSupportManager;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

package com.facebook.react.bridge

import android.content.Context
import com.facebook.react.common.annotations.DeprecatedInNewArchitecture

/**
* This is the bridge-specific concrete subclass of ReactContext. ReactContext has many methods that
* delegate to the react instance. This subclass will implement those methods, by delegating to the
* CatalystInstance. If you need to create a ReactContext within an "bridge context", please create
* BridgeReactContext.
*/
@DeprecatedInNewArchitecture
class BridgeReactContext(base: Context) : ReactApplicationContext(base) {}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* A context wrapper that always wraps Android Application {@link Context} and {@link
* CatalystInstance} by extending {@link ReactContext}
*/
public class ReactApplicationContext extends ReactContext {
public abstract class ReactApplicationContext extends ReactContext {
// We want to wrap ApplicationContext, since there is no easy way to verify that application
// context is passed as a param, we use {@link Context#getApplicationContext} to ensure that
// the context we're wrapping is in fact an application context.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
* Abstract ContextWrapper for Android application or activity {@link Context} and {@link
* CatalystInstance}
*/
public class ReactContext extends ContextWrapper {
public abstract class ReactContext extends ContextWrapper {

@DoNotStrip
public interface RCTDeviceEventEmitter extends JavaScriptModule {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

package com.facebook.react

import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.NativeModule
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.uimanager.ViewManager
Expand All @@ -33,7 +34,7 @@ class CompositeReactPackageTest {
packageNo1 = mock(ReactPackage::class.java)
packageNo2 = mock(ReactPackage::class.java)
packageNo3 = mock(ReactPackage::class.java)
reactContext = ReactApplicationContext(RuntimeEnvironment.getApplication())
reactContext = BridgeReactContext(RuntimeEnvironment.getApplication())
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,10 @@ import android.view.MotionEvent
import android.view.WindowInsets
import android.view.WindowManager
import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.CatalystInstance
import com.facebook.react.bridge.JavaOnlyArray
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContext
import com.facebook.react.bridge.ReactTestHelper
import com.facebook.react.bridge.WritableArray
import com.facebook.react.bridge.WritableMap
Expand Down Expand Up @@ -49,7 +48,7 @@ import org.robolectric.RuntimeEnvironment
@RunWith(RobolectricTestRunner::class)
class RootViewTest {

private lateinit var reactContext: ReactContext
private lateinit var reactContext: BridgeReactContext
private lateinit var catalystInstanceMock: CatalystInstance

private lateinit var arguments: MockedStatic<Arguments>
Expand All @@ -66,7 +65,7 @@ class RootViewTest {
systemClock.`when`<Long> { SystemClock.uptimeMillis() }.thenReturn(ts)

catalystInstanceMock = ReactTestHelper.createMockCatalystInstance()
reactContext = spy(ReactApplicationContext(RuntimeEnvironment.getApplication()))
reactContext = spy(BridgeReactContext(RuntimeEnvironment.getApplication()))
reactContext.initializeWithInstance(catalystInstanceMock)

DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(reactContext)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ object ReactTestHelper {
*/
@JvmStatic
fun createCatalystContextForTest(): ReactApplicationContext =
ReactApplicationContext(RuntimeEnvironment.getApplication()).apply {
BridgeReactContext(RuntimeEnvironment.getApplication()).apply {
initializeWithInstance(createMockCatalystInstance())
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

package com.facebook.react.fabric

import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.uimanager.ViewManagerRegistry
import com.facebook.react.uimanager.events.BatchEventDispatchedListener
Expand All @@ -31,7 +32,7 @@ class FabricUIManagerTest {

@Before
fun setup() {
reactContext = ReactApplicationContext(RuntimeEnvironment.getApplication())
reactContext = BridgeReactContext(RuntimeEnvironment.getApplication())
viewManagerRegistry = ViewManagerRegistry(emptyList())
batchEventDispatchedListener = FakeBatchEventDispatchedListener()
underTest = FabricUIManager(reactContext, viewManagerRegistry, batchEventDispatchedListener)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

package com.facebook.react.internal.interop

import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.JavaOnlyArray
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContext
import com.facebook.testutils.fakes.FakeEventDispatcher
import org.junit.Assert.assertEquals
Expand All @@ -29,7 +29,7 @@ class InteropEventEmitterTest {

@Before
fun setup() {
reactContext = ReactApplicationContext(RuntimeEnvironment.getApplication())
reactContext = BridgeReactContext(RuntimeEnvironment.getApplication())
eventDispatcher = FakeEventDispatcher()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ package com.facebook.react.modules.clipboard
import android.annotation.SuppressLint
import android.content.ClipboardManager
import android.content.Context
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.BridgeReactContext
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Before
Expand All @@ -28,7 +28,7 @@ class ClipboardModuleTest {

@Before
fun setUp() {
clipboardModule = ClipboardModule(ReactApplicationContext(RuntimeEnvironment.getApplication()))
clipboardModule = ClipboardModule(BridgeReactContext(RuntimeEnvironment.getApplication()))
clipboardManager =
RuntimeEnvironment.getApplication().getSystemService(Context.CLIPBOARD_SERVICE)
as ClipboardManager
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

package com.facebook.react.modules.deviceinfo

import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContext
import com.facebook.react.bridge.ReactTestHelper
import com.facebook.react.bridge.WritableMap
Expand All @@ -32,7 +32,7 @@ class DeviceInfoModuleTest : TestCase() {
private lateinit var deviceInfoModule: DeviceInfoModule
private lateinit var fakePortraitDisplayMetrics: WritableMap
private lateinit var fakeLandscapeDisplayMetrics: WritableMap
private lateinit var reactContext: ReactApplicationContext
private lateinit var reactContext: BridgeReactContext
private lateinit var displayMetricsHolder: MockedStatic<DisplayMetricsHolder>

@Before
Expand All @@ -45,7 +45,7 @@ class DeviceInfoModuleTest : TestCase() {
fakeLandscapeDisplayMetrics.putInt("height", 100)

displayMetricsHolder = mockStatic(DisplayMetricsHolder::class.java)
reactContext = spy(ReactApplicationContext(RuntimeEnvironment.getApplication()))
reactContext = spy(BridgeReactContext(RuntimeEnvironment.getApplication()))
val catalystInstanceMock = ReactTestHelper.createMockCatalystInstance()
reactContext.initializeWithInstance(catalystInstanceMock)
deviceInfoModule = DeviceInfoModule(reactContext)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import android.content.Context
import android.os.Looper
import android.view.Choreographer.FrameCallback
import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.CatalystInstance
import com.facebook.react.bridge.JavaOnlyArray
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.WritableArray
import com.facebook.react.common.SystemClock
import com.facebook.react.devsupport.interfaces.DevSupportManager
Expand Down Expand Up @@ -53,7 +53,7 @@ class TimingModuleTest {
const val FRAME_TIME_NS = 17 * 1000 * 1000
}

private lateinit var reactContext: ReactApplicationContext
private lateinit var reactContext: BridgeReactContext
private lateinit var headlessContext: HeadlessJsTaskContext
private lateinit var timingModule: TimingModule
private lateinit var reactChoreographerMock: ReactChoreographer
Expand Down Expand Up @@ -94,7 +94,7 @@ class TimingModuleTest {
.thenAnswer { reactChoreographerMock }

val reactInstance = mock(CatalystInstance::class.java)
reactContext = spy(ReactApplicationContext(mock(Context::class.java)))
reactContext = spy(BridgeReactContext(mock(Context::class.java)))
doReturn(reactInstance).`when`(reactContext).catalystInstance
doReturn(true).`when`(reactContext).hasActiveReactInstance()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
package com.facebook.react.uimanager

import android.view.View
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.ReadableArray
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.common.MapBuilder
Expand Down Expand Up @@ -84,7 +84,7 @@ class ReactPropConstantsTest {
@Test
fun testNativePropsIncludeCorrectTypes() {
val viewManagers = listOf<ViewManager<*, *>>(ViewManagerUnderTest())
val reactContext = ReactApplicationContext(RuntimeEnvironment.getApplication())
val reactContext = BridgeReactContext(RuntimeEnvironment.getApplication())
val uiManagerModule = UIManagerModule(reactContext, viewManagers, 0)
val constants: Map<*, *> =
valueAtPath(uiManagerModule.constants as Map<*, *>, "SomeView", "NativeProps")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

package com.facebook.react.uimanager

import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReadableArray
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.uimanager.annotations.ReactProp
Expand Down Expand Up @@ -65,7 +65,7 @@ class ReactPropForShadowNodeSetterTest {

init {
setViewClassName("ShadowViewUnderTest")
val context = ReactApplicationContext(RuntimeEnvironment.getApplication())
val context = BridgeReactContext(RuntimeEnvironment.getApplication())
setThemedContext(ThemedReactContext(context, context, null, -1))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ package com.facebook.react.uimanager

import android.graphics.drawable.ColorDrawable
import android.view.View
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.CatalystInstance
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.touch.JSResponderHandler
Expand Down Expand Up @@ -45,14 +45,14 @@ class SimpleViewPropertyTest {
}
}

private lateinit var context: ReactApplicationContext
private lateinit var context: BridgeReactContext
private lateinit var catalystInstanceMock: CatalystInstance
private lateinit var themedContext: ThemedReactContext
private lateinit var manager: ConcreteViewManager

@Before
fun setup() {
context = ReactApplicationContext(RuntimeEnvironment.getApplication())
context = BridgeReactContext(RuntimeEnvironment.getApplication())
catalystInstanceMock = createMockCatalystInstance()
context.initializeWithInstance(catalystInstanceMock)
themedContext = ThemedReactContext(context, context, null, surfaceId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
package com.facebook.react.uimanager

import android.view.View
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.common.MapBuilder
import org.assertj.core.api.Assertions
Expand Down Expand Up @@ -49,7 +50,7 @@ class UIManagerModuleConstantsTest {

@Before
fun setUp() {
reactContext = ReactApplicationContext(RuntimeEnvironment.getApplication())
reactContext = BridgeReactContext(RuntimeEnvironment.getApplication())
}

@Suppress("UNCHECKED_CAST")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import android.util.DisplayMetrics
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.drawee.drawable.ScalingUtils
import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.CatalystInstance
import com.facebook.react.bridge.JavaOnlyArray
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance
import com.facebook.react.bridge.WritableArray
import com.facebook.react.bridge.WritableMap
Expand All @@ -41,7 +41,7 @@ import org.robolectric.RuntimeEnvironment
@RunWith(RobolectricTestRunner::class)
class ReactImagePropertyTest {

private var context: ReactApplicationContext? = null
private var context: BridgeReactContext? = null
private var catalystInstanceMock: CatalystInstance? = null
private var themeContext: ThemedReactContext? = null
private lateinit var arguments: MockedStatic<Arguments>
Expand All @@ -57,7 +57,7 @@ class ReactImagePropertyTest {
rnLog.`when`<Boolean> { RNLog.w(any(), anyString()) }.thenAnswer {}

SoLoader.setInTestMode()
context = ReactApplicationContext(RuntimeEnvironment.getApplication())
context = BridgeReactContext(RuntimeEnvironment.getApplication())
catalystInstanceMock = createMockCatalystInstance()
context!!.initializeWithInstance(catalystInstanceMock)
themeContext = ThemedReactContext(context, context, null, -1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ import android.util.DisplayMetrics
import android.view.Gravity
import android.view.inputmethod.EditorInfo
import androidx.core.content.res.ResourcesCompat.ID_NULL
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.CatalystInstance
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance
import com.facebook.react.uimanager.DisplayMetricsHolder
import com.facebook.react.uimanager.ReactStylesDiffMap
Expand All @@ -36,7 +36,7 @@ import org.robolectric.RuntimeEnvironment
@RunWith(RobolectricTestRunner::class)
class ReactTextInputPropertyTest {

private lateinit var context: ReactApplicationContext
private lateinit var context: BridgeReactContext
private lateinit var catalystInstanceMock: CatalystInstance
private lateinit var themedContext: ThemedReactContext
private lateinit var manager: ReactTextInputManager
Expand All @@ -54,7 +54,7 @@ class ReactTextInputPropertyTest {

@Before
fun setup() {
context = ReactApplicationContext(RuntimeEnvironment.getApplication())
context = BridgeReactContext(RuntimeEnvironment.getApplication())
catalystInstanceMock = createMockCatalystInstance()
context.initializeWithInstance(catalystInstanceMock)
themedContext = ThemedReactContext(context, context.baseContext, null, ID_NULL)
Expand Down