Add FeatureFlags to the Phone Objects
Add the new FeatureFlags reference to the base
phone object and update all the snaking constructors
to support it.
Bug: 302033535
Test: compilation (non-functional change)
Change-Id: I39c9531d3c5e54cbfceecfc74be259bf5cd1d6fb
diff --git a/src/java/com/android/internal/telephony/GsmCdmaPhone.java b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
index b0c1e52..5bcfb64 100644
--- a/src/java/com/android/internal/telephony/GsmCdmaPhone.java
+++ b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
@@ -321,7 +321,8 @@
TelephonyComponentFactory telephonyComponentFactory,
ImsManagerFactory imsManagerFactory, @NonNull FeatureFlags featureFlags) {
super(precisePhoneType == PhoneConstants.PHONE_TYPE_GSM ? "GSM" : "CDMA",
- notifier, context, ci, unitTestMode, phoneId, telephonyComponentFactory);
+ notifier, context, ci, unitTestMode, phoneId, telephonyComponentFactory,
+ featureFlags);
// phone type needs to be set before other initialization as other objects rely on it
mPrecisePhoneType = precisePhoneType;
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java
index 80e502c..ea15af6 100644
--- a/src/java/com/android/internal/telephony/Phone.java
+++ b/src/java/com/android/internal/telephony/Phone.java
@@ -93,6 +93,7 @@
import com.android.internal.telephony.emergency.EmergencyConstants;
import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.emergency.EmergencyStateTracker;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.imsphone.ImsCallInfo;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.imsphone.ImsPhoneCall;
@@ -283,6 +284,8 @@
"pref_null_cipher_and_integrity_enabled";
private final TelephonyAdminReceiver m2gAdminUpdater;
+ protected final FeatureFlags mFeatureFlags;
+
/**
* This method is invoked when the Phone exits Emergency Callback Mode.
*/
@@ -548,22 +551,25 @@
/**
* Constructs a Phone in normal (non-unit test) mode.
*
+ * @param name a name for this phone object
* @param notifier An instance of DefaultPhoneNotifier,
* @param context Context object from hosting application
* unless unit testing.
* @param ci is CommandsInterface
* @param unitTestMode when true, prevents notifications
* of state change events
+ * @param featureFlags an instance of the FeatureFlags set
*/
protected Phone(String name, PhoneNotifier notifier, Context context, CommandsInterface ci,
- boolean unitTestMode) {
+ boolean unitTestMode, FeatureFlags featureFlags) {
this(name, notifier, context, ci, unitTestMode, SubscriptionManager.DEFAULT_PHONE_INDEX,
- TelephonyComponentFactory.getInstance());
+ TelephonyComponentFactory.getInstance(), featureFlags);
}
/**
* Constructs a Phone in normal (non-unit test) mode.
*
+ * @param name a name for this phone object
* @param notifier An instance of DefaultPhoneNotifier,
* @param context Context object from hosting application
* unless unit testing.
@@ -571,10 +577,13 @@
* @param unitTestMode when true, prevents notifications
* of state change events
* @param phoneId the phone-id of this phone.
+ * @param telephonyComponentFactory a factory for injecting telephony components
+ * @param featureFlags an instance of the FeatureFlags set
*/
protected Phone(String name, PhoneNotifier notifier, Context context, CommandsInterface ci,
boolean unitTestMode, int phoneId,
- TelephonyComponentFactory telephonyComponentFactory) {
+ TelephonyComponentFactory telephonyComponentFactory,
+ FeatureFlags featureFlags) {
mPhoneId = phoneId;
mName = name;
mNotifier = notifier;
@@ -587,6 +596,8 @@
.makeAppSmsManager(context);
mLocalLog = new LocalLog(64);
+ mFeatureFlags = featureFlags;
+
setUnitTestMode(unitTestMode);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
diff --git a/src/java/com/android/internal/telephony/PhoneFactory.java b/src/java/com/android/internal/telephony/PhoneFactory.java
index e49804f..a796368 100644
--- a/src/java/com/android/internal/telephony/PhoneFactory.java
+++ b/src/java/com/android/internal/telephony/PhoneFactory.java
@@ -455,7 +455,7 @@
* @return the {@code ImsPhone} object or null if the exception occured
*/
public static Phone makeImsPhone(PhoneNotifier phoneNotifier, Phone defaultPhone) {
- return ImsPhoneFactory.makePhone(sContext, phoneNotifier, defaultPhone);
+ return ImsPhoneFactory.makePhone(sContext, phoneNotifier, defaultPhone, sFeatureFlags);
}
/**
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhone.java b/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
index a5127f2..3a93f18 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
@@ -120,6 +120,7 @@
import com.android.internal.telephony.domainselection.DomainSelectionResolver;
import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.emergency.EmergencyStateTracker;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.gsm.SuppServiceNotification;
import com.android.internal.telephony.metrics.ImsStats;
import com.android.internal.telephony.metrics.TelephonyMetrics;
@@ -454,14 +455,15 @@
}
// Constructors
- public ImsPhone(Context context, PhoneNotifier notifier, Phone defaultPhone) {
- this(context, notifier, defaultPhone, ImsManager::getInstance, false);
+ public ImsPhone(Context context, PhoneNotifier notifier,
+ Phone defaultPhone, FeatureFlags featureFlags) {
+ this(context, notifier, defaultPhone, ImsManager::getInstance, false, featureFlags);
}
@VisibleForTesting
public ImsPhone(Context context, PhoneNotifier notifier, Phone defaultPhone,
- ImsManagerFactory imsManagerFactory, boolean unitTestMode) {
- super("ImsPhone", context, notifier, unitTestMode);
+ ImsManagerFactory imsManagerFactory, boolean unitTestMode, FeatureFlags featureFlags) {
+ super("ImsPhone", context, notifier, unitTestMode, featureFlags);
mDefaultPhone = defaultPhone;
mImsManagerFactory = imsManagerFactory;
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneBase.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneBase.java
index 8a1041d..c5a7ecf 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneBase.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneBase.java
@@ -43,6 +43,7 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.PhoneNotifier;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.uicc.IccFileHandler;
import com.android.telephony.Rlog;
@@ -58,8 +59,9 @@
private PhoneConstants.State mState = PhoneConstants.State.IDLE;
public ImsPhoneBase(String name, Context context, PhoneNotifier notifier,
- boolean unitTestMode) {
- super(name, notifier, context, new ImsPhoneCommandInterface(context), unitTestMode);
+ boolean unitTestMode, FeatureFlags featureFlags) {
+ super(name, notifier, context, new ImsPhoneCommandInterface(context), unitTestMode,
+ featureFlags);
}
@Override
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneFactory.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneFactory.java
index 8f82328..0ae149c 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneFactory.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneFactory.java
@@ -20,6 +20,7 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneNotifier;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.telephony.Rlog;
/**
@@ -35,10 +36,10 @@
* @return the {@code ImsPhone} object
*/
public static ImsPhone makePhone(Context context,
- PhoneNotifier phoneNotifier, Phone defaultPhone) {
+ PhoneNotifier phoneNotifier, Phone defaultPhone, FeatureFlags featureFlags) {
try {
- return new ImsPhone(context, phoneNotifier, defaultPhone);
+ return new ImsPhone(context, phoneNotifier, defaultPhone, featureFlags);
} catch (Exception e) {
Rlog.e("VoltePhoneFactory", "makePhone", e);
return null;
diff --git a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneFactoryTest.java b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneFactoryTest.java
index a657ba2..21d79a9 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneFactoryTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneFactoryTest.java
@@ -28,6 +28,7 @@
import com.android.internal.telephony.PhoneNotifier;
import com.android.internal.telephony.TelephonyTest;
+import com.android.internal.telephony.flags.FeatureFlags;
import org.junit.After;
import org.junit.Before;
@@ -42,6 +43,8 @@
private ImsPhone mImsPhoneUT;
private ImsPhoneFactoryHandler mImsPhoneFactoryHandler;
+ private FeatureFlags mFeatureFlags;
+
private final Executor mExecutor = Runnable::run;
private class ImsPhoneFactoryHandler extends HandlerThread {
@@ -51,7 +54,8 @@
}
@Override
public void onLooperPrepared() {
- mImsPhoneUT = ImsPhoneFactory.makePhone(mContext, mPhoneNotifier, mPhone);
+ mImsPhoneUT = ImsPhoneFactory.makePhone(mContext, mPhoneNotifier, mPhone,
+ mFeatureFlags);
setReady(true);
}
}
@@ -60,6 +64,7 @@
public void setUp() throws Exception {
super.setUp(getClass().getSimpleName());
mPhoneNotifier = mock(PhoneNotifier.class);
+ mFeatureFlags = mock(FeatureFlags.class);
doReturn(mExecutor).when(mContext).getMainExecutor();
mImsPhoneFactoryHandler = new ImsPhoneFactoryHandler(getClass().getSimpleName());
diff --git a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneMmiCodeTest.java b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneMmiCodeTest.java
index d8173a2..a833da0 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneMmiCodeTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneMmiCodeTest.java
@@ -35,6 +35,7 @@
import com.android.internal.telephony.CommandException;
import com.android.internal.telephony.TelephonyTest;
+import com.android.internal.telephony.flags.FeatureFlags;
import org.junit.After;
import org.junit.Before;
@@ -57,6 +58,7 @@
// Mocked classes
private ServiceState mServiceState;
+ private FeatureFlags mFeatureFlags;
private final Executor mExecutor = Runnable::run;
@@ -64,12 +66,14 @@
public void setUp() throws Exception {
super.setUp(getClass().getSimpleName());
mServiceState = mock(ServiceState.class);
+ mFeatureFlags = mock(FeatureFlags.class);
+
doReturn(mExecutor).when(mContext).getMainExecutor();
doReturn(mPhone).when(mPhone).getDefaultPhone();
doReturn(mServiceState).when(mPhone).getServiceState();
doReturn(false).when(mServiceState).getVoiceRoaming();
doReturn(false).when(mPhone).supportsConversionOfCdmaCallerIdMmiCodesWhileRoaming();
- mImsPhoneUT = new ImsPhone(mContext, mNotifier, mPhone);
+ mImsPhoneUT = new ImsPhone(mContext, mNotifier, mPhone, mFeatureFlags);
setCarrierSupportsCallerIdVerticalServiceCodesCarrierConfig();
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java
index 9eafa09..95f47c5 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java
@@ -97,6 +97,7 @@
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyTest;
import com.android.internal.telephony.domainselection.DomainSelectionResolver;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.gsm.SuppServiceNotification;
import com.android.internal.telephony.imsphone.ImsPhone.SS;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
@@ -125,6 +126,7 @@
private DomainSelectionResolver mDomainSelectionResolver;
Connection mConnection;
ImsUtInterface mImsUtInterface;
+ private FeatureFlags mFeatureFlags;
private final Executor mExecutor = Runnable::run;
@@ -149,6 +151,7 @@
mConnection = mock(Connection.class);
mImsUtInterface = mock(ImsUtInterface.class);
mDomainSelectionResolver = mock(DomainSelectionResolver.class);
+ mFeatureFlags = mock(FeatureFlags.class);
doReturn(false).when(mDomainSelectionResolver).isDomainSelectionSupported();
DomainSelectionResolver.setDomainSelectionResolver(mDomainSelectionResolver);
@@ -162,7 +165,8 @@
doReturn(true).when(mTelephonyManager).isVoiceCapable();
- mImsPhoneUT = new ImsPhone(mContext, mNotifier, mPhone, (c, p) -> mImsManager, true);
+ mImsPhoneUT = new ImsPhone(mContext, mNotifier, mPhone, (c, p) -> mImsManager, true,
+ mFeatureFlags);
mDoesRilSendMultipleCallRing = TelephonyProperties.ril_sends_multiple_call_ring()
.orElse(true);