Removed the part that deletes the ImsManger object cache when changing the subid
Manage cache in connectionReady()/connectionUnavailable()
Bug: 353577279
Test: atest ImsStateCallbackControllerTest
Flag: com.android.internal.telephony.flags.avoid_deleting_ims_object_from_cache
Change-Id: I8ce60753a2139a4934b5a5333f4b335c9919bcb7
diff --git a/src/com/android/phone/ImsStateCallbackController.java b/src/com/android/phone/ImsStateCallbackController.java
index 019c1ca..2dca102 100644
--- a/src/com/android/phone/ImsStateCallbackController.java
+++ b/src/com/android/phone/ImsStateCallbackController.java
@@ -59,6 +59,7 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConfigurationManager;
import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.ims.ImsResolver;
import com.android.internal.telephony.util.HandlerExecutor;
import com.android.internal.util.IndentingPrintWriter;
@@ -159,6 +160,8 @@
private int mNumSlots;
+ private final FeatureFlags mFeatureFlags;
+
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -287,11 +290,13 @@
if (mSubId == subId) return;
logd(mLogPrefix + "setSubId changed subId=" + subId);
- // subId changed from valid to invalid
- if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- if (VDBG) logv(mLogPrefix + "setSubId remove ImsManager " + mSubId);
- // remove ImsManager reference associated with subId
- mSubIdToImsManagerCache.remove(mSubId);
+ if (!mFeatureFlags.avoidDeletingImsObjectFromCache()) {
+ // subId changed from valid to invalid
+ if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ if (VDBG) logv(mLogPrefix + "setSubId remove ImsManager " + mSubId);
+ // remove ImsManager reference associated with subId
+ mSubIdToImsManagerCache.remove(mSubId);
+ }
}
mSubId = subId;
@@ -709,7 +714,8 @@
/**
* create an instance
*/
- public static ImsStateCallbackController make(PhoneGlobals app, int numSlots) {
+ public static ImsStateCallbackController make(PhoneGlobals app, int numSlots,
+ FeatureFlags featureFlags) {
synchronized (ImsStateCallbackController.class) {
if (sInstance == null) {
logd("ImsStateCallbackController created");
@@ -718,7 +724,7 @@
handlerThread.start();
sInstance = new ImsStateCallbackController(app, handlerThread.getLooper(), numSlots,
ImsManager::getConnector, RcsFeatureManager::getConnector,
- ImsResolver.getInstance());
+ ImsResolver.getInstance(), featureFlags);
}
}
return sInstance;
@@ -727,7 +733,7 @@
@VisibleForTesting
public ImsStateCallbackController(PhoneGlobals app, Looper looper, int numSlots,
MmTelFeatureConnectorFactory mmTelFactory, RcsFeatureConnectorFactory rcsFactory,
- ImsResolver imsResolver) {
+ ImsResolver imsResolver, FeatureFlags featureFlags) {
mApp = app;
mHandler = new MyHandler(looper);
mImsResolver = imsResolver;
@@ -735,6 +741,7 @@
mTelephonyRegistryManager = mApp.getSystemService(TelephonyRegistryManager.class);
mMmTelFeatureFactory = mmTelFactory;
mRcsFeatureFactory = rcsFactory;
+ mFeatureFlags = featureFlags;
updateFeatureControllerSize(numSlots);