mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Adding interface to wrap surface interactions for LogBox
Summary: This diff introduces a new interface named `SurfaceDelegate`. The interface abstracts the API for interacting with a surface, which is required for platforms other than mobile to implement how it wants to show and hide a surface. For existing Mobile use cases, the `LogBoxDialogSurfaceDelegate` is provided as a fallback solution so everything still works. Changelog: [Android][Added] - Add SurfaceDelegate abstraction to support interaction in multiple platforms and provide default implementation in LogBoxModule Reviewed By: mdvacca Differential Revision: D31132285 fbshipit-source-id: 13315a8bc5b7bcaee9b5e53ef5c6f6cc8cb01f31
This commit is contained in:
committed by
Facebook GitHub Bot
parent
f2eecae63d
commit
652cb541a5
@@ -15,6 +15,8 @@ import com.facebook.react.bridge.JavaScriptExecutorFactory;
|
||||
import com.facebook.react.bridge.ReactMarker;
|
||||
import com.facebook.react.bridge.ReactMarkerConstants;
|
||||
import com.facebook.react.common.LifecycleState;
|
||||
import com.facebook.react.common.SurfaceDelegate;
|
||||
import com.facebook.react.common.SurfaceDelegateFactory;
|
||||
import com.facebook.react.devsupport.DevSupportManagerFactory;
|
||||
import com.facebook.react.devsupport.RedBoxHandler;
|
||||
import com.facebook.react.uimanager.UIImplementationProvider;
|
||||
@@ -71,6 +73,7 @@ public abstract class ReactNativeHost {
|
||||
.setUseDeveloperSupport(getUseDeveloperSupport())
|
||||
.setDevSupportManagerFactory(getDevSupportManagerFactory())
|
||||
.setRequireActivity(getShouldRequireActivity())
|
||||
.setSurfaceDelegateFactory(getSurfaceDelegateFactory())
|
||||
.setRedBoxHandler(getRedBoxHandler())
|
||||
.setJavaScriptExecutorFactory(getJavaScriptExecutorFactory())
|
||||
.setUIImplementationProvider(getUIImplementationProvider())
|
||||
@@ -132,6 +135,21 @@ public abstract class ReactNativeHost {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the {@link SurfaceDelegateFactory} used by NativeModules to get access to a {@link
|
||||
* SurfaceDelegate} to interact with a surface. By default in the mobile platform the {@link
|
||||
* SurfaceDelegate} it returns is null, and the NativeModule needs to implement its own {@link
|
||||
* SurfaceDelegate} to decide how it would interact with its own container surface.
|
||||
*/
|
||||
public SurfaceDelegateFactory getSurfaceDelegateFactory() {
|
||||
return new SurfaceDelegateFactory() {
|
||||
@Override
|
||||
public @Nullable SurfaceDelegate createSurfaceDelegate(String moduleName) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the main module. Determines the URL used to fetch the JS bundle from Metro.
|
||||
* It is only used when dev support is enabled. This is the first file to be executed once the
|
||||
|
||||
Reference in New Issue
Block a user