Skip to content

Commit 625f69f

Browse files
cortinicofacebook-github-bot
authored andcommitted
@DeprecatedInNewArchitecture -> @deprecated (#52399)
Summary: Pull Request resolved: #52399 I'm raising the deprecation warnings for those methods that are using legacy arch. Previously the `DeprecatedInNewArchitecture` was not generating warnings for user in their builds, while now the Kotlin's/Java's `DeprecatedInNewArchitecture` it will. Changelog: [Android] [Changed] - Introduce more deprecation warnings for Legacy Arch classes Reviewed By: mdvacca Differential Revision: D77736713 fbshipit-source-id: bc21729ed8253d3ec6b6a40577bcd76622c3f8a6
1 parent 0603455 commit 625f69f

File tree

35 files changed

+125
-77
lines changed

35 files changed

+125
-77
lines changed

packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GeneratePackageListTask.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ abstract class GeneratePackageListTask : DefaultTask() {
148148
149149
{{ packageImports }}
150150
151+
@SuppressWarnings("deprecation")
151152
public class PackageList {
152153
private Application application;
153154
private ReactNativeHost reactNativeHost;

packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GeneratePackageListTaskTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ class GeneratePackageListTaskTest {
233233
234234
235235
236+
@SuppressWarnings("deprecation")
236237
public class PackageList {
237238
private Application application;
238239
private ReactNativeHost reactNativeHost;
@@ -311,7 +312,8 @@ class GeneratePackageListTaskTest {
311312
import com.facebook.react.aPackage;
312313
// @react-native/another-package
313314
import com.facebook.react.anotherPackage;
314-
315+
316+
@SuppressWarnings("deprecation")
315317
public class PackageList {
316318
private Application application;
317319
private ReactNativeHost reactNativeHost;

packages/react-native-test-library/android/src/main/java/com/facebook/react/osslibraryexample/OSSLibraryExamplePackage.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import com.facebook.react.bridge.NativeModule
1212
import com.facebook.react.bridge.ReactApplicationContext
1313
import com.facebook.react.uimanager.ViewManager
1414

15+
@Suppress("DEPRECATION")
1516
public class OSSLibraryExamplePackage : ReactPackage {
17+
@Deprecated("Migrate to [BaseReactPackage] and implement [getModule] instead.")
1618
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> =
1719
listOf(NativeSampleModule(reactContext))
1820

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ public abstract class com/facebook/react/ReactNativeHost {
353353
}
354354

355355
public abstract interface class com/facebook/react/ReactPackage {
356-
public abstract fun createNativeModules (Lcom/facebook/react/bridge/ReactApplicationContext;)Ljava/util/List;
356+
public fun createNativeModules (Lcom/facebook/react/bridge/ReactApplicationContext;)Ljava/util/List;
357357
public abstract fun createViewManagers (Lcom/facebook/react/bridge/ReactApplicationContext;)Ljava/util/List;
358358
public fun getModule (Ljava/lang/String;Lcom/facebook/react/bridge/ReactApplicationContext;)Lcom/facebook/react/bridge/NativeModule;
359359
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/BaseReactPackage.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import javax.inject.Provider
2222
/** Abstract class that supports lazy loading of NativeModules by default. */
2323
public abstract class BaseReactPackage : ReactPackage {
2424

25+
@Deprecated("Migrate to [BaseReactPackage] and implement [getModule] instead.")
2526
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
2627
throw UnsupportedOperationException(
2728
"createNativeModules method is not supported. Use getModule() method instead.")

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/HeadlessJsTaskService.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public abstract class HeadlessJsTaskService : Service(), HeadlessJsTaskEventList
112112
* simply have a different mechanism for storing a `ReactNativeHost`, e.g. as a static field
113113
* somewhere.
114114
*/
115+
@Suppress("DEPRECATION")
115116
protected val reactNativeHost: ReactNativeHost
116117
get() = (application as ReactApplication).reactNativeHost
117118

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ public abstract class LazyReactPackage : ReactPackage {
9292
* @param reactContext react application context that can be used to create modules
9393
* @return A [List]<[NativeModule]> to register
9494
*/
95+
@Suppress("DEPRECATION")
96+
@Deprecated("Migrate to [BaseReactPackage] and implement [getModule] instead.")
9597
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> =
9698
buildList {
9799
for (holder in getNativeModules(reactContext)) {

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

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,22 @@
1818
import android.view.Window;
1919
import androidx.annotation.Nullable;
2020
import com.facebook.infer.annotation.Assertions;
21+
import com.facebook.infer.annotation.Nullsafe;
2122
import com.facebook.react.bridge.Callback;
2223
import com.facebook.react.bridge.ReactContext;
23-
import com.facebook.react.common.annotations.DeprecatedInNewArchitecture;
2424
import com.facebook.react.interfaces.fabric.ReactSurface;
2525
import com.facebook.react.internal.featureflags.ReactNativeNewArchitectureFeatureFlags;
2626
import com.facebook.react.modules.core.PermissionListener;
2727
import com.facebook.react.views.view.WindowUtilKt;
2828
import com.facebook.systrace.Systrace;
29+
import java.util.Objects;
2930

3031
/**
3132
* Delegate class for {@link ReactActivity}. You can subclass this to provide custom implementations
3233
* for e.g. {@link #getReactNativeHost()}, if your Application class doesn't implement {@link
3334
* ReactApplication}.
3435
*/
36+
@Nullsafe(Nullsafe.Mode.LOCAL)
3537
public class ReactActivityDelegate {
3638

3739
private final @Nullable Activity mActivity;
@@ -86,8 +88,11 @@ public ReactActivityDelegate(
8688
* ReactApplication#getReactNativeHost()}. Override this method if your application class does not
8789
* implement {@code ReactApplication} or you simply have a different mechanism for storing a
8890
* {@code ReactNativeHost}, e.g. as a static field somewhere.
91+
*
92+
* @deprecated "Do not access {@link ReactNativeHost} directly. This class is going away in the
93+
* New Architecture. You should access {@link ReactHost} instead."
8994
*/
90-
@DeprecatedInNewArchitecture(message = "Use getReactHost()")
95+
@Deprecated
9196
protected ReactNativeHost getReactNativeHost() {
9297
return ((ReactApplication) getPlainActivity().getApplication()).getReactNativeHost();
9398
}
@@ -107,16 +112,21 @@ protected ReactNativeHost getReactNativeHost() {
107112
return mReactDelegate;
108113
}
109114

110-
@DeprecatedInNewArchitecture(message = "Use getReactHost()")
115+
/**
116+
* @deprecated @deprecated "Do not access {@link ReactInstanceManager} directly. This class is
117+
* going away in the New Architecture. You should access {@link ReactHost} instead."
118+
* @noinspection deprecation
119+
*/
111120
public ReactInstanceManager getReactInstanceManager() {
112-
return mReactDelegate.getReactInstanceManager();
121+
return Objects.requireNonNull(mReactDelegate).getReactInstanceManager();
113122
}
114123

124+
@Nullable
115125
public String getMainComponentName() {
116126
return mMainComponentName;
117127
}
118128

119-
public void onCreate(Bundle savedInstanceState) {
129+
public void onCreate(@Nullable Bundle savedInstanceState) {
120130
Systrace.traceSection(
121131
Systrace.TRACE_TAG_REACT,
122132
"ReactActivityDelegate.onCreate::init",
@@ -147,6 +157,7 @@ public void onCreate(Bundle savedInstanceState) {
147157
launchOptions,
148158
isFabricEnabled()) {
149159
@Override
160+
@Nullable
150161
protected ReactRootView createRootView() {
151162
ReactRootView rootView = ReactActivityDelegate.this.createRootView();
152163
if (rootView == null) {
@@ -162,31 +173,29 @@ protected ReactRootView createRootView() {
162173
});
163174
}
164175

165-
protected void loadApp(String appKey) {
166-
mReactDelegate.loadApp(appKey);
176+
protected void loadApp(@Nullable String appKey) {
177+
Objects.requireNonNull(mReactDelegate).loadApp(Objects.requireNonNull(appKey));
167178
getPlainActivity().setContentView(mReactDelegate.getReactRootView());
168179
}
169180

170181
public void setReactSurface(ReactSurface reactSurface) {
171-
mReactDelegate.setReactSurface(reactSurface);
182+
Objects.requireNonNull(mReactDelegate).setReactSurface(reactSurface);
172183
}
173184

174185
public void setReactRootView(ReactRootView reactRootView) {
175-
mReactDelegate.setReactRootView(reactRootView);
186+
Objects.requireNonNull(mReactDelegate).setReactRootView(reactRootView);
176187
}
177188

178189
public void onUserLeaveHint() {
179-
if (mReactDelegate != null) {
180-
mReactDelegate.onUserLeaveHint();
181-
}
190+
Objects.requireNonNull(mReactDelegate).onUserLeaveHint();
182191
}
183192

184193
public void onPause() {
185-
mReactDelegate.onHostPause();
194+
Objects.requireNonNull(mReactDelegate).onHostPause();
186195
}
187196

188197
public void onResume() {
189-
mReactDelegate.onHostResume();
198+
Objects.requireNonNull(mReactDelegate).onHostResume();
190199

191200
if (mPermissionsCallback != null) {
192201
mPermissionsCallback.invoke();
@@ -195,43 +204,43 @@ public void onResume() {
195204
}
196205

197206
public void onDestroy() {
198-
mReactDelegate.onHostDestroy();
207+
Objects.requireNonNull(mReactDelegate).onHostDestroy();
199208
}
200209

201-
public void onActivityResult(int requestCode, int resultCode, Intent data) {
202-
mReactDelegate.onActivityResult(requestCode, resultCode, data, true);
210+
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
211+
Objects.requireNonNull(mReactDelegate).onActivityResult(requestCode, resultCode, data, true);
203212
}
204213

205214
public boolean onKeyDown(int keyCode, KeyEvent event) {
206-
return mReactDelegate.onKeyDown(keyCode, event);
215+
return Objects.requireNonNull(mReactDelegate).onKeyDown(keyCode, event);
207216
}
208217

209218
public boolean onKeyUp(int keyCode, KeyEvent event) {
210-
return mReactDelegate.shouldShowDevMenuOrReload(keyCode, event);
219+
return Objects.requireNonNull(mReactDelegate).shouldShowDevMenuOrReload(keyCode, event);
211220
}
212221

213222
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
214-
return mReactDelegate.onKeyLongPress(keyCode);
223+
return Objects.requireNonNull(mReactDelegate).onKeyLongPress(keyCode);
215224
}
216225

217226
public boolean onBackPressed() {
218-
return mReactDelegate.onBackPressed();
227+
return Objects.requireNonNull(mReactDelegate).onBackPressed();
219228
}
220229

221-
public boolean onNewIntent(Intent intent) {
222-
return mReactDelegate.onNewIntent(intent);
230+
public boolean onNewIntent(@Nullable Intent intent) {
231+
return Objects.requireNonNull(mReactDelegate).onNewIntent(Objects.requireNonNull(intent));
223232
}
224233

225234
public void onWindowFocusChanged(boolean hasFocus) {
226-
mReactDelegate.onWindowFocusChanged(hasFocus);
235+
Objects.requireNonNull(mReactDelegate).onWindowFocusChanged(hasFocus);
227236
}
228237

229238
public void onConfigurationChanged(Configuration newConfig) {
230-
mReactDelegate.onConfigurationChanged(newConfig);
239+
Objects.requireNonNull(mReactDelegate).onConfigurationChanged(newConfig);
231240
}
232241

233242
public void requestPermissions(
234-
String[] permissions, int requestCode, PermissionListener listener) {
243+
String[] permissions, int requestCode, @Nullable PermissionListener listener) {
235244
mPermissionListener = listener;
236245
getPlainActivity().requestPermissions(permissions, requestCode);
237246
}
@@ -267,7 +276,7 @@ protected ReactActivity getReactActivity() {
267276
* context will no longer be valid.
268277
*/
269278
public @Nullable ReactContext getCurrentReactContext() {
270-
return mReactDelegate.getCurrentReactContext();
279+
return Objects.requireNonNull(mReactDelegate).getCurrentReactContext();
271280
}
272281

273282
/**

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactApplication.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ package com.facebook.react
1010
/** Interface that represents an instance of a React Native application */
1111
public interface ReactApplication {
1212
/** Get the default [ReactNativeHost] for this app. */
13+
@Suppress("DEPRECATION")
14+
@Deprecated(
15+
"You should not use ReactNativeHost directly in the New Architecture. Use ReactHost instead.",
16+
ReplaceWith("reactHost"))
1317
public val reactNativeHost: ReactNativeHost
1418

1519
/**

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import android.os.Bundle
1414
import android.view.KeyEvent
1515
import com.facebook.react.bridge.ReactContext
1616
import com.facebook.react.bridge.UiThreadUtil.runOnUiThread
17-
import com.facebook.react.common.annotations.DeprecatedInNewArchitecture
1817
import com.facebook.react.devsupport.DoubleTapReloadRecognizer
1918
import com.facebook.react.devsupport.ReleaseDevSupportManager
2019
import com.facebook.react.devsupport.interfaces.DevSupportManager
@@ -26,12 +25,17 @@ import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler
2625
* A delegate for handling React Application support. This delegate is unaware whether it is used in
2726
* an [Activity] or a [android.app.Fragment].
2827
*/
28+
@Suppress("DEPRECATION")
2929
public open class ReactDelegate {
3030
private val activity: Activity
3131
private var internalReactRootView: ReactRootView? = null
3232
private val mainComponentName: String?
3333
private var launchOptions: Bundle?
3434
private var doubleTapReloadRecognizer: DoubleTapReloadRecognizer?
35+
36+
@Deprecated(
37+
"You should not use ReactNativeHost directly in the New Architecture. Use ReactHost instead.",
38+
ReplaceWith("reactHost"))
3539
private var reactNativeHost: ReactNativeHost? = null
3640
public var reactHost: ReactHost? = null
3741
private set
@@ -380,7 +384,8 @@ public open class ReactDelegate {
380384
return false
381385
}
382386

383-
@DeprecatedInNewArchitecture(message = "Use reactHost")
387+
@Deprecated(
388+
"Do not access [ReactInstanceManager] directly. This class is going away in the New Architecture. You should use [ReactHost] instead.")
384389
public fun getReactInstanceManager(): ReactInstanceManager {
385390
val nonNullReactNativeHost =
386391
checkNotNull(reactNativeHost) {

0 commit comments

Comments
 (0)