Skip to content

Commit 4557831

Browse files
javachefacebook-github-bot
authored andcommitted
Make FabricUIManager's Binding an interface (#36613)
Summary: Pull Request resolved: #36613 Changelog: [Internal] Reviewed By: NickGerleman Differential Revision: D44340265 fbshipit-source-id: dec8859687630707690e887e6be45695f7c34e49
1 parent 04df252 commit 4557831

File tree

4 files changed

+135
-59
lines changed

4 files changed

+135
-59
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java

Lines changed: 13 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -7,48 +7,20 @@
77

88
package com.facebook.react.fabric;
99

10-
import android.annotation.SuppressLint;
1110
import androidx.annotation.NonNull;
12-
import com.facebook.jni.HybridData;
13-
import com.facebook.proguard.annotations.DoNotStrip;
1411
import com.facebook.react.bridge.NativeMap;
1512
import com.facebook.react.bridge.ReadableNativeMap;
1613
import com.facebook.react.bridge.RuntimeExecutor;
1714
import com.facebook.react.bridge.RuntimeScheduler;
18-
import com.facebook.react.common.mapbuffer.MapBufferSoLoader;
1915
import com.facebook.react.fabric.events.EventBeatManager;
2016
import com.facebook.react.fabric.events.EventEmitterWrapper;
21-
import com.facebook.react.uimanager.PixelUtil;
2217

23-
@DoNotStrip
24-
@SuppressLint("MissingNativeLoadLibrary")
25-
public class Binding {
18+
public interface Binding {
2619

27-
static {
28-
FabricSoLoader.staticInit();
29-
MapBufferSoLoader.staticInit();
30-
}
31-
32-
@DoNotStrip private final HybridData mHybridData;
33-
34-
private static native HybridData initHybrid();
35-
36-
public Binding() {
37-
mHybridData = initHybrid();
38-
}
39-
40-
private native void installFabricUIManager(
41-
RuntimeExecutor runtimeExecutor,
42-
RuntimeScheduler runtimeScheduler,
43-
FabricUIManager uiManager,
44-
EventBeatManager eventBeatManager,
45-
ComponentFactory componentsRegistry,
46-
Object reactNativeConfig);
47-
48-
public native void startSurface(
20+
public void startSurface(
4921
int surfaceId, @NonNull String moduleName, @NonNull NativeMap initialProps);
5022

51-
public native void startSurfaceWithConstraints(
23+
public void startSurfaceWithConstraints(
5224
int surfaceId,
5325
String moduleName,
5426
NativeMap initialProps,
@@ -61,13 +33,13 @@ public native void startSurfaceWithConstraints(
6133
boolean isRTL,
6234
boolean doLeftAndRightSwapInRTL);
6335

64-
public native void renderTemplateToSurface(int surfaceId, String uiTemplate);
36+
public void renderTemplateToSurface(int surfaceId, String uiTemplate);
6537

66-
public native void stopSurface(int surfaceId);
38+
public void stopSurface(int surfaceId);
6739

68-
public native void setPixelDensity(float pointScaleFactor);
40+
public void setPixelDensity(float pointScaleFactor);
6941

70-
public native void setConstraints(
42+
public void setConstraints(
7143
int surfaceId,
7244
float minWidth,
7345
float maxWidth,
@@ -78,37 +50,21 @@ public native void setConstraints(
7850
boolean isRTL,
7951
boolean doLeftAndRightSwapInRTL);
8052

81-
public native void driveCxxAnimations();
53+
public void driveCxxAnimations();
8254

83-
public native ReadableNativeMap getInspectorDataForInstance(
84-
EventEmitterWrapper eventEmitterWrapper);
55+
public ReadableNativeMap getInspectorDataForInstance(EventEmitterWrapper eventEmitterWrapper);
8556

8657
public void register(
8758
@NonNull RuntimeExecutor runtimeExecutor,
8859
@NonNull RuntimeScheduler runtimeScheduler,
8960
@NonNull FabricUIManager fabricUIManager,
9061
@NonNull EventBeatManager eventBeatManager,
9162
@NonNull ComponentFactory componentFactory,
92-
@NonNull ReactNativeConfig reactNativeConfig) {
93-
fabricUIManager.setBinding(this);
94-
installFabricUIManager(
95-
runtimeExecutor,
96-
runtimeScheduler,
97-
fabricUIManager,
98-
eventBeatManager,
99-
componentFactory,
100-
reactNativeConfig);
101-
102-
setPixelDensity(PixelUtil.getDisplayMetricDensity());
103-
}
104-
105-
private native void uninstallFabricUIManager();
63+
@NonNull ReactNativeConfig reactNativeConfig);
10664

107-
public void unregister() {
108-
uninstallFabricUIManager();
109-
}
65+
public void unregister();
11066

111-
public native void registerSurface(SurfaceHandlerBinding surfaceHandler);
67+
public void registerSurface(SurfaceHandlerBinding surfaceHandler);
11268

113-
public native void unregisterSurface(SurfaceHandlerBinding surfaceHandler);
69+
public void unregisterSurface(SurfaceHandlerBinding surfaceHandler);
11470
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/*
2+
* Copyright (c) Meta Platforms, Inc. and 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.fabric;
9+
10+
import android.annotation.SuppressLint;
11+
import androidx.annotation.NonNull;
12+
import com.facebook.jni.HybridData;
13+
import com.facebook.proguard.annotations.DoNotStrip;
14+
import com.facebook.react.bridge.NativeMap;
15+
import com.facebook.react.bridge.ReadableNativeMap;
16+
import com.facebook.react.bridge.RuntimeExecutor;
17+
import com.facebook.react.bridge.RuntimeScheduler;
18+
import com.facebook.react.common.mapbuffer.MapBufferSoLoader;
19+
import com.facebook.react.fabric.events.EventBeatManager;
20+
import com.facebook.react.fabric.events.EventEmitterWrapper;
21+
import com.facebook.react.uimanager.PixelUtil;
22+
23+
@DoNotStrip
24+
@SuppressLint("MissingNativeLoadLibrary")
25+
public class BindingImpl implements Binding {
26+
27+
static {
28+
FabricSoLoader.staticInit();
29+
MapBufferSoLoader.staticInit();
30+
}
31+
32+
@DoNotStrip private final HybridData mHybridData;
33+
34+
private static native HybridData initHybrid();
35+
36+
public BindingImpl() {
37+
mHybridData = initHybrid();
38+
}
39+
40+
private native void installFabricUIManager(
41+
RuntimeExecutor runtimeExecutor,
42+
RuntimeScheduler runtimeScheduler,
43+
FabricUIManager uiManager,
44+
EventBeatManager eventBeatManager,
45+
ComponentFactory componentsRegistry,
46+
Object reactNativeConfig);
47+
48+
@Override
49+
public native void startSurface(
50+
int surfaceId, @NonNull String moduleName, @NonNull NativeMap initialProps);
51+
52+
@Override
53+
public native void startSurfaceWithConstraints(
54+
int surfaceId,
55+
String moduleName,
56+
NativeMap initialProps,
57+
float minWidth,
58+
float maxWidth,
59+
float minHeight,
60+
float maxHeight,
61+
float offsetX,
62+
float offsetY,
63+
boolean isRTL,
64+
boolean doLeftAndRightSwapInRTL);
65+
66+
@Override
67+
public native void renderTemplateToSurface(int surfaceId, String uiTemplate);
68+
69+
@Override
70+
public native void stopSurface(int surfaceId);
71+
72+
@Override
73+
public native void setPixelDensity(float pointScaleFactor);
74+
75+
@Override
76+
public native void setConstraints(
77+
int surfaceId,
78+
float minWidth,
79+
float maxWidth,
80+
float minHeight,
81+
float maxHeight,
82+
float offsetX,
83+
float offsetY,
84+
boolean isRTL,
85+
boolean doLeftAndRightSwapInRTL);
86+
87+
public native void driveCxxAnimations();
88+
89+
public native ReadableNativeMap getInspectorDataForInstance(
90+
EventEmitterWrapper eventEmitterWrapper);
91+
92+
public void register(
93+
@NonNull RuntimeExecutor runtimeExecutor,
94+
@NonNull RuntimeScheduler runtimeScheduler,
95+
@NonNull FabricUIManager fabricUIManager,
96+
@NonNull EventBeatManager eventBeatManager,
97+
@NonNull ComponentFactory componentFactory,
98+
@NonNull ReactNativeConfig reactNativeConfig) {
99+
fabricUIManager.setBinding(this);
100+
installFabricUIManager(
101+
runtimeExecutor,
102+
runtimeScheduler,
103+
fabricUIManager,
104+
eventBeatManager,
105+
componentFactory,
106+
reactNativeConfig);
107+
108+
setPixelDensity(PixelUtil.getDisplayMetricDensity());
109+
}
110+
111+
private native void uninstallFabricUIManager();
112+
113+
public void unregister() {
114+
uninstallFabricUIManager();
115+
}
116+
117+
public native void registerSurface(SurfaceHandlerBinding surfaceHandler);
118+
119+
public native void unregisterSurface(SurfaceHandlerBinding surfaceHandler);
120+
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public UIManager get() {
4141

4242
Systrace.beginSection(
4343
Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "FabricJSIModuleProvider.registerBinding");
44-
final Binding binding = new Binding();
44+
final Binding binding = new BindingImpl();
4545

4646
binding.register(
4747
mReactApplicationContext.getCatalystInstance().getRuntimeExecutor(),

packages/react-native/ReactAndroid/src/main/jni/react/fabric/Binding.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class Binding : public jni::HybridClass<Binding>,
3939
public LayoutAnimationStatusDelegate {
4040
public:
4141
constexpr static const char *const kJavaDescriptor =
42-
"Lcom/facebook/react/fabric/Binding;";
42+
"Lcom/facebook/react/fabric/BindingImpl;";
4343

4444
static void registerNatives();
4545

0 commit comments

Comments
 (0)