Apply feature flag inject approach
Bug: 323278352
Test: atest TelephonyRcsServiceTest UceControllerManagerTest
Change-Id: Ia52ca507f1d02282e1e4f423c7987f44c4398265
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index 2ae39df..b787e84 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -594,7 +594,7 @@
mImsStateCallbackController =
ImsStateCallbackController.make(this, PhoneFactory.getPhones().length);
mTelephonyRcsService = new TelephonyRcsService(this,
- PhoneFactory.getPhones().length);
+ PhoneFactory.getPhones().length, mFeatureFlags);
mTelephonyRcsService.initialize();
imsRcsController.setRcsService(mTelephonyRcsService);
mImsProvisioningController =
diff --git a/src/com/android/services/telephony/rcs/TelephonyRcsService.java b/src/com/android/services/telephony/rcs/TelephonyRcsService.java
index f6ba40b..63753c2 100644
--- a/src/com/android/services/telephony/rcs/TelephonyRcsService.java
+++ b/src/com/android/services/telephony/rcs/TelephonyRcsService.java
@@ -33,6 +33,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.PhoneConfigurationManager;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.metrics.RcsStats;
import com.android.internal.util.IndentingPrintWriter;
import com.android.phone.ImsStateCallbackController;
@@ -63,7 +64,8 @@
/**
* @return an instance of {@link UceControllerManager} associated with the slot specified.
*/
- UceControllerManager createUceControllerManager(Context context, int slotId, int subId);
+ UceControllerManager createUceControllerManager(Context context, int slotId, int subId,
+ FeatureFlags featureFlags);
/**
* @return an instance of {@link SipTransportController} for the slot and subscription
@@ -80,8 +82,8 @@
@Override
public UceControllerManager createUceControllerManager(Context context, int slotId,
- int subId) {
- return new UceControllerManager(context, slotId, subId);
+ int subId, FeatureFlags featureFlags) {
+ return new UceControllerManager(context, slotId, subId, featureFlags);
}
@Override
@@ -112,6 +114,7 @@
private final Context mContext;
private final Object mLock = new Object();
+ private final FeatureFlags mFeatureFlags;
private int mNumSlots;
// Maps slot ID -> RcsFeatureController.
@@ -160,23 +163,26 @@
return true;
});
- public TelephonyRcsService(Context context, int numSlots) {
+ public TelephonyRcsService(Context context, int numSlots, FeatureFlags featureFlags) {
mContext = context;
mNumSlots = numSlots;
mFeatureControllers = new SparseArray<>(numSlots);
mSlotToAssociatedSubIds = new SparseArray<>(numSlots);
mRcsUceEnabled = sResourceProxy.getDeviceUceEnabled(mContext);
+ mFeatureFlags = featureFlags;
RcsStats.getInstance().registerUceCallback();
}
@VisibleForTesting
- public TelephonyRcsService(Context context, int numSlots, ResourceProxy resourceProxy) {
+ public TelephonyRcsService(Context context, int numSlots, ResourceProxy resourceProxy,
+ FeatureFlags featureFlags) {
mContext = context;
mNumSlots = numSlots;
mFeatureControllers = new SparseArray<>(numSlots);
mSlotToAssociatedSubIds = new SparseArray<>(numSlots);
sResourceProxy = resourceProxy;
mRcsUceEnabled = sResourceProxy.getDeviceUceEnabled(mContext);
+ mFeatureFlags = featureFlags;
RcsStats.getInstance().registerUceCallback();
}
@@ -310,8 +316,8 @@
private void updateSupportedFeatures(RcsFeatureController c, int slotId, int subId) {
if (isDeviceUceEnabled() && doesSubscriptionSupportPresence(subId)) {
if (c.getFeature(UceControllerManager.class) == null) {
- c.addFeature(mFeatureFactory.createUceControllerManager(mContext, slotId, subId),
- UceControllerManager.class);
+ c.addFeature(mFeatureFactory.createUceControllerManager(
+ mContext, slotId, subId, mFeatureFlags), UceControllerManager.class);
}
} else {
if (c.getFeature(UceControllerManager.class) != null) {
diff --git a/src/com/android/services/telephony/rcs/UceControllerManager.java b/src/com/android/services/telephony/rcs/UceControllerManager.java
index 02ae048..b7e12a3 100644
--- a/src/com/android/services/telephony/rcs/UceControllerManager.java
+++ b/src/com/android/services/telephony/rcs/UceControllerManager.java
@@ -32,6 +32,7 @@
import com.android.ims.RcsFeatureManager;
import com.android.ims.rcs.uce.UceController;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.flags.FeatureFlags;
import java.io.PrintWriter;
import java.util.List;
@@ -53,15 +54,17 @@
private final int mSlotId;
private final Context mContext;
private final ExecutorService mExecutorService;
+ private final FeatureFlags mFeatureFlags;
private volatile @Nullable UceController mUceController;
private volatile @Nullable RcsFeatureManager mRcsFeatureManager;
- public UceControllerManager(Context context, int slotId, int subId) {
+ public UceControllerManager(Context context, int slotId, int subId, FeatureFlags featureFlags) {
Log.d(LOG_TAG, "create: slotId=" + slotId + ", subId=" + subId);
mSlotId = slotId;
mContext = context;
mExecutorService = Executors.newSingleThreadExecutor();
+ mFeatureFlags = featureFlags;
initUceController(subId);
}
@@ -70,11 +73,12 @@
*/
@VisibleForTesting
public UceControllerManager(Context context, int slotId, ExecutorService executor,
- UceController uceController) {
+ UceController uceController, FeatureFlags featureFlags) {
mSlotId = slotId;
mContext = context;
mExecutorService = executor;
mUceController = uceController;
+ mFeatureFlags = featureFlags;
}
@Override
@@ -440,7 +444,7 @@
if (mUceController == null) {
// Create new UceController only when the subscription ID is valid.
if (SubscriptionManager.isValidSubscriptionId(newSubId)) {
- mUceController = new UceController(mContext, newSubId);
+ mUceController = new UceController(mContext, newSubId, mFeatureFlags);
}
} else if (mUceController.getSubId() != newSubId) {
// The subscription ID is updated. Remove the old UceController instance.
@@ -448,7 +452,7 @@
mUceController = null;
// Create new UceController only when the subscription ID is valid.
if (SubscriptionManager.isValidSubscriptionId(newSubId)) {
- mUceController = new UceController(mContext, newSubId);
+ mUceController = new UceController(mContext, newSubId, mFeatureFlags);
}
}
}