From cf886407012418ca5b0b82bb0092bec118fb4e90 Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Tue, 28 Mar 2023 13:23:33 +0000 Subject: [PATCH] [Settings] Remove the intent receiver due to the register exception Bug: 274899027 Test: atest SystemUIMicrobenchmark:android.platform.test.scenario.sysui.quicksettings Change-Id: Ia19b91cfd1073f22180cc9679025447b4d5fecd9 --- .../network/DefaultSubscriptionReceiver.java | 59 +++++++++++++++++ .../network/InternetPreferenceController.java | 28 ++++++--- .../network/MobileNetworkRepository.java | 24 +------ .../NetworkProviderCallsSmsController.java | 43 ++++++++++--- .../NetworkProviderSimListController.java | 31 +++++++-- .../CallsDefaultSubscriptionController.java | 6 +- .../DefaultSubscriptionController.java | 23 +++++-- .../MobileDataPreferenceController.java | 11 ++-- .../network/telephony/MobileNetworkUtils.java | 4 +- .../SmsDefaultSubscriptionController.java | 6 +- .../InternetPreferenceControllerTest.java | 25 +++++--- ...NetworkProviderCallsSmsControllerTest.java | 63 +++++++++++++------ .../NetworkProviderSimListControllerTest.java | 29 ++++----- .../DefaultSubscriptionControllerTest.java | 37 +++++------ .../MobileDataPreferenceControllerTest.java | 27 +++----- 15 files changed, 277 insertions(+), 139 deletions(-) create mode 100644 src/com/android/settings/network/DefaultSubscriptionReceiver.java diff --git a/src/com/android/settings/network/DefaultSubscriptionReceiver.java b/src/com/android/settings/network/DefaultSubscriptionReceiver.java new file mode 100644 index 00000000000..cdaf48f0fd7 --- /dev/null +++ b/src/com/android/settings/network/DefaultSubscriptionReceiver.java @@ -0,0 +1,59 @@ +package com.android.settings.network; + +import static com.android.internal.telephony.TelephonyIntents.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.telephony.SubscriptionManager; +import android.telephony.TelephonyManager; + +public class DefaultSubscriptionReceiver extends BroadcastReceiver { + + private Context mContext; + private DefaultSubscriptionListener mListener; + + public DefaultSubscriptionReceiver(Context context, DefaultSubscriptionListener listener) { + mContext = context; + mListener = listener; + } + + public void registerReceiver() { + final IntentFilter filter = new IntentFilter(); + filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); + filter.addAction(SubscriptionManager.ACTION_DEFAULT_SUBSCRIPTION_CHANGED); + filter.addAction(ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED); + filter.addAction(SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED); + mContext.registerReceiver(this, filter); + } + + public void unRegisterReceiver() { + mContext.unregisterReceiver(this); + } + + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED.equals(action)) { + mListener.onDefaultDataChanged(SubscriptionManager.getDefaultDataSubscriptionId()); + } else if (SubscriptionManager.ACTION_DEFAULT_SUBSCRIPTION_CHANGED.equals(action)) { + mListener.onDefaultSubInfoChanged(SubscriptionManager.getDefaultSubscriptionId()); + } else if (TelephonyManager.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED.equals(action)) { + mListener.onDefaultVoiceChanged(SubscriptionManager.getDefaultVoiceSubscriptionId()); + } else if (SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED.equals(action)) { + mListener.onDefaultSmsChanged(SubscriptionManager.getDefaultSmsSubscriptionId()); + } + } + + public interface DefaultSubscriptionListener { + default void onDefaultSubInfoChanged(int defaultSubId) { + } + default void onDefaultDataChanged(int defaultDataSubId) { + } + default void onDefaultVoiceChanged(int defaultVoiceSubId) { + } + default void onDefaultSmsChanged(int defaultSmsSubId) { + } + } +} diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java index 898585c1b21..bc2e71e0688 100644 --- a/src/com/android/settings/network/InternetPreferenceController.java +++ b/src/com/android/settings/network/InternetPreferenceController.java @@ -27,9 +27,7 @@ import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import android.content.Context; import android.graphics.drawable.Drawable; -import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; -import android.util.Log; import androidx.annotation.IdRes; import androidx.annotation.VisibleForTesting; @@ -45,9 +43,7 @@ import com.android.settings.widget.SummaryUpdater; import com.android.settings.wifi.WifiSummaryUpdater; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; -import com.android.settingslib.mobile.dataservice.UiccInfoEntity; import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; @@ -60,7 +56,8 @@ import java.util.Map; */ public class InternetPreferenceController extends AbstractPreferenceController implements LifecycleObserver, SummaryUpdater.OnSummaryChangeListener, - InternetUpdater.InternetChangeListener, MobileNetworkRepository.MobileNetworkCallback { + InternetUpdater.InternetChangeListener, MobileNetworkRepository.MobileNetworkCallback, + DefaultSubscriptionReceiver.DefaultSubscriptionListener { public static final String KEY = "internet_settings"; @@ -71,6 +68,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i private LifecycleOwner mLifecycleOwner; private MobileNetworkRepository mMobileNetworkRepository; private List mSubInfoEntityList = new ArrayList<>(); + private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; + private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver; @VisibleForTesting static Map sIconMap = new HashMap<>(); @@ -102,6 +101,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i mInternetType = mInternetUpdater.getInternetType(); mLifecycleOwner = lifecycleOwner; mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); + mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this); lifecycle.addObserver(this); } @@ -160,6 +160,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i SubscriptionManager.INVALID_SUBSCRIPTION_ID); mMobileNetworkRepository.updateEntity(); mSummaryHelper.register(true); + mDataSubscriptionChangedReceiver.registerReceiver(); + mDefaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId(); } /** @OnLifecycleEvent(ON_PAUSE) */ @@ -167,6 +169,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i public void onPause() { mMobileNetworkRepository.removeRegister(this); mSummaryHelper.register(false); + mDataSubscriptionChangedReceiver.unRegisterReceiver(); } /** @@ -212,11 +215,11 @@ public class InternetPreferenceController extends AbstractPreferenceController i if (subInfo.isActiveDataSubscriptionId) { activeSubInfo = subInfo; } - if (subInfo.isDefaultDataSubscription) { + if (subInfo.getSubId() == getDefaultDataSubscriptionId()) { defaultSubInfo = subInfo; } } - if (activeSubInfo == null) { + if (activeSubInfo == null || defaultSubInfo == null) { return; } activeSubInfo = activeSubInfo.isSubscriptionVisible ? activeSubInfo : defaultSubInfo; @@ -237,9 +240,20 @@ public class InternetPreferenceController extends AbstractPreferenceController i return mSubInfoEntityList; } + @VisibleForTesting + protected int getDefaultDataSubscriptionId() { + return mDefaultDataSubId; + } + @Override public void onAvailableSubInfoChanged(List subInfoEntityList) { mSubInfoEntityList = subInfoEntityList; updateState(mPreference); } + + @Override + public void onDefaultDataChanged(int defaultDataSubId) { + mDefaultDataSubId = defaultDataSubId; + updateState(mPreference); + } } diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java index bec65e2e2da..85430560ae4 100644 --- a/src/com/android/settings/network/MobileNetworkRepository.java +++ b/src/com/android/settings/network/MobileNetworkRepository.java @@ -18,14 +18,9 @@ package com.android.settings.network; import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING; import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT; -import static com.android.internal.telephony.TelephonyIntents.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED; - import android.annotation.NonNull; import android.app.settings.SettingsEnums; -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; @@ -98,7 +93,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions private AirplaneModeObserver mAirplaneModeObserver; private Uri mAirplaneModeSettingUri; private MetricsFeatureProvider mMetricsFeatureProvider; - private IntentFilter mFilter = new IntentFilter(); private Map mDataContentObserverMap = new HashMap<>(); private int mPhysicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX; private int mLogicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX; @@ -111,12 +105,7 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions private Map mSubscriptionInfoMap = new ArrayMap<>(); private Map mTelephonyManagerMap = new HashMap<>(); private Map mTelephonyCallbackMap = new HashMap<>(); - private BroadcastReceiver mDataSubscriptionChangedReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - onSubscriptionsChanged(); - } - }; + @NonNull public static MobileNetworkRepository getInstance(Context context) { synchronized (sInstanceLock) { @@ -142,10 +131,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions mMobileNetworkInfoDao = mMobileNetworkDatabase.mMobileNetworkInfoDao(); mAirplaneModeObserver = new AirplaneModeObserver(new Handler(Looper.getMainLooper())); mAirplaneModeSettingUri = Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON); - mFilter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); - mFilter.addAction(SubscriptionManager.ACTION_DEFAULT_SUBSCRIPTION_CHANGED); - mFilter.addAction(ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED); - mFilter.addAction(SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED); } private class AirplaneModeObserver extends ContentObserver { @@ -187,7 +172,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions mSubscriptionManager.addOnSubscriptionsChangedListener(mContext.getMainExecutor(), this); mAirplaneModeObserver.register(mContext); - mContext.registerReceiver(mDataSubscriptionChangedReceiver, mFilter); if (DEBUG) { Log.d(TAG, "addRegister done"); } @@ -270,7 +254,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions if (sCallbacks.isEmpty()) { mSubscriptionManager.removeOnSubscriptionsChangedListener(this); mAirplaneModeObserver.unRegister(mContext); - mContext.unregisterReceiver(mDataSubscriptionChangedReceiver); mDataContentObserverMap.forEach((id, observer) -> { observer.unRegister(mContext); }); @@ -523,16 +506,11 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions SubscriptionUtil.getFormattedPhoneNumber(context, subInfo), firstRemovableSubInfo == null ? false : firstRemovableSubInfo.getSubscriptionId() == subId, - String.valueOf(SubscriptionUtil.getDefaultSimConfig(context, subId)), SubscriptionUtil.isDefaultSubscription(context, subId), mSubscriptionManager.isValidSubscriptionId(subId), mSubscriptionManager.isUsableSubscriptionId(subId), mSubscriptionManager.isActiveSubscriptionId(subId), true /*availableSubInfo*/, - mSubscriptionManager.getDefaultVoiceSubscriptionId() == subId, - mSubscriptionManager.getDefaultSmsSubscriptionId() == subId, - mSubscriptionManager.getDefaultDataSubscriptionId() == subId, - mSubscriptionManager.getDefaultSubscriptionId() == subId, mSubscriptionManager.getActiveDataSubscriptionId() == subId); } } diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsController.java b/src/com/android/settings/network/NetworkProviderCallsSmsController.java index 0c71aa71595..5eec3d9e2fb 100644 --- a/src/com/android/settings/network/NetworkProviderCallsSmsController.java +++ b/src/com/android/settings/network/NetworkProviderCallsSmsController.java @@ -38,14 +38,13 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; -import com.android.settingslib.mobile.dataservice.UiccInfoEntity; import java.util.List; public class NetworkProviderCallsSmsController extends AbstractPreferenceController implements - LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback { + LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback, + DefaultSubscriptionReceiver.DefaultSubscriptionListener { private static final String TAG = "NetworkProviderCallsSmsController"; private static final String KEY = "calls_and_sms"; @@ -58,6 +57,9 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl private LifecycleOwner mLifecycleOwner; private MobileNetworkRepository mMobileNetworkRepository; private List mSubInfoEntityList; + private int mDefaultVoiceSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; + private int mDefaultSmsSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; + private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver; /** * The summary text and click behavior of the "Calls & SMS" item on the @@ -73,6 +75,7 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl == View.LAYOUT_DIRECTION_RTL; mLifecycleOwner = lifecycleOwner; mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); + mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this); if (lifecycle != null) { lifecycle.addObserver(this); } @@ -83,11 +86,15 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl mMobileNetworkRepository.addRegister(mLifecycleOwner, this, SubscriptionManager.INVALID_SUBSCRIPTION_ID); mMobileNetworkRepository.updateEntity(); + mDataSubscriptionChangedReceiver.registerReceiver(); + mDefaultVoiceSubId = SubscriptionManager.getDefaultVoiceSubscriptionId(); + mDefaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId(); } @OnLifecycleEvent(Event.ON_PAUSE) public void onPause() { mMobileNetworkRepository.removeRegister(this); + mDataSubscriptionChangedReceiver.unRegisterReceiver(); } @Override @@ -145,16 +152,16 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl protected CharSequence getPreferredStatus(SubscriptionInfoEntity subInfo, int subsSize, int subId) { String status = ""; - boolean isDataPreferred = subInfo.isDefaultVoiceSubscription; - boolean isSmsPreferred = subInfo.isDefaultSmsSubscription; + boolean isCallPreferred = subInfo.getSubId() == getDefaultVoiceSubscriptionId(); + boolean isSmsPreferred = subInfo.getSubId() == getDefaultSmsSubscriptionId(); if (!subInfo.isValidSubscription || !isInService(subId)) { status = setSummaryResId(subsSize > 1 ? R.string.calls_sms_unavailable : R.string.calls_sms_temp_unavailable); } else { - if (isDataPreferred && isSmsPreferred) { + if (isCallPreferred && isSmsPreferred) { status = setSummaryResId(R.string.calls_sms_preferred); - } else if (isDataPreferred) { + } else if (isCallPreferred) { status = setSummaryResId(R.string.calls_sms_calls_preferred); } else if (isSmsPreferred) { status = setSummaryResId(R.string.calls_sms_sms_preferred); @@ -226,4 +233,26 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl mSubInfoEntityList = activeSubInfoList; update(); } + + @VisibleForTesting + protected int getDefaultVoiceSubscriptionId() { + return mDefaultVoiceSubId; + } + + @VisibleForTesting + protected int getDefaultSmsSubscriptionId() { + return mDefaultSmsSubId; + } + + @Override + public void onDefaultVoiceChanged(int defaultVoiceSubId) { + mDefaultVoiceSubId = defaultVoiceSubId; + update(); + } + + @Override + public void onDefaultSmsChanged(int defaultSmsSubId) { + mDefaultSmsSubId = defaultSmsSubId; + update(); + } } diff --git a/src/com/android/settings/network/NetworkProviderSimListController.java b/src/com/android/settings/network/NetworkProviderSimListController.java index db27291bc76..89cb73c7933 100644 --- a/src/com/android/settings/network/NetworkProviderSimListController.java +++ b/src/com/android/settings/network/NetworkProviderSimListController.java @@ -23,7 +23,6 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.telephony.SubscriptionManager; import android.util.ArrayMap; -import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleOwner; @@ -38,16 +37,15 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; -import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; -import com.android.settingslib.mobile.dataservice.UiccInfoEntity; import java.util.ArrayList; import java.util.List; import java.util.Map; public class NetworkProviderSimListController extends AbstractPreferenceController implements - LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback { + LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback, + DefaultSubscriptionReceiver.DefaultSubscriptionListener { private static final String TAG = "NetworkProviderSimListCtrl"; private static final String KEY_PREFERENCE_CATEGORY_SIM = "provider_model_sim_category"; private static final String KEY_PREFERENCE_SIM = "provider_model_sim_list"; @@ -58,6 +56,7 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll private LifecycleOwner mLifecycleOwner; private MobileNetworkRepository mMobileNetworkRepository; private List mSubInfoEntityList = new ArrayList<>(); + private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver; public NetworkProviderSimListController(Context context, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { @@ -66,6 +65,7 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll mPreferences = new ArrayMap<>(); mLifecycleOwner = lifecycleOwner; mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); + mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this); lifecycle.addObserver(this); } @@ -74,11 +74,13 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll mMobileNetworkRepository.addRegister(mLifecycleOwner, this, SubscriptionManager.INVALID_SUBSCRIPTION_ID); mMobileNetworkRepository.updateEntity(); + mDataSubscriptionChangedReceiver.registerReceiver(); } @OnLifecycleEvent(ON_PAUSE) public void onPause() { mMobileNetworkRepository.removeRegister(this); + mDataSubscriptionChangedReceiver.unRegisterReceiver(); } @Override @@ -130,7 +132,8 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll public CharSequence getSummary(SubscriptionInfoEntity subInfo, CharSequence displayName) { if (subInfo.isActiveSubscriptionId) { - CharSequence config = subInfo.defaultSimConfig; + CharSequence config = SubscriptionUtil.getDefaultSimConfig(mContext, + subInfo.getSubId()); CharSequence summary = mContext.getResources().getString( R.string.sim_category_active_sim); if (config == "") { @@ -185,4 +188,22 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll refreshSummary(mPreferenceCategory); update(); } + + @Override + public void onDefaultDataChanged(int defaultDataSubId) { + refreshSummary(mPreferenceCategory); + update(); + } + + @Override + public void onDefaultVoiceChanged(int defaultVoiceSubId) { + refreshSummary(mPreferenceCategory); + update(); + } + + @Override + public void onDefaultSmsChanged(int defaultSmsSubId) { + refreshSummary(mPreferenceCategory); + update(); + } } diff --git a/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java b/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java index de45e626014..249c85542b0 100644 --- a/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java +++ b/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java @@ -40,10 +40,12 @@ public class CallsDefaultSubscriptionController extends DefaultSubscriptionContr @Override protected int getDefaultSubscriptionId() { + int defaultCallSubId = SubscriptionManager.getDefaultVoiceSubscriptionId(); for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { - if (subInfo.isActiveSubscriptionId && subInfo.isDefaultVoiceSubscription) { + int subId = subInfo.getSubId(); + if (subInfo.isActiveSubscriptionId && subId == defaultCallSubId) { mSubscriptionInfoEntity = subInfo; - return Integer.parseInt(subInfo.subId); + return subId; } } return SubscriptionManager.INVALID_SUBSCRIPTION_ID; diff --git a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java index c8f7acff834..cb18b331c2a 100644 --- a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java +++ b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java @@ -36,11 +36,10 @@ import androidx.preference.PreferenceScreen; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; +import com.android.settings.network.DefaultSubscriptionReceiver; import com.android.settings.network.MobileNetworkRepository; import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; -import com.android.settingslib.mobile.dataservice.UiccInfoEntity; import java.util.ArrayList; import java.util.List; @@ -52,7 +51,8 @@ import java.util.List; */ public abstract class DefaultSubscriptionController extends TelephonyBasePreferenceController implements LifecycleObserver, Preference.OnPreferenceChangeListener, - MobileNetworkRepository.MobileNetworkCallback { + MobileNetworkRepository.MobileNetworkCallback, + DefaultSubscriptionReceiver.DefaultSubscriptionListener { private static final String TAG = "DefaultSubController"; protected ListPreference mPreference; @@ -60,6 +60,7 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere 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 = @@ -76,6 +77,7 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); + mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this); mLifecycleOwner = lifecycleOwner; if (lifecycle != null) { lifecycle.addObserver(this); @@ -110,12 +112,13 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere // Can not get default subId from database until get the callback, add register by subId // later. mMobileNetworkRepository.addRegisterBySubId(getDefaultSubscriptionId()); - + mDataSubscriptionChangedReceiver.registerReceiver(); } @OnLifecycleEvent(ON_PAUSE) public void onPause() { mMobileNetworkRepository.removeRegister(this); + mDataSubscriptionChangedReceiver.unRegisterReceiver(); } @Override @@ -308,4 +311,16 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere updateEntries(); refreshSummary(mPreference); } + + @Override + public void onDefaultVoiceChanged(int defaultVoiceSubId) { + updateEntries(); + refreshSummary(mPreference); + } + + @Override + public void onDefaultSmsChanged(int defaultSmsSubId) { + updateEntries(); + refreshSummary(mPreference); + } } diff --git a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java index cf78942972c..4b6a72851e6 100644 --- a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java +++ b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java @@ -20,8 +20,6 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; -import android.os.Handler; -import android.os.Looper; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; @@ -36,13 +34,11 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.R; -import com.android.settings.network.MobileDataContentObserver; import com.android.settings.network.MobileNetworkRepository; import com.android.settings.wifi.WifiPickerTrackerHelper; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; -import com.android.settingslib.mobile.dataservice.UiccInfoEntity; import java.util.ArrayList; import java.util.List; @@ -234,13 +230,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon public void onActiveSubInfoChanged(List subInfoEntityList) { mSubscriptionInfoEntityList = subInfoEntityList; mSubscriptionInfoEntityList.forEach(entity -> { - if (Integer.parseInt(entity.subId) == mSubId) { + if (entity.getSubId() == mSubId) { mSubscriptionInfoEntity = entity; } }); + int subId = mSubscriptionInfoEntity.getSubId(); if (mSubscriptionInfoEntity != null - && mSubscriptionInfoEntity.isDefaultDataSubscription) { - mDefaultSubId = Integer.parseInt(mSubscriptionInfoEntity.subId); + && subId == SubscriptionManager.getDefaultDataSubscriptionId()) { + mDefaultSubId = subId; } update(); refreshSummary(mPreference); diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java index 265eb167fed..02455a18c5f 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java +++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java @@ -1011,7 +1011,7 @@ public class MobileNetworkUtils { private static CharSequence getPreferredCallStatus(Context context, SubscriptionInfoEntity subInfo) { String status = ""; - if (subInfo.isDefaultVoiceSubscription) { + if (subInfo.getSubId() == SubscriptionManager.getDefaultVoiceSubscriptionId()) { status = setSummaryResId(context, R.string.calls_sms_preferred); } @@ -1021,7 +1021,7 @@ public class MobileNetworkUtils { private static CharSequence getPreferredSmsStatus(Context context, SubscriptionInfoEntity subInfo) { String status = ""; - if (subInfo.isDefaultSmsSubscription) { + if (subInfo.getSubId() == SubscriptionManager.getDefaultSmsSubscriptionId()) { status = setSummaryResId(context, R.string.calls_sms_preferred); } diff --git a/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java b/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java index fddd3581926..be3751308dc 100644 --- a/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java +++ b/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java @@ -44,10 +44,12 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl @Override protected int getDefaultSubscriptionId() { + int defaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId(); for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { - if (subInfo.isActiveSubscriptionId && subInfo.isDefaultSmsSubscription) { + int subId = subInfo.getSubId(); + if (subInfo.isActiveSubscriptionId && subId == defaultSmsSubId) { mSubscriptionInfoEntity = subInfo; - return Integer.parseInt(subInfo.subId); + return subId; } } return SubscriptionManager.INVALID_SUBSCRIPTION_ID; diff --git a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java index 8beeffb96e8..4e9339f8ec1 100644 --- a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java @@ -129,6 +129,8 @@ public class InternetPreferenceControllerTest { private class MockInternetPreferenceController extends com.android.settings.network.InternetPreferenceController { + + private int mDefaultDataSubscriptionId; public MockInternetPreferenceController(Context context, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { super(context, lifecycle, lifecycleOwner); @@ -145,18 +147,26 @@ public class InternetPreferenceControllerTest { mSubscriptionInfoEntity = list; } + @Override + protected int getDefaultDataSubscriptionId() { + return mDefaultDataSubscriptionId; + } + + public void setDefaultDataSubscriptionId(int subscriptionId) { + mDefaultDataSubscriptionId = subscriptionId; + } + } private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, int carrierId, String displayName, String mcc, String mnc, String countryIso, int cardId, boolean isVisible, boolean isValid, boolean isActive, boolean isAvailable, - boolean isDefaultData, boolean isActiveData) { + boolean isActiveData) { 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, isVisible, - "1234567890", true, "default", false, isValid, true, isActive, isAvailable, false, - false, isDefaultData, false, isActiveData); + "1234567890", true, false, isValid, true, isActive, isAvailable, isActiveData); } @Test @@ -183,7 +193,7 @@ public class InternetPreferenceControllerTest { mController.onResume(); mController.onPause(); - verify(mContext).unregisterReceiver(any(BroadcastReceiver.class)); + verify(mContext, times(2)).unregisterReceiver(any(BroadcastReceiver.class)); verify(mConnectivityManager, times(2)).unregisterNetworkCallback( any(ConnectivityManager.NetworkCallback.class)); } @@ -218,10 +228,11 @@ public class InternetPreferenceControllerTest { @Test public void updateCellularSummary_getActiveSubscriptionInfo_cbrs() { + mController.setDefaultDataSubscriptionId(Integer.parseInt(SUB_ID_2)); mActiveSubInfo = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, false, true, true, true, false, true); + SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, false, true, true, true, true); mDefaultDataSubInfo = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, - SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, false, true, true, true, true, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, false, true, true, true, false); mSubscriptionInfoEntityList.add(mActiveSubInfo); mSubscriptionInfoEntityList.add(mDefaultDataSubInfo); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); @@ -231,7 +242,7 @@ public class InternetPreferenceControllerTest { assertThat(mPreference.getSummary()).isEqualTo(DISPLAY_NAME_2); mActiveSubInfo = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true, true, false, true); + SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true, true, true); mSubscriptionInfoEntityList.add(mActiveSubInfo); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.onAvailableSubInfoChanged(mSubscriptionInfoEntityList); diff --git a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java index 007251a5a42..51aecc51000 100644 --- a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java +++ b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java @@ -100,6 +100,8 @@ public class NetworkProviderCallsSmsControllerTest { private List mSubscriptionInfoEntity; private boolean mIsInService; + private int mDefaultVoiceSubscriptionId; + private int mDefaultSmsSubscriptionId; @Override protected List getSubscriptionInfoList() { @@ -118,6 +120,24 @@ public class NetworkProviderCallsSmsControllerTest { public void setInService(boolean inService) { mIsInService = inService; } + + @Override + protected int getDefaultVoiceSubscriptionId() { + return mDefaultVoiceSubscriptionId; + } + + @Override + protected int getDefaultSmsSubscriptionId() { + return mDefaultSmsSubscriptionId; + } + + public void setDefaultVoiceSubscriptionId(int subscriptionId) { + mDefaultVoiceSubscriptionId = subscriptionId; + } + + public void setDefaultSmsSubscriptionId(int subscriptionId) { + mDefaultSmsSubscriptionId = subscriptionId; + } } @Before @@ -163,15 +183,13 @@ public class NetworkProviderCallsSmsControllerTest { 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, - boolean isDefaultCall, boolean isDefaultSms) { + 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, "default", false, isValid, - true, isActive, isAvailable, isDefaultCall, isDefaultSms, false, false, - false); + "1234567890", true, false, isValid, + true, isActive, isAvailable, false); } @Test @@ -181,7 +199,7 @@ public class NetworkProviderCallsSmsControllerTest { mSubInfo1 = setupSubscriptionInfoEntity(INVALID_SUB_ID, SubscriptionManager.INVALID_SIM_SLOT_INDEX, TelephonyManager.UNKNOWN_CARRIER_ID, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, - TelephonyManager.UNINITIALIZED_CARD_ID, false, true, true, false, false); + TelephonyManager.UNINITIALIZED_CARD_ID, false, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); displayPreferenceWithLifecycle(); @@ -202,9 +220,9 @@ public class NetworkProviderCallsSmsControllerTest { mSubInfo1 = setupSubscriptionInfoEntity(INVALID_SUB_ID, SubscriptionManager.INVALID_SIM_SLOT_INDEX, TelephonyManager.UNKNOWN_CARRIER_ID, DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, - TelephonyManager.UNINITIALIZED_CARD_ID, false, true, true, false, false); + TelephonyManager.UNINITIALIZED_CARD_ID, false, 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); @@ -226,7 +244,7 @@ public class NetworkProviderCallsSmsControllerTest { public void getSummary_oneSubscription_returnDisplayName() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true, false, false); + SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); displayPreferenceWithLifecycle(); @@ -239,9 +257,9 @@ public class NetworkProviderCallsSmsControllerTest { public void getSummary_allSubscriptionsHaveNoPreferredStatus_returnDisplayName() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true, false, false); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); @@ -257,10 +275,13 @@ public class NetworkProviderCallsSmsControllerTest { @UiThreadTest public void getSummary_oneSubscriptionsIsCallPreferredTwoIsSmsPreferred_returnStatus() { + mController.setDefaultVoiceSubscriptionId(Integer.parseInt(SUB_ID_1)); + mController.setDefaultSmsSubscriptionId(Integer.parseInt(SUB_ID_2)); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true, true, false); + 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, false, true); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); @@ -284,10 +305,13 @@ public class NetworkProviderCallsSmsControllerTest { @UiThreadTest public void getSummary_oneSubscriptionsIsSmsPreferredTwoIsCallPreferred_returnStatus() { + mController.setDefaultSmsSubscriptionId(Integer.parseInt(SUB_ID_1)); + mController.setDefaultVoiceSubscriptionId(Integer.parseInt(SUB_ID_2)); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true, false, 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, true, false); + SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); + mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 2, 2, DISPLAY_NAME_2, SUB_MCC_2, + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); @@ -311,10 +335,13 @@ public class NetworkProviderCallsSmsControllerTest { @UiThreadTest public void getSummary_oneSubscriptionsIsSmsPreferredAndIsCallPreferred_returnStatus() { + mController.setDefaultSmsSubscriptionId(Integer.parseInt(SUB_ID_1)); + mController.setDefaultVoiceSubscriptionId(Integer.parseInt(SUB_ID_1)); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true, true, true); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); diff --git a/tests/unit/src/com/android/settings/network/NetworkProviderSimListControllerTest.java b/tests/unit/src/com/android/settings/network/NetworkProviderSimListControllerTest.java index 1c4238a8663..c4e0f64c22c 100644 --- a/tests/unit/src/com/android/settings/network/NetworkProviderSimListControllerTest.java +++ b/tests/unit/src/com/android/settings/network/NetworkProviderSimListControllerTest.java @@ -152,13 +152,11 @@ public class NetworkProviderSimListControllerTest { private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, int carrierId, String displayName, String mcc, String mnc, String countryIso, - int cardId, CharSequence defaultSimConfig, boolean isValid, boolean isActive, - boolean isAvailable, boolean isDefaultCall, boolean isDefaultSms) { + 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, defaultSimConfig.toString(), false, isValid, true, isActive, - isAvailable, isDefaultCall, isDefaultSms, false, false, false); + "1234567890", true, false, isValid, true, isActive, isAvailable, false); } private String setSummaryResId(String resName, String value) { @@ -173,7 +171,7 @@ public class NetworkProviderSimListControllerTest { @UiThreadTest public void getSummary_tapToActivePSim() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, "", true, false, true, false, false); + SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, false, true); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); displayPreferenceWithLifecycle(); @@ -186,7 +184,7 @@ public class NetworkProviderSimListControllerTest { @UiThreadTest public void getSummary_inactivePSim() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, "", true, false, true, false, false); + SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, false, true); doReturn(true).when(mSubscriptionManager).canDisablePhysicalSubscription(); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); @@ -201,15 +199,13 @@ public class NetworkProviderSimListControllerTest { @UiThreadTest public void getSummary_defaultCalls() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, - setSummaryResId("sim_category_default_active_sim", - setSummaryResId("default_active_sim_calls")), true, true, true, true, - false); + SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); displayPreferenceWithLifecycle(); - CharSequence defaultCall = mSubInfo1.defaultSimConfig; + CharSequence defaultCall = SubscriptionUtil.getDefaultSimConfig(mContext, + Integer.parseInt(SUB_ID_1)); final StringBuilder summary = new StringBuilder(); summary.append(setSummaryResId("sim_category_active_sim", null)) .append(defaultCall); @@ -225,14 +221,13 @@ public class NetworkProviderSimListControllerTest { .append(", ") .append(setSummaryResId("default_active_sim_sms")); mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, - setSummaryResId("sim_category_default_active_sim", defaultConfig.toString()), true, - true, true, true, true); + SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); displayPreferenceWithLifecycle(); - CharSequence defaultCall = mSubInfo1.defaultSimConfig; + CharSequence defaultCall = SubscriptionUtil.getDefaultSimConfig(mContext, + Integer.parseInt(SUB_ID_1)); final StringBuilder summary = new StringBuilder(); summary.append(setSummaryResId("sim_category_active_sim", null)) .append(defaultCall); @@ -245,9 +240,9 @@ public class NetworkProviderSimListControllerTest { @UiThreadTest public void getAvailablePhysicalSubscription_withTwoPhysicalSims_returnTwo() { mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, - SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, "", true, true, true, true, true); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); diff --git a/tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java index ffc9f9b81b9..bbec5bb5a9f 100644 --- a/tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java @@ -135,15 +135,12 @@ public class DefaultSubscriptionControllerTest { 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, - boolean isDefaultCall, boolean isDefaultSms) { + 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, "default", false, isValid, - true, isActive, isAvailable, isDefaultCall, - isDefaultSms, false, false, false); + "1234567890", true, false, isValid, true, isActive, isAvailable, false); } @Test @@ -164,9 +161,9 @@ public class DefaultSubscriptionControllerTest { @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, true, true); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); @@ -181,9 +178,9 @@ 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, true, true); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); @@ -201,9 +198,9 @@ public class DefaultSubscriptionControllerTest { 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, true, true); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); @@ -225,9 +222,9 @@ public class DefaultSubscriptionControllerTest { @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, true, true); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); @@ -246,9 +243,9 @@ public class DefaultSubscriptionControllerTest { @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, true, true); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); @@ -273,9 +270,9 @@ public class DefaultSubscriptionControllerTest { @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, true, true); + 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, false, false); + SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true); mSubscriptionInfoEntityList.add(mSubInfo1); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); @@ -297,11 +294,11 @@ public class DefaultSubscriptionControllerTest { @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, true, true); + 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, false, false); + 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, false, false); + SUB_MNC_3, SUB_COUNTRY_ISO_3, 1, true, true, true); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo2); diff --git a/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java index 16e3963b738..03733960f1a 100644 --- a/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java @@ -114,15 +114,13 @@ public class MobileDataPreferenceControllerTest { } private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, String displayName, - boolean isOpportunistic, boolean isValid, boolean isActive, boolean isAvailable, - boolean isDefaultData) { + boolean isOpportunistic, boolean isValid, boolean isActive, boolean isAvailable) { int id = Integer.parseInt(subId); return new SubscriptionInfoEntity(subId, id, id, displayName, displayName, 0, "mcc", "mnc", "countryIso", false, id, TelephonyManager.DEFAULT_PORT_INDEX, isOpportunistic, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, - "1234567890", true, "default", false, isValid, true, isActive, isAvailable, false, - false, isDefaultData, false, false); + "1234567890", true, false, isValid, true, isActive, isAvailable, false); } private MobileNetworkInfoEntity setupMobileNetworkInfoEntity(String subId, @@ -141,8 +139,7 @@ public class MobileDataPreferenceControllerTest { @Test public void isDialogNeeded_disableSingleSim_returnFalse() { - mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true, - true); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true); doReturn(1).when(mTelephonyManager).getActiveModemCount(); @@ -151,14 +148,12 @@ public class MobileDataPreferenceControllerTest { @Test public void isDialogNeeded_enableNonDefaultSimInMultiSimMode_returnTrue() { - mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true, - false); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), false); doReturn(1).when(mTelephonyManager).getActiveModemCount(); // Ideally, it would be better if we could set the default data subscription to // SUB_ID_OTHER, and set that as an active subscription id. - mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, false, true, true, true, - true); + mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, false, true, true, true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true); doReturn(2).when(mTelephonyManager).getActiveModemCount(); @@ -180,8 +175,7 @@ public class MobileDataPreferenceControllerTest { @Test public void onPreferenceChange_singleSim_On_shouldEnableData() { - mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true, - true); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true); mController.setSubscriptionInfoEntity(mSubInfo1); mController.setMobileNetworkInfoEntity(mNetworkInfo1); @@ -194,8 +188,7 @@ public class MobileDataPreferenceControllerTest { @Test public void onPreferenceChange_multiSim_On_shouldEnableData() { - mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true, - true); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true); mController.setSubscriptionInfoEntity(mSubInfo1); mController.setMobileNetworkInfoEntity(mNetworkInfo1); @@ -219,8 +212,7 @@ public class MobileDataPreferenceControllerTest { @Test public void updateState_opportunistic_disabled() { - mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true, - true); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true); mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1); mController.updateState(mPreference); @@ -232,8 +224,7 @@ public class MobileDataPreferenceControllerTest { @Test public void updateState_notOpportunistic_enabled() { - mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true, - true); + mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true); mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1); mController.updateState(mPreference);