Loading src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java +0 −8 Original line number Diff line number Diff line Loading @@ -26,25 +26,17 @@ import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; public class CallsDefaultSubscriptionController extends DefaultSubscriptionController { private SubscriptionInfoEntity mSubscriptionInfoEntity; public CallsDefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { super(context, preferenceKey, lifecycle, lifecycleOwner); } @Override protected SubscriptionInfoEntity getDefaultSubscriptionInfo() { return mSubscriptionInfoEntity; } @Override protected int getDefaultSubscriptionId() { int defaultCallSubId = SubscriptionManager.getDefaultVoiceSubscriptionId(); for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { int subId = subInfo.getSubId(); if (subInfo.isActiveSubscriptionId && subId == defaultCallSubId) { mSubscriptionInfoEntity = subInfo; return subId; } } Loading src/com/android/settings/network/telephony/DefaultSubscriptionController.java +4 −104 Original line number Diff line number Diff line Loading @@ -19,11 +19,7 @@ package com.android.settings.network.telephony; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import android.content.ComponentName; import android.content.Context; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telephony.SubscriptionManager; import android.view.View; Loading Loading @@ -57,15 +53,10 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere protected ListPreference mPreference; protected SubscriptionManager mManager; protected TelecomManager mTelecomManager; protected MobileNetworkRepository mMobileNetworkRepository; protected LifecycleOwner mLifecycleOwner; private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver; private static final String EMERGENCY_ACCOUNT_HANDLE_ID = "E"; private static final ComponentName PSTN_CONNECTION_SERVICE_COMPONENT = new ComponentName("com.android.phone", "com.android.services.telephony.TelephonyConnectionService"); private boolean mIsRtlMode; List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>(); Loading @@ -84,10 +75,6 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere } } /** @return SubscriptionInfo for the default subscription for the service, or null if there * isn't one. */ protected abstract SubscriptionInfoEntity getDefaultSubscriptionInfo(); /** @return the id of the default subscription for the service, or * SubscriptionManager.INVALID_SUBSCRIPTION_ID if there isn't one. */ protected abstract int getDefaultSubscriptionId(); Loading Loading @@ -125,6 +112,8 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); // Set a summary placeholder to reduce flicker. mPreference.setSummaryProvider(pref -> mContext.getString(R.string.summary_placeholder)); updateEntries(); } Loading @@ -133,31 +122,11 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere // Currently, cannot use ListPreference.setSummary() when the summary contains user // generated string, because ListPreference.getSummary() is using String.format() to format // the summary when the summary is set by ListPreference.setSummary(). if (preference != null) { if (preference != null && !mSubInfoEntityList.isEmpty()) { preference.setSummaryProvider(pref -> getSummary()); } } @Override public CharSequence getSummary() { final PhoneAccountHandle handle = getDefaultCallingAccountHandle(); if ((handle != null) && (!isCallingAccountBindToSubscription(handle))) { // display VoIP account in summary when configured through settings within dialer return getLabelFromCallingAccount(handle); } final SubscriptionInfoEntity info = getDefaultSubscriptionInfo(); if (info != null) { // display subscription based account return info.uniqueName; } else { if (isAskEverytimeSupported()) { return mContext.getString(R.string.calls_and_sms_ask_every_time); } else { return ""; } } } @VisibleForTesting void updateEntries() { if (mPreference == null) { Loading @@ -179,6 +148,7 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere final ArrayList<CharSequence> displayNames = new ArrayList<>(); final ArrayList<CharSequence> subscriptionIds = new ArrayList<>(); List<SubscriptionInfoEntity> list = getSubscriptionInfoList(); if (list.isEmpty()) return; if (list.size() == 1) { mPreference.setEnabled(false); Loading Loading @@ -218,76 +188,6 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere } } /** * Get default calling account * * @return current calling account {@link PhoneAccountHandle} */ public PhoneAccountHandle getDefaultCallingAccountHandle() { final PhoneAccountHandle currentSelectPhoneAccount = getTelecomManager().getUserSelectedOutgoingPhoneAccount(); if (currentSelectPhoneAccount == null) { return null; } final List<PhoneAccountHandle> accountHandles = getTelecomManager().getCallCapablePhoneAccounts(false); final PhoneAccountHandle emergencyAccountHandle = new PhoneAccountHandle( PSTN_CONNECTION_SERVICE_COMPONENT, EMERGENCY_ACCOUNT_HANDLE_ID); if (currentSelectPhoneAccount.equals(emergencyAccountHandle)) { return null; } for (PhoneAccountHandle handle : accountHandles) { if (currentSelectPhoneAccount.equals(handle)) { return currentSelectPhoneAccount; } } return null; } @VisibleForTesting TelecomManager getTelecomManager() { if (mTelecomManager == null) { mTelecomManager = mContext.getSystemService(TelecomManager.class); } return mTelecomManager; } @VisibleForTesting PhoneAccount getPhoneAccount(PhoneAccountHandle handle) { return getTelecomManager().getPhoneAccount(handle); } /** * Check if calling account bind to subscription * * @param handle {@link PhoneAccountHandle} for specific calling account */ public boolean isCallingAccountBindToSubscription(PhoneAccountHandle handle) { final PhoneAccount account = getPhoneAccount(handle); if (account == null) { return false; } return account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION); } /** * Get label from calling account * * @param handle to get label from {@link PhoneAccountHandle} * @return label of calling account */ public CharSequence getLabelFromCallingAccount(PhoneAccountHandle handle) { CharSequence label = null; final PhoneAccount account = getPhoneAccount(handle); if (account != null) { label = account.getLabel(); } if (label != null) { label = mContext.getPackageManager().getUserBadgedLabel(label, handle.getUserHandle()); } return (label != null) ? label : ""; } @VisibleForTesting protected List<SubscriptionInfoEntity> getSubscriptionInfoList() { return mSubInfoEntityList; Loading src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java +0 −14 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.network.telephony; import android.content.Context; import android.telecom.PhoneAccountHandle; import android.telephony.SubscriptionManager; import androidx.lifecycle.LifecycleOwner; Loading @@ -28,7 +27,6 @@ import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; public class SmsDefaultSubscriptionController extends DefaultSubscriptionController { private final boolean mIsAskEverytimeSupported; private SubscriptionInfoEntity mSubscriptionInfoEntity; public SmsDefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { Loading @@ -37,18 +35,12 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl .getBoolean(com.android.internal.R.bool.config_sms_ask_every_time_support); } @Override protected SubscriptionInfoEntity getDefaultSubscriptionInfo() { return mSubscriptionInfoEntity; } @Override protected int getDefaultSubscriptionId() { int defaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId(); for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { int subId = subInfo.getSubId(); if (subInfo.isActiveSubscriptionId && subId == defaultSmsSubId) { mSubscriptionInfoEntity = subInfo; return subId; } } Loading @@ -65,12 +57,6 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl return mIsAskEverytimeSupported; } @Override public PhoneAccountHandle getDefaultCallingAccountHandle() { // Not supporting calling account override by VoIP return null; } @Override public CharSequence getSummary() { return MobileNetworkUtils.getPreferredStatus(isRtlMode(), mContext, false, Loading tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java +70 −70 Original line number Diff line number Diff line Loading @@ -16,15 +16,10 @@ package com.android.settings.network.telephony; import static androidx.lifecycle.Lifecycle.Event; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; Loading Loading @@ -52,7 +47,6 @@ import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; Loading Loading @@ -133,14 +127,12 @@ public class DefaultSubscriptionControllerTest { SubscriptionUtil.setActiveSubscriptionsForTesting(null); } private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, int carrierId, String displayName, String mcc, String mnc, String countryIso, int cardId, boolean isValid, boolean isActive, boolean isAvailable) { return new SubscriptionInfoEntity(subId, slotId, carrierId, displayName, displayName, 0, mcc, mnc, countryIso, false, cardId, TelephonyManager.DEFAULT_PORT_INDEX, false, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, "1234567890", true, false, isValid, true, isActive, isAvailable, false); private SubscriptionInfoEntity setupSubscriptionInfoEntity( String subId, String displayName, String mcc, String mnc, String countryIso) { return new SubscriptionInfoEntity(subId, 1, 1, displayName, displayName, 0, mcc, mnc, countryIso, false, 1, TelephonyManager.DEFAULT_PORT_INDEX, false, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, "1234567890", true, false, true, true, true, true, false); } @Test Loading @@ -152,22 +144,44 @@ public class DefaultSubscriptionControllerTest { } @Test public void isCallingAccountBindToSubscription_invalidAccount_withoutCrash() { doReturn(null).when(mTelecomManager).getPhoneAccount(any()); public void getSummary_singleSub() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.displayPreference(mScreen); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); assertThat(mListPreference.getSummary().toString()).isEqualTo(SUB_ID_1); } @Test public void getSummary_twoSubs() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.displayPreference(mScreen); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.isCallingAccountBindToSubscription(null); assertThat(mListPreference.getSummary().toString()).isEqualTo(SUB_ID_1); } @Test public void onPreferenceChange_prefChangedToSub2_callbackCalledCorrectly() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); mListPreference.setValue("222"); Loading @@ -177,14 +191,14 @@ public class DefaultSubscriptionControllerTest { @Test public void onPreferenceChange_prefChangedToAlwaysAsk_callbackCalledCorrectly() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); mListPreference.setValue(Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID)); Loading @@ -197,14 +211,14 @@ public class DefaultSubscriptionControllerTest { @Test public void onPreferenceChange_prefBecomesAvailable_onPreferenceChangeCallbackNotNull() { // Start with only one sub active, so the pref is not available mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); assertThat(mController.isAvailable()).isTrue(); Loading @@ -218,13 +232,12 @@ public class DefaultSubscriptionControllerTest { assertThat(mController.getDefaultSubscriptionId()).isEqualTo(2); } @Ignore @Test public void onSubscriptionsChanged_twoSubscriptionsDefaultChanges_selectedEntryGetsUpdated() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); Loading @@ -237,19 +250,19 @@ public class DefaultSubscriptionControllerTest { mController.setDefaultSubscription(Integer.parseInt(mSubInfo2.subId)); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); assertThat(mListPreference.getEntry()).isEqualTo(DISPLAY_NAME_2); assertThat(mListPreference.getValue()).isEqualTo(mSubInfo2); assertThat(mListPreference.getValue()).isEqualTo(mSubInfo2.subId); } @Test public void onSubscriptionsChanged_goFromTwoSubscriptionsToOne_prefDisappears() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); mController.displayPreference(mScreen); Loading @@ -258,7 +271,6 @@ public class DefaultSubscriptionControllerTest { assertThat(mListPreference.isEnabled()).isTrue(); mSubscriptionInfoEntityList.remove(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); assertThat(mController.isAvailable()).isTrue(); Loading @@ -269,20 +281,19 @@ public class DefaultSubscriptionControllerTest { @Test @UiThreadTest public void onSubscriptionsChanged_goFromOneSubscriptionToTwo_prefAppears() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); assertThat(mController.isAvailable()).isTrue(); assertThat(mListPreference.isVisible()).isTrue(); assertThat(mListPreference.isEnabled()).isFalse(); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); assertThat(mController.isAvailable()).isTrue(); Loading @@ -290,15 +301,14 @@ public class DefaultSubscriptionControllerTest { assertThat(mListPreference.isEnabled()).isTrue(); } @Ignore @Test public void onSubscriptionsChanged_goFromTwoToThreeSubscriptions_listGetsUpdated() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo3 = setupSubscriptionInfoEntity(SUB_ID_3, 1, 1, DISPLAY_NAME_3, SUB_MCC_3, SUB_MNC_3, SUB_COUNTRY_ISO_3, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mSubInfo3 = setupSubscriptionInfoEntity(SUB_ID_3, DISPLAY_NAME_3, SUB_MCC_3, SUB_MNC_3, SUB_COUNTRY_ISO_3); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); Loading Loading @@ -334,20 +344,14 @@ public class DefaultSubscriptionControllerTest { return sub; } private class TestDefaultSubscriptionController extends DefaultSubscriptionController { private static class TestDefaultSubscriptionController extends DefaultSubscriptionController { int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private List<SubscriptionInfoEntity> mSubscriptionInfoEntity; TestDefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { super(context, preferenceKey, lifecycle, lifecycleOwner); } @Override protected SubscriptionInfoEntity getDefaultSubscriptionInfo() { return null; } @Override protected int getDefaultSubscriptionId() { return mSubId; Loading @@ -359,12 +363,8 @@ public class DefaultSubscriptionControllerTest { } @Override protected List<SubscriptionInfoEntity> getSubscriptionInfoList() { return mSubscriptionInfoEntity; } public void setSubscriptionInfoList(List<SubscriptionInfoEntity> list) { mSubscriptionInfoEntity = list; public CharSequence getSummary() { return String.valueOf(mSubId); } } } Loading
src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java +0 −8 Original line number Diff line number Diff line Loading @@ -26,25 +26,17 @@ import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; public class CallsDefaultSubscriptionController extends DefaultSubscriptionController { private SubscriptionInfoEntity mSubscriptionInfoEntity; public CallsDefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { super(context, preferenceKey, lifecycle, lifecycleOwner); } @Override protected SubscriptionInfoEntity getDefaultSubscriptionInfo() { return mSubscriptionInfoEntity; } @Override protected int getDefaultSubscriptionId() { int defaultCallSubId = SubscriptionManager.getDefaultVoiceSubscriptionId(); for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { int subId = subInfo.getSubId(); if (subInfo.isActiveSubscriptionId && subId == defaultCallSubId) { mSubscriptionInfoEntity = subInfo; return subId; } } Loading
src/com/android/settings/network/telephony/DefaultSubscriptionController.java +4 −104 Original line number Diff line number Diff line Loading @@ -19,11 +19,7 @@ package com.android.settings.network.telephony; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import android.content.ComponentName; import android.content.Context; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telephony.SubscriptionManager; import android.view.View; Loading Loading @@ -57,15 +53,10 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere protected ListPreference mPreference; protected SubscriptionManager mManager; protected TelecomManager mTelecomManager; protected MobileNetworkRepository mMobileNetworkRepository; protected LifecycleOwner mLifecycleOwner; private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver; private static final String EMERGENCY_ACCOUNT_HANDLE_ID = "E"; private static final ComponentName PSTN_CONNECTION_SERVICE_COMPONENT = new ComponentName("com.android.phone", "com.android.services.telephony.TelephonyConnectionService"); private boolean mIsRtlMode; List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>(); Loading @@ -84,10 +75,6 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere } } /** @return SubscriptionInfo for the default subscription for the service, or null if there * isn't one. */ protected abstract SubscriptionInfoEntity getDefaultSubscriptionInfo(); /** @return the id of the default subscription for the service, or * SubscriptionManager.INVALID_SUBSCRIPTION_ID if there isn't one. */ protected abstract int getDefaultSubscriptionId(); Loading Loading @@ -125,6 +112,8 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); // Set a summary placeholder to reduce flicker. mPreference.setSummaryProvider(pref -> mContext.getString(R.string.summary_placeholder)); updateEntries(); } Loading @@ -133,31 +122,11 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere // Currently, cannot use ListPreference.setSummary() when the summary contains user // generated string, because ListPreference.getSummary() is using String.format() to format // the summary when the summary is set by ListPreference.setSummary(). if (preference != null) { if (preference != null && !mSubInfoEntityList.isEmpty()) { preference.setSummaryProvider(pref -> getSummary()); } } @Override public CharSequence getSummary() { final PhoneAccountHandle handle = getDefaultCallingAccountHandle(); if ((handle != null) && (!isCallingAccountBindToSubscription(handle))) { // display VoIP account in summary when configured through settings within dialer return getLabelFromCallingAccount(handle); } final SubscriptionInfoEntity info = getDefaultSubscriptionInfo(); if (info != null) { // display subscription based account return info.uniqueName; } else { if (isAskEverytimeSupported()) { return mContext.getString(R.string.calls_and_sms_ask_every_time); } else { return ""; } } } @VisibleForTesting void updateEntries() { if (mPreference == null) { Loading @@ -179,6 +148,7 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere final ArrayList<CharSequence> displayNames = new ArrayList<>(); final ArrayList<CharSequence> subscriptionIds = new ArrayList<>(); List<SubscriptionInfoEntity> list = getSubscriptionInfoList(); if (list.isEmpty()) return; if (list.size() == 1) { mPreference.setEnabled(false); Loading Loading @@ -218,76 +188,6 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere } } /** * Get default calling account * * @return current calling account {@link PhoneAccountHandle} */ public PhoneAccountHandle getDefaultCallingAccountHandle() { final PhoneAccountHandle currentSelectPhoneAccount = getTelecomManager().getUserSelectedOutgoingPhoneAccount(); if (currentSelectPhoneAccount == null) { return null; } final List<PhoneAccountHandle> accountHandles = getTelecomManager().getCallCapablePhoneAccounts(false); final PhoneAccountHandle emergencyAccountHandle = new PhoneAccountHandle( PSTN_CONNECTION_SERVICE_COMPONENT, EMERGENCY_ACCOUNT_HANDLE_ID); if (currentSelectPhoneAccount.equals(emergencyAccountHandle)) { return null; } for (PhoneAccountHandle handle : accountHandles) { if (currentSelectPhoneAccount.equals(handle)) { return currentSelectPhoneAccount; } } return null; } @VisibleForTesting TelecomManager getTelecomManager() { if (mTelecomManager == null) { mTelecomManager = mContext.getSystemService(TelecomManager.class); } return mTelecomManager; } @VisibleForTesting PhoneAccount getPhoneAccount(PhoneAccountHandle handle) { return getTelecomManager().getPhoneAccount(handle); } /** * Check if calling account bind to subscription * * @param handle {@link PhoneAccountHandle} for specific calling account */ public boolean isCallingAccountBindToSubscription(PhoneAccountHandle handle) { final PhoneAccount account = getPhoneAccount(handle); if (account == null) { return false; } return account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION); } /** * Get label from calling account * * @param handle to get label from {@link PhoneAccountHandle} * @return label of calling account */ public CharSequence getLabelFromCallingAccount(PhoneAccountHandle handle) { CharSequence label = null; final PhoneAccount account = getPhoneAccount(handle); if (account != null) { label = account.getLabel(); } if (label != null) { label = mContext.getPackageManager().getUserBadgedLabel(label, handle.getUserHandle()); } return (label != null) ? label : ""; } @VisibleForTesting protected List<SubscriptionInfoEntity> getSubscriptionInfoList() { return mSubInfoEntityList; Loading
src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java +0 −14 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.network.telephony; import android.content.Context; import android.telecom.PhoneAccountHandle; import android.telephony.SubscriptionManager; import androidx.lifecycle.LifecycleOwner; Loading @@ -28,7 +27,6 @@ import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; public class SmsDefaultSubscriptionController extends DefaultSubscriptionController { private final boolean mIsAskEverytimeSupported; private SubscriptionInfoEntity mSubscriptionInfoEntity; public SmsDefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { Loading @@ -37,18 +35,12 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl .getBoolean(com.android.internal.R.bool.config_sms_ask_every_time_support); } @Override protected SubscriptionInfoEntity getDefaultSubscriptionInfo() { return mSubscriptionInfoEntity; } @Override protected int getDefaultSubscriptionId() { int defaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId(); for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { int subId = subInfo.getSubId(); if (subInfo.isActiveSubscriptionId && subId == defaultSmsSubId) { mSubscriptionInfoEntity = subInfo; return subId; } } Loading @@ -65,12 +57,6 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl return mIsAskEverytimeSupported; } @Override public PhoneAccountHandle getDefaultCallingAccountHandle() { // Not supporting calling account override by VoIP return null; } @Override public CharSequence getSummary() { return MobileNetworkUtils.getPreferredStatus(isRtlMode(), mContext, false, Loading
tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java +70 −70 Original line number Diff line number Diff line Loading @@ -16,15 +16,10 @@ package com.android.settings.network.telephony; import static androidx.lifecycle.Lifecycle.Event; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; Loading Loading @@ -52,7 +47,6 @@ import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; Loading Loading @@ -133,14 +127,12 @@ public class DefaultSubscriptionControllerTest { SubscriptionUtil.setActiveSubscriptionsForTesting(null); } private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, int carrierId, String displayName, String mcc, String mnc, String countryIso, int cardId, boolean isValid, boolean isActive, boolean isAvailable) { return new SubscriptionInfoEntity(subId, slotId, carrierId, displayName, displayName, 0, mcc, mnc, countryIso, false, cardId, TelephonyManager.DEFAULT_PORT_INDEX, false, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, "1234567890", true, false, isValid, true, isActive, isAvailable, false); private SubscriptionInfoEntity setupSubscriptionInfoEntity( String subId, String displayName, String mcc, String mnc, String countryIso) { return new SubscriptionInfoEntity(subId, 1, 1, displayName, displayName, 0, mcc, mnc, countryIso, false, 1, TelephonyManager.DEFAULT_PORT_INDEX, false, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, "1234567890", true, false, true, true, true, true, false); } @Test Loading @@ -152,22 +144,44 @@ public class DefaultSubscriptionControllerTest { } @Test public void isCallingAccountBindToSubscription_invalidAccount_withoutCrash() { doReturn(null).when(mTelecomManager).getPhoneAccount(any()); public void getSummary_singleSub() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.displayPreference(mScreen); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); assertThat(mListPreference.getSummary().toString()).isEqualTo(SUB_ID_1); } @Test public void getSummary_twoSubs() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.displayPreference(mScreen); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.isCallingAccountBindToSubscription(null); assertThat(mListPreference.getSummary().toString()).isEqualTo(SUB_ID_1); } @Test public void onPreferenceChange_prefChangedToSub2_callbackCalledCorrectly() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); mListPreference.setValue("222"); Loading @@ -177,14 +191,14 @@ public class DefaultSubscriptionControllerTest { @Test public void onPreferenceChange_prefChangedToAlwaysAsk_callbackCalledCorrectly() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); mListPreference.setValue(Integer.toString(SubscriptionManager.INVALID_SUBSCRIPTION_ID)); Loading @@ -197,14 +211,14 @@ public class DefaultSubscriptionControllerTest { @Test public void onPreferenceChange_prefBecomesAvailable_onPreferenceChangeCallbackNotNull() { // Start with only one sub active, so the pref is not available mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); assertThat(mController.isAvailable()).isTrue(); Loading @@ -218,13 +232,12 @@ public class DefaultSubscriptionControllerTest { assertThat(mController.getDefaultSubscriptionId()).isEqualTo(2); } @Ignore @Test public void onSubscriptionsChanged_twoSubscriptionsDefaultChanges_selectedEntryGetsUpdated() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); Loading @@ -237,19 +250,19 @@ public class DefaultSubscriptionControllerTest { mController.setDefaultSubscription(Integer.parseInt(mSubInfo2.subId)); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); assertThat(mListPreference.getEntry()).isEqualTo(DISPLAY_NAME_2); assertThat(mListPreference.getValue()).isEqualTo(mSubInfo2); assertThat(mListPreference.getValue()).isEqualTo(mSubInfo2.subId); } @Test public void onSubscriptionsChanged_goFromTwoSubscriptionsToOne_prefDisappears() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); mController.displayPreference(mScreen); Loading @@ -258,7 +271,6 @@ public class DefaultSubscriptionControllerTest { assertThat(mListPreference.isEnabled()).isTrue(); mSubscriptionInfoEntityList.remove(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); assertThat(mController.isAvailable()).isTrue(); Loading @@ -269,20 +281,19 @@ public class DefaultSubscriptionControllerTest { @Test @UiThreadTest public void onSubscriptionsChanged_goFromOneSubscriptionToTwo_prefAppears() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); mController.displayPreference(mScreen); assertThat(mController.isAvailable()).isTrue(); assertThat(mListPreference.isVisible()).isTrue(); assertThat(mListPreference.isEnabled()).isFalse(); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onActiveSubInfoChanged(mSubscriptionInfoEntityList); assertThat(mController.isAvailable()).isTrue(); Loading @@ -290,15 +301,14 @@ public class DefaultSubscriptionControllerTest { assertThat(mListPreference.isEnabled()).isTrue(); } @Ignore @Test public void onSubscriptionsChanged_goFromTwoToThreeSubscriptions_listGetsUpdated() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubInfo3 = setupSubscriptionInfoEntity(SUB_ID_3, 1, 1, DISPLAY_NAME_3, SUB_MCC_3, SUB_MNC_3, SUB_COUNTRY_ISO_3, 1, true, true, true); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1); mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, SUB_MCC_2, SUB_MNC_2, SUB_COUNTRY_ISO_2); mSubInfo3 = setupSubscriptionInfoEntity(SUB_ID_3, DISPLAY_NAME_3, SUB_MCC_3, SUB_MNC_3, SUB_COUNTRY_ISO_3); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); Loading Loading @@ -334,20 +344,14 @@ public class DefaultSubscriptionControllerTest { return sub; } private class TestDefaultSubscriptionController extends DefaultSubscriptionController { private static class TestDefaultSubscriptionController extends DefaultSubscriptionController { int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private List<SubscriptionInfoEntity> mSubscriptionInfoEntity; TestDefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { super(context, preferenceKey, lifecycle, lifecycleOwner); } @Override protected SubscriptionInfoEntity getDefaultSubscriptionInfo() { return null; } @Override protected int getDefaultSubscriptionId() { return mSubId; Loading @@ -359,12 +363,8 @@ public class DefaultSubscriptionControllerTest { } @Override protected List<SubscriptionInfoEntity> getSubscriptionInfoList() { return mSubscriptionInfoEntity; } public void setSubscriptionInfoList(List<SubscriptionInfoEntity> list) { mSubscriptionInfoEntity = list; public CharSequence getSummary() { return String.valueOf(mSubId); } } }