From 184dfb8f8bd4dfbb8d1575e9554e3f3361793015 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Fri, 1 Apr 2022 21:14:22 -0700 Subject: [PATCH] Introduce ModuleDataCleaner.cleanDataFromModules(ReactContext) Summary: ModuleDataCleaner.cleanDataFromModules(**ReactContext**) is just like ModuleDataCleaner.cleanDataFromModules(**CatalystInstance**). However, one key difference is that this new method is bridgeless mode compatible. CatalystInstance doesn't exist in bridgeless mode. Changelog: [Android][Added] Introduce ModuleDataCleaner.cleanDataFromModules(ReactContext) Reviewed By: sshic Differential Revision: D35286939 fbshipit-source-id: 1c09a3b34add88f848eab43b42b39ab624f0818b --- .../react/modules/common/ModuleDataCleaner.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/common/ModuleDataCleaner.java b/ReactAndroid/src/main/java/com/facebook/react/modules/common/ModuleDataCleaner.java index 561e59ab598..fabc71170f3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/common/ModuleDataCleaner.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/common/ModuleDataCleaner.java @@ -10,6 +10,7 @@ package com.facebook.react.modules.common; import com.facebook.common.logging.FLog; import com.facebook.react.bridge.CatalystInstance; import com.facebook.react.bridge.NativeModule; +import com.facebook.react.bridge.ReactContext; import com.facebook.react.common.ReactConstants; /** @@ -36,6 +37,12 @@ public class ModuleDataCleaner { void clearSensitiveData(); } + /** + * Please use the cleanDataFromModules(ReactContext) instead. This method is not compatible with + * bridgeless mode. + * + * @deprecated + */ public static void cleanDataFromModules(CatalystInstance catalystInstance) { for (NativeModule nativeModule : catalystInstance.getNativeModules()) { if (nativeModule instanceof Cleanable) { @@ -44,4 +51,13 @@ public class ModuleDataCleaner { } } } + + public static void cleanDataFromModules(ReactContext reactContext) { + for (NativeModule nativeModule : reactContext.getNativeModules()) { + if (nativeModule instanceof Cleanable) { + FLog.d(ReactConstants.TAG, "Cleaning data from " + nativeModule.getName()); + ((Cleanable) nativeModule).clearSensitiveData(); + } + } + } }