Merge "[Settings] Remove the intent receiver due to the register exception" into udc-dev

This commit is contained in:
Zoey Chen
2023-03-29 09:39:33 +00:00
committed by Android (Google) Code Review
15 changed files with 277 additions and 139 deletions

View File

@@ -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) {
}
}
}

View File

@@ -27,9 +27,7 @@ import static com.android.settings.network.InternetUpdater.INTERNET_WIFI;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.util.Log;
import androidx.annotation.IdRes; import androidx.annotation.IdRes;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
@@ -45,9 +43,7 @@ import com.android.settings.widget.SummaryUpdater;
import com.android.settings.wifi.WifiSummaryUpdater; import com.android.settings.wifi.WifiSummaryUpdater;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController; 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.SubscriptionInfoEntity;
import com.android.settingslib.mobile.dataservice.UiccInfoEntity;
import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.utils.ThreadUtils;
import java.util.ArrayList; import java.util.ArrayList;
@@ -60,7 +56,8 @@ import java.util.Map;
*/ */
public class InternetPreferenceController extends AbstractPreferenceController implements public class InternetPreferenceController extends AbstractPreferenceController implements
LifecycleObserver, SummaryUpdater.OnSummaryChangeListener, LifecycleObserver, SummaryUpdater.OnSummaryChangeListener,
InternetUpdater.InternetChangeListener, MobileNetworkRepository.MobileNetworkCallback { InternetUpdater.InternetChangeListener, MobileNetworkRepository.MobileNetworkCallback,
DefaultSubscriptionReceiver.DefaultSubscriptionListener {
public static final String KEY = "internet_settings"; public static final String KEY = "internet_settings";
@@ -71,6 +68,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i
private LifecycleOwner mLifecycleOwner; private LifecycleOwner mLifecycleOwner;
private MobileNetworkRepository mMobileNetworkRepository; private MobileNetworkRepository mMobileNetworkRepository;
private List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>(); private List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>();
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver;
@VisibleForTesting @VisibleForTesting
static Map<Integer, Integer> sIconMap = new HashMap<>(); static Map<Integer, Integer> sIconMap = new HashMap<>();
@@ -102,6 +101,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i
mInternetType = mInternetUpdater.getInternetType(); mInternetType = mInternetUpdater.getInternetType();
mLifecycleOwner = lifecycleOwner; mLifecycleOwner = lifecycleOwner;
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this);
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
@@ -160,6 +160,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i
SubscriptionManager.INVALID_SUBSCRIPTION_ID); SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mMobileNetworkRepository.updateEntity(); mMobileNetworkRepository.updateEntity();
mSummaryHelper.register(true); mSummaryHelper.register(true);
mDataSubscriptionChangedReceiver.registerReceiver();
mDefaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
} }
/** @OnLifecycleEvent(ON_PAUSE) */ /** @OnLifecycleEvent(ON_PAUSE) */
@@ -167,6 +169,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i
public void onPause() { public void onPause() {
mMobileNetworkRepository.removeRegister(this); mMobileNetworkRepository.removeRegister(this);
mSummaryHelper.register(false); mSummaryHelper.register(false);
mDataSubscriptionChangedReceiver.unRegisterReceiver();
} }
/** /**
@@ -212,11 +215,11 @@ public class InternetPreferenceController extends AbstractPreferenceController i
if (subInfo.isActiveDataSubscriptionId) { if (subInfo.isActiveDataSubscriptionId) {
activeSubInfo = subInfo; activeSubInfo = subInfo;
} }
if (subInfo.isDefaultDataSubscription) { if (subInfo.getSubId() == getDefaultDataSubscriptionId()) {
defaultSubInfo = subInfo; defaultSubInfo = subInfo;
} }
} }
if (activeSubInfo == null) { if (activeSubInfo == null || defaultSubInfo == null) {
return; return;
} }
activeSubInfo = activeSubInfo.isSubscriptionVisible ? activeSubInfo : defaultSubInfo; activeSubInfo = activeSubInfo.isSubscriptionVisible ? activeSubInfo : defaultSubInfo;
@@ -237,9 +240,20 @@ public class InternetPreferenceController extends AbstractPreferenceController i
return mSubInfoEntityList; return mSubInfoEntityList;
} }
@VisibleForTesting
protected int getDefaultDataSubscriptionId() {
return mDefaultDataSubId;
}
@Override @Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) { public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
mSubInfoEntityList = subInfoEntityList; mSubInfoEntityList = subInfoEntityList;
updateState(mPreference); updateState(mPreference);
} }
@Override
public void onDefaultDataChanged(int defaultDataSubId) {
mDefaultDataSubId = defaultDataSubId;
updateState(mPreference);
}
} }

View File

@@ -18,14 +18,9 @@ package com.android.settings.network;
import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING; import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING;
import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT; 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.annotation.NonNull;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
@@ -99,7 +94,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
private AirplaneModeObserver mAirplaneModeObserver; private AirplaneModeObserver mAirplaneModeObserver;
private Uri mAirplaneModeSettingUri; private Uri mAirplaneModeSettingUri;
private MetricsFeatureProvider mMetricsFeatureProvider; private MetricsFeatureProvider mMetricsFeatureProvider;
private IntentFilter mFilter = new IntentFilter();
private Map<Integer, MobileDataContentObserver> mDataContentObserverMap = new HashMap<>(); private Map<Integer, MobileDataContentObserver> mDataContentObserverMap = new HashMap<>();
private int mPhysicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX; private int mPhysicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
private int mLogicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX; private int mLogicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
@@ -112,12 +106,7 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
private Map<Integer, SubscriptionInfo> mSubscriptionInfoMap = new ArrayMap<>(); private Map<Integer, SubscriptionInfo> mSubscriptionInfoMap = new ArrayMap<>();
private Map<Integer, TelephonyManager> mTelephonyManagerMap = new HashMap<>(); private Map<Integer, TelephonyManager> mTelephonyManagerMap = new HashMap<>();
private Map<Integer, PhoneCallStateTelephonyCallback> mTelephonyCallbackMap = new HashMap<>(); private Map<Integer, PhoneCallStateTelephonyCallback> mTelephonyCallbackMap = new HashMap<>();
private BroadcastReceiver mDataSubscriptionChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
onSubscriptionsChanged();
}
};
@NonNull @NonNull
public static MobileNetworkRepository getInstance(Context context) { public static MobileNetworkRepository getInstance(Context context) {
synchronized (sInstanceLock) { synchronized (sInstanceLock) {
@@ -143,10 +132,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
mMobileNetworkInfoDao = mMobileNetworkDatabase.mMobileNetworkInfoDao(); mMobileNetworkInfoDao = mMobileNetworkDatabase.mMobileNetworkInfoDao();
mAirplaneModeObserver = new AirplaneModeObserver(new Handler(Looper.getMainLooper())); mAirplaneModeObserver = new AirplaneModeObserver(new Handler(Looper.getMainLooper()));
mAirplaneModeSettingUri = Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON); 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 { private class AirplaneModeObserver extends ContentObserver {
@@ -188,7 +173,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
mSubscriptionManager.addOnSubscriptionsChangedListener(mContext.getMainExecutor(), mSubscriptionManager.addOnSubscriptionsChangedListener(mContext.getMainExecutor(),
this); this);
mAirplaneModeObserver.register(mContext); mAirplaneModeObserver.register(mContext);
mContext.registerReceiver(mDataSubscriptionChangedReceiver, mFilter);
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "addRegister done"); Log.d(TAG, "addRegister done");
} }
@@ -271,7 +255,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
if (sCallbacks.isEmpty()) { if (sCallbacks.isEmpty()) {
mSubscriptionManager.removeOnSubscriptionsChangedListener(this); mSubscriptionManager.removeOnSubscriptionsChangedListener(this);
mAirplaneModeObserver.unRegister(mContext); mAirplaneModeObserver.unRegister(mContext);
mContext.unregisterReceiver(mDataSubscriptionChangedReceiver);
mDataContentObserverMap.forEach((id, observer) -> { mDataContentObserverMap.forEach((id, observer) -> {
observer.unRegister(mContext); observer.unRegister(mContext);
}); });
@@ -524,16 +507,11 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
SubscriptionUtil.getFormattedPhoneNumber(context, subInfo), SubscriptionUtil.getFormattedPhoneNumber(context, subInfo),
firstRemovableSubInfo == null ? false firstRemovableSubInfo == null ? false
: firstRemovableSubInfo.getSubscriptionId() == subId, : firstRemovableSubInfo.getSubscriptionId() == subId,
String.valueOf(SubscriptionUtil.getDefaultSimConfig(context, subId)),
SubscriptionUtil.isDefaultSubscription(context, subId), SubscriptionUtil.isDefaultSubscription(context, subId),
mSubscriptionManager.isValidSubscriptionId(subId), mSubscriptionManager.isValidSubscriptionId(subId),
mSubscriptionManager.isUsableSubscriptionId(subId), mSubscriptionManager.isUsableSubscriptionId(subId),
mSubscriptionManager.isActiveSubscriptionId(subId), mSubscriptionManager.isActiveSubscriptionId(subId),
true /*availableSubInfo*/, true /*availableSubInfo*/,
mSubscriptionManager.getDefaultVoiceSubscriptionId() == subId,
mSubscriptionManager.getDefaultSmsSubscriptionId() == subId,
mSubscriptionManager.getDefaultDataSubscriptionId() == subId,
mSubscriptionManager.getDefaultSubscriptionId() == subId,
mSubscriptionManager.getActiveDataSubscriptionId() == subId); mSubscriptionManager.getActiveDataSubscriptionId() == subId);
} }
} }

View File

@@ -38,14 +38,13 @@ import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; 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.SubscriptionInfoEntity;
import com.android.settingslib.mobile.dataservice.UiccInfoEntity;
import java.util.List; import java.util.List;
public class NetworkProviderCallsSmsController extends AbstractPreferenceController implements public class NetworkProviderCallsSmsController extends AbstractPreferenceController implements
LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback { LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback,
DefaultSubscriptionReceiver.DefaultSubscriptionListener {
private static final String TAG = "NetworkProviderCallsSmsController"; private static final String TAG = "NetworkProviderCallsSmsController";
private static final String KEY = "calls_and_sms"; private static final String KEY = "calls_and_sms";
@@ -58,6 +57,9 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
private LifecycleOwner mLifecycleOwner; private LifecycleOwner mLifecycleOwner;
private MobileNetworkRepository mMobileNetworkRepository; private MobileNetworkRepository mMobileNetworkRepository;
private List<SubscriptionInfoEntity> mSubInfoEntityList; private List<SubscriptionInfoEntity> 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 * 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; == View.LAYOUT_DIRECTION_RTL;
mLifecycleOwner = lifecycleOwner; mLifecycleOwner = lifecycleOwner;
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this);
if (lifecycle != null) { if (lifecycle != null) {
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
@@ -83,11 +86,15 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
mMobileNetworkRepository.addRegister(mLifecycleOwner, this, mMobileNetworkRepository.addRegister(mLifecycleOwner, this,
SubscriptionManager.INVALID_SUBSCRIPTION_ID); SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mMobileNetworkRepository.updateEntity(); mMobileNetworkRepository.updateEntity();
mDataSubscriptionChangedReceiver.registerReceiver();
mDefaultVoiceSubId = SubscriptionManager.getDefaultVoiceSubscriptionId();
mDefaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId();
} }
@OnLifecycleEvent(Event.ON_PAUSE) @OnLifecycleEvent(Event.ON_PAUSE)
public void onPause() { public void onPause() {
mMobileNetworkRepository.removeRegister(this); mMobileNetworkRepository.removeRegister(this);
mDataSubscriptionChangedReceiver.unRegisterReceiver();
} }
@Override @Override
@@ -145,16 +152,16 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
protected CharSequence getPreferredStatus(SubscriptionInfoEntity subInfo, int subsSize, protected CharSequence getPreferredStatus(SubscriptionInfoEntity subInfo, int subsSize,
int subId) { int subId) {
String status = ""; String status = "";
boolean isDataPreferred = subInfo.isDefaultVoiceSubscription; boolean isCallPreferred = subInfo.getSubId() == getDefaultVoiceSubscriptionId();
boolean isSmsPreferred = subInfo.isDefaultSmsSubscription; boolean isSmsPreferred = subInfo.getSubId() == getDefaultSmsSubscriptionId();
if (!subInfo.isValidSubscription || !isInService(subId)) { if (!subInfo.isValidSubscription || !isInService(subId)) {
status = setSummaryResId(subsSize > 1 ? R.string.calls_sms_unavailable : status = setSummaryResId(subsSize > 1 ? R.string.calls_sms_unavailable :
R.string.calls_sms_temp_unavailable); R.string.calls_sms_temp_unavailable);
} else { } else {
if (isDataPreferred && isSmsPreferred) { if (isCallPreferred && isSmsPreferred) {
status = setSummaryResId(R.string.calls_sms_preferred); status = setSummaryResId(R.string.calls_sms_preferred);
} else if (isDataPreferred) { } else if (isCallPreferred) {
status = setSummaryResId(R.string.calls_sms_calls_preferred); status = setSummaryResId(R.string.calls_sms_calls_preferred);
} else if (isSmsPreferred) { } else if (isSmsPreferred) {
status = setSummaryResId(R.string.calls_sms_sms_preferred); status = setSummaryResId(R.string.calls_sms_sms_preferred);
@@ -226,4 +233,26 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
mSubInfoEntityList = activeSubInfoList; mSubInfoEntityList = activeSubInfoList;
update(); 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();
}
} }

View File

@@ -23,7 +23,6 @@ import android.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.Log;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleOwner;
@@ -38,16 +37,15 @@ import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver; 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.SubscriptionInfoEntity;
import com.android.settingslib.mobile.dataservice.UiccInfoEntity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public class NetworkProviderSimListController extends AbstractPreferenceController implements public class NetworkProviderSimListController extends AbstractPreferenceController implements
LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback { LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback,
DefaultSubscriptionReceiver.DefaultSubscriptionListener {
private static final String TAG = "NetworkProviderSimListCtrl"; private static final String TAG = "NetworkProviderSimListCtrl";
private static final String KEY_PREFERENCE_CATEGORY_SIM = "provider_model_sim_category"; private static final String KEY_PREFERENCE_CATEGORY_SIM = "provider_model_sim_category";
private static final String KEY_PREFERENCE_SIM = "provider_model_sim_list"; private static final String KEY_PREFERENCE_SIM = "provider_model_sim_list";
@@ -58,6 +56,7 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
private LifecycleOwner mLifecycleOwner; private LifecycleOwner mLifecycleOwner;
private MobileNetworkRepository mMobileNetworkRepository; private MobileNetworkRepository mMobileNetworkRepository;
private List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>(); private List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>();
private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver;
public NetworkProviderSimListController(Context context, Lifecycle lifecycle, public NetworkProviderSimListController(Context context, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner) { LifecycleOwner lifecycleOwner) {
@@ -66,6 +65,7 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
mPreferences = new ArrayMap<>(); mPreferences = new ArrayMap<>();
mLifecycleOwner = lifecycleOwner; mLifecycleOwner = lifecycleOwner;
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this);
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
@@ -74,11 +74,13 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
mMobileNetworkRepository.addRegister(mLifecycleOwner, this, mMobileNetworkRepository.addRegister(mLifecycleOwner, this,
SubscriptionManager.INVALID_SUBSCRIPTION_ID); SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mMobileNetworkRepository.updateEntity(); mMobileNetworkRepository.updateEntity();
mDataSubscriptionChangedReceiver.registerReceiver();
} }
@OnLifecycleEvent(ON_PAUSE) @OnLifecycleEvent(ON_PAUSE)
public void onPause() { public void onPause() {
mMobileNetworkRepository.removeRegister(this); mMobileNetworkRepository.removeRegister(this);
mDataSubscriptionChangedReceiver.unRegisterReceiver();
} }
@Override @Override
@@ -130,7 +132,8 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
public CharSequence getSummary(SubscriptionInfoEntity subInfo, CharSequence displayName) { public CharSequence getSummary(SubscriptionInfoEntity subInfo, CharSequence displayName) {
if (subInfo.isActiveSubscriptionId) { if (subInfo.isActiveSubscriptionId) {
CharSequence config = subInfo.defaultSimConfig; CharSequence config = SubscriptionUtil.getDefaultSimConfig(mContext,
subInfo.getSubId());
CharSequence summary = mContext.getResources().getString( CharSequence summary = mContext.getResources().getString(
R.string.sim_category_active_sim); R.string.sim_category_active_sim);
if (config == "") { if (config == "") {
@@ -185,4 +188,22 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
refreshSummary(mPreferenceCategory); refreshSummary(mPreferenceCategory);
update(); 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();
}
} }

View File

@@ -40,10 +40,12 @@ public class CallsDefaultSubscriptionController extends DefaultSubscriptionContr
@Override @Override
protected int getDefaultSubscriptionId() { protected int getDefaultSubscriptionId() {
int defaultCallSubId = SubscriptionManager.getDefaultVoiceSubscriptionId();
for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) {
if (subInfo.isActiveSubscriptionId && subInfo.isDefaultVoiceSubscription) { int subId = subInfo.getSubId();
if (subInfo.isActiveSubscriptionId && subId == defaultCallSubId) {
mSubscriptionInfoEntity = subInfo; mSubscriptionInfoEntity = subInfo;
return Integer.parseInt(subInfo.subId); return subId;
} }
} }
return SubscriptionManager.INVALID_SUBSCRIPTION_ID; return SubscriptionManager.INVALID_SUBSCRIPTION_ID;

View File

@@ -36,11 +36,10 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.network.DefaultSubscriptionReceiver;
import com.android.settings.network.MobileNetworkRepository; import com.android.settings.network.MobileNetworkRepository;
import com.android.settingslib.core.lifecycle.Lifecycle; 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.SubscriptionInfoEntity;
import com.android.settingslib.mobile.dataservice.UiccInfoEntity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -52,7 +51,8 @@ import java.util.List;
*/ */
public abstract class DefaultSubscriptionController extends TelephonyBasePreferenceController public abstract class DefaultSubscriptionController extends TelephonyBasePreferenceController
implements LifecycleObserver, Preference.OnPreferenceChangeListener, implements LifecycleObserver, Preference.OnPreferenceChangeListener,
MobileNetworkRepository.MobileNetworkCallback { MobileNetworkRepository.MobileNetworkCallback,
DefaultSubscriptionReceiver.DefaultSubscriptionListener {
private static final String TAG = "DefaultSubController"; private static final String TAG = "DefaultSubController";
protected ListPreference mPreference; protected ListPreference mPreference;
@@ -60,6 +60,7 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
protected TelecomManager mTelecomManager; protected TelecomManager mTelecomManager;
protected MobileNetworkRepository mMobileNetworkRepository; protected MobileNetworkRepository mMobileNetworkRepository;
protected LifecycleOwner mLifecycleOwner; protected LifecycleOwner mLifecycleOwner;
private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver;
private static final String EMERGENCY_ACCOUNT_HANDLE_ID = "E"; private static final String EMERGENCY_ACCOUNT_HANDLE_ID = "E";
private static final ComponentName PSTN_CONNECTION_SERVICE_COMPONENT = private static final ComponentName PSTN_CONNECTION_SERVICE_COMPONENT =
@@ -76,6 +77,7 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection() mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection()
== View.LAYOUT_DIRECTION_RTL; == View.LAYOUT_DIRECTION_RTL;
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this);
mLifecycleOwner = lifecycleOwner; mLifecycleOwner = lifecycleOwner;
if (lifecycle != null) { if (lifecycle != null) {
lifecycle.addObserver(this); 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 // Can not get default subId from database until get the callback, add register by subId
// later. // later.
mMobileNetworkRepository.addRegisterBySubId(getDefaultSubscriptionId()); mMobileNetworkRepository.addRegisterBySubId(getDefaultSubscriptionId());
mDataSubscriptionChangedReceiver.registerReceiver();
} }
@OnLifecycleEvent(ON_PAUSE) @OnLifecycleEvent(ON_PAUSE)
public void onPause() { public void onPause() {
mMobileNetworkRepository.removeRegister(this); mMobileNetworkRepository.removeRegister(this);
mDataSubscriptionChangedReceiver.unRegisterReceiver();
} }
@Override @Override
@@ -308,4 +311,16 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
updateEntries(); updateEntries();
refreshSummary(mPreference); refreshSummary(mPreference);
} }
@Override
public void onDefaultVoiceChanged(int defaultVoiceSubId) {
updateEntries();
refreshSummary(mPreference);
}
@Override
public void onDefaultSmsChanged(int defaultSmsSubId) {
updateEntries();
refreshSummary(mPreference);
}
} }

View File

@@ -20,8 +20,6 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
import android.content.Context; import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
@@ -36,13 +34,11 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.network.MobileDataContentObserver;
import com.android.settings.network.MobileNetworkRepository; import com.android.settings.network.MobileNetworkRepository;
import com.android.settings.wifi.WifiPickerTrackerHelper; import com.android.settings.wifi.WifiPickerTrackerHelper;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity;
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
import com.android.settingslib.mobile.dataservice.UiccInfoEntity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -234,13 +230,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) { public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
mSubscriptionInfoEntityList = subInfoEntityList; mSubscriptionInfoEntityList = subInfoEntityList;
mSubscriptionInfoEntityList.forEach(entity -> { mSubscriptionInfoEntityList.forEach(entity -> {
if (Integer.parseInt(entity.subId) == mSubId) { if (entity.getSubId() == mSubId) {
mSubscriptionInfoEntity = entity; mSubscriptionInfoEntity = entity;
} }
}); });
int subId = mSubscriptionInfoEntity.getSubId();
if (mSubscriptionInfoEntity != null if (mSubscriptionInfoEntity != null
&& mSubscriptionInfoEntity.isDefaultDataSubscription) { && subId == SubscriptionManager.getDefaultDataSubscriptionId()) {
mDefaultSubId = Integer.parseInt(mSubscriptionInfoEntity.subId); mDefaultSubId = subId;
} }
update(); update();
refreshSummary(mPreference); refreshSummary(mPreference);

View File

@@ -1011,7 +1011,7 @@ public class MobileNetworkUtils {
private static CharSequence getPreferredCallStatus(Context context, private static CharSequence getPreferredCallStatus(Context context,
SubscriptionInfoEntity subInfo) { SubscriptionInfoEntity subInfo) {
String status = ""; String status = "";
if (subInfo.isDefaultVoiceSubscription) { if (subInfo.getSubId() == SubscriptionManager.getDefaultVoiceSubscriptionId()) {
status = setSummaryResId(context, R.string.calls_sms_preferred); status = setSummaryResId(context, R.string.calls_sms_preferred);
} }
@@ -1021,7 +1021,7 @@ public class MobileNetworkUtils {
private static CharSequence getPreferredSmsStatus(Context context, private static CharSequence getPreferredSmsStatus(Context context,
SubscriptionInfoEntity subInfo) { SubscriptionInfoEntity subInfo) {
String status = ""; String status = "";
if (subInfo.isDefaultSmsSubscription) { if (subInfo.getSubId() == SubscriptionManager.getDefaultSmsSubscriptionId()) {
status = setSummaryResId(context, R.string.calls_sms_preferred); status = setSummaryResId(context, R.string.calls_sms_preferred);
} }

View File

@@ -44,10 +44,12 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl
@Override @Override
protected int getDefaultSubscriptionId() { protected int getDefaultSubscriptionId() {
int defaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId();
for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) {
if (subInfo.isActiveSubscriptionId && subInfo.isDefaultSmsSubscription) { int subId = subInfo.getSubId();
if (subInfo.isActiveSubscriptionId && subId == defaultSmsSubId) {
mSubscriptionInfoEntity = subInfo; mSubscriptionInfoEntity = subInfo;
return Integer.parseInt(subInfo.subId); return subId;
} }
} }
return SubscriptionManager.INVALID_SUBSCRIPTION_ID; return SubscriptionManager.INVALID_SUBSCRIPTION_ID;

View File

@@ -129,6 +129,8 @@ public class InternetPreferenceControllerTest {
private class MockInternetPreferenceController extends private class MockInternetPreferenceController extends
com.android.settings.network.InternetPreferenceController { com.android.settings.network.InternetPreferenceController {
private int mDefaultDataSubscriptionId;
public MockInternetPreferenceController(Context context, Lifecycle lifecycle, public MockInternetPreferenceController(Context context, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner) { LifecycleOwner lifecycleOwner) {
super(context, lifecycle, lifecycleOwner); super(context, lifecycle, lifecycleOwner);
@@ -145,18 +147,26 @@ public class InternetPreferenceControllerTest {
mSubscriptionInfoEntity = list; mSubscriptionInfoEntity = list;
} }
@Override
protected int getDefaultDataSubscriptionId() {
return mDefaultDataSubscriptionId;
}
public void setDefaultDataSubscriptionId(int subscriptionId) {
mDefaultDataSubscriptionId = subscriptionId;
}
} }
private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId,
int carrierId, String displayName, String mcc, String mnc, String countryIso, int carrierId, String displayName, String mcc, String mnc, String countryIso,
int cardId, boolean isVisible, boolean isValid, boolean isActive, boolean isAvailable, int cardId, boolean isVisible, boolean isValid, boolean isActive, boolean isAvailable,
boolean isDefaultData, boolean isActiveData) { boolean isActiveData) {
return new SubscriptionInfoEntity(subId, slotId, carrierId, return new SubscriptionInfoEntity(subId, slotId, carrierId,
displayName, displayName, 0, mcc, mnc, countryIso, false, cardId, displayName, displayName, 0, mcc, mnc, countryIso, false, cardId,
TelephonyManager.DEFAULT_PORT_INDEX, false, null, TelephonyManager.DEFAULT_PORT_INDEX, false, null,
SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, isVisible, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, isVisible,
"1234567890", true, "default", false, isValid, true, isActive, isAvailable, false, "1234567890", true, false, isValid, true, isActive, isAvailable, isActiveData);
false, isDefaultData, false, isActiveData);
} }
@Test @Test
@@ -183,7 +193,7 @@ public class InternetPreferenceControllerTest {
mController.onResume(); mController.onResume();
mController.onPause(); mController.onPause();
verify(mContext).unregisterReceiver(any(BroadcastReceiver.class)); verify(mContext, times(2)).unregisterReceiver(any(BroadcastReceiver.class));
verify(mConnectivityManager, times(2)).unregisterNetworkCallback( verify(mConnectivityManager, times(2)).unregisterNetworkCallback(
any(ConnectivityManager.NetworkCallback.class)); any(ConnectivityManager.NetworkCallback.class));
} }
@@ -218,10 +228,11 @@ public class InternetPreferenceControllerTest {
@Test @Test
public void updateCellularSummary_getActiveSubscriptionInfo_cbrs() { 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, 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, 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(mActiveSubInfo);
mSubscriptionInfoEntityList.add(mDefaultDataSubInfo); mSubscriptionInfoEntityList.add(mDefaultDataSubInfo);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
@@ -231,7 +242,7 @@ public class InternetPreferenceControllerTest {
assertThat(mPreference.getSummary()).isEqualTo(DISPLAY_NAME_2); assertThat(mPreference.getSummary()).isEqualTo(DISPLAY_NAME_2);
mActiveSubInfo = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, 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); mSubscriptionInfoEntityList.add(mActiveSubInfo);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
mController.onAvailableSubInfoChanged(mSubscriptionInfoEntityList); mController.onAvailableSubInfoChanged(mSubscriptionInfoEntityList);

View File

@@ -100,6 +100,8 @@ public class NetworkProviderCallsSmsControllerTest {
private List<SubscriptionInfoEntity> mSubscriptionInfoEntity; private List<SubscriptionInfoEntity> mSubscriptionInfoEntity;
private boolean mIsInService; private boolean mIsInService;
private int mDefaultVoiceSubscriptionId;
private int mDefaultSmsSubscriptionId;
@Override @Override
protected List<SubscriptionInfoEntity> getSubscriptionInfoList() { protected List<SubscriptionInfoEntity> getSubscriptionInfoList() {
@@ -118,6 +120,24 @@ public class NetworkProviderCallsSmsControllerTest {
public void setInService(boolean inService) { public void setInService(boolean inService) {
mIsInService = 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 @Before
@@ -163,15 +183,13 @@ public class NetworkProviderCallsSmsControllerTest {
private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId,
int carrierId, String displayName, String mcc, String mnc, String countryIso, int carrierId, String displayName, String mcc, String mnc, String countryIso,
int cardId, boolean isValid, boolean isActive, boolean isAvailable, int cardId, boolean isValid, boolean isActive, boolean isAvailable) {
boolean isDefaultCall, boolean isDefaultSms) {
return new SubscriptionInfoEntity(subId, slotId, carrierId, return new SubscriptionInfoEntity(subId, slotId, carrierId,
displayName, displayName, 0, mcc, mnc, countryIso, false, cardId, displayName, displayName, 0, mcc, mnc, countryIso, false, cardId,
TelephonyManager.DEFAULT_PORT_INDEX, false, null, TelephonyManager.DEFAULT_PORT_INDEX, false, null,
SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false,
"1234567890", true, "default", false, isValid, "1234567890", true, false, isValid,
true, isActive, isAvailable, isDefaultCall, isDefaultSms, false, false, true, isActive, isAvailable, false);
false);
} }
@Test @Test
@@ -181,7 +199,7 @@ public class NetworkProviderCallsSmsControllerTest {
mSubInfo1 = setupSubscriptionInfoEntity(INVALID_SUB_ID, mSubInfo1 = setupSubscriptionInfoEntity(INVALID_SUB_ID,
SubscriptionManager.INVALID_SIM_SLOT_INDEX, TelephonyManager.UNKNOWN_CARRIER_ID, SubscriptionManager.INVALID_SIM_SLOT_INDEX, TelephonyManager.UNKNOWN_CARRIER_ID,
DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 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); mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle(); displayPreferenceWithLifecycle();
@@ -202,9 +220,9 @@ public class NetworkProviderCallsSmsControllerTest {
mSubInfo1 = setupSubscriptionInfoEntity(INVALID_SUB_ID, mSubInfo1 = setupSubscriptionInfoEntity(INVALID_SUB_ID,
SubscriptionManager.INVALID_SIM_SLOT_INDEX, TelephonyManager.UNKNOWN_CARRIER_ID, SubscriptionManager.INVALID_SIM_SLOT_INDEX, TelephonyManager.UNKNOWN_CARRIER_ID,
DISPLAY_NAME_1, SUB_MCC_1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 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, 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(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
@@ -226,7 +244,7 @@ public class NetworkProviderCallsSmsControllerTest {
public void getSummary_oneSubscription_returnDisplayName() { public void getSummary_oneSubscription_returnDisplayName() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, false, false); SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true);
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle(); displayPreferenceWithLifecycle();
@@ -239,9 +257,9 @@ public class NetworkProviderCallsSmsControllerTest {
public void getSummary_allSubscriptionsHaveNoPreferredStatus_returnDisplayName() { public void getSummary_allSubscriptionsHaveNoPreferredStatus_returnDisplayName() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, 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, 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(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
@@ -257,10 +275,13 @@ public class NetworkProviderCallsSmsControllerTest {
@UiThreadTest @UiThreadTest
public void getSummary_oneSubscriptionsIsCallPreferredTwoIsSmsPreferred_returnStatus() { 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, 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, 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(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
@@ -284,10 +305,13 @@ public class NetworkProviderCallsSmsControllerTest {
@UiThreadTest @UiThreadTest
public void getSummary_oneSubscriptionsIsSmsPreferredTwoIsCallPreferred_returnStatus() { 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, 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); SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true);
mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 1, 1, DISPLAY_NAME_2, SUB_MCC_2, mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, 2, 2, DISPLAY_NAME_2, SUB_MCC_2,
SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true, true, false); SUB_MNC_2, SUB_COUNTRY_ISO_2, 1, true, true, true);
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
@@ -311,10 +335,13 @@ public class NetworkProviderCallsSmsControllerTest {
@UiThreadTest @UiThreadTest
public void getSummary_oneSubscriptionsIsSmsPreferredAndIsCallPreferred_returnStatus() { 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, 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, 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(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);

View File

@@ -152,13 +152,11 @@ public class NetworkProviderSimListControllerTest {
private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId,
int carrierId, String displayName, String mcc, String mnc, String countryIso, int carrierId, String displayName, String mcc, String mnc, String countryIso,
int cardId, CharSequence defaultSimConfig, boolean isValid, boolean isActive, int cardId, boolean isValid, boolean isActive, boolean isAvailable) {
boolean isAvailable, boolean isDefaultCall, boolean isDefaultSms) {
return new SubscriptionInfoEntity(subId, slotId, carrierId, displayName, displayName, 0, return new SubscriptionInfoEntity(subId, slotId, carrierId, displayName, displayName, 0,
mcc, mnc, countryIso, false, cardId, TelephonyManager.DEFAULT_PORT_INDEX, false, mcc, mnc, countryIso, false, cardId, TelephonyManager.DEFAULT_PORT_INDEX, false,
null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false,
"1234567890", true, defaultSimConfig.toString(), false, isValid, true, isActive, "1234567890", true, false, isValid, true, isActive, isAvailable, false);
isAvailable, isDefaultCall, isDefaultSms, false, false, false);
} }
private String setSummaryResId(String resName, String value) { private String setSummaryResId(String resName, String value) {
@@ -173,7 +171,7 @@ public class NetworkProviderSimListControllerTest {
@UiThreadTest @UiThreadTest
public void getSummary_tapToActivePSim() { public void getSummary_tapToActivePSim() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, 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); mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle(); displayPreferenceWithLifecycle();
@@ -186,7 +184,7 @@ public class NetworkProviderSimListControllerTest {
@UiThreadTest @UiThreadTest
public void getSummary_inactivePSim() { public void getSummary_inactivePSim() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, 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(); doReturn(true).when(mSubscriptionManager).canDisablePhysicalSubscription();
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
@@ -201,15 +199,13 @@ public class NetworkProviderSimListControllerTest {
@UiThreadTest @UiThreadTest
public void getSummary_defaultCalls() { public void getSummary_defaultCalls() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1,
SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true);
setSummaryResId("sim_category_default_active_sim",
setSummaryResId("default_active_sim_calls")), true, true, true, true,
false);
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle(); displayPreferenceWithLifecycle();
CharSequence defaultCall = mSubInfo1.defaultSimConfig; CharSequence defaultCall = SubscriptionUtil.getDefaultSimConfig(mContext,
Integer.parseInt(SUB_ID_1));
final StringBuilder summary = new StringBuilder(); final StringBuilder summary = new StringBuilder();
summary.append(setSummaryResId("sim_category_active_sim", null)) summary.append(setSummaryResId("sim_category_active_sim", null))
.append(defaultCall); .append(defaultCall);
@@ -225,14 +221,13 @@ public class NetworkProviderSimListControllerTest {
.append(", ") .append(", ")
.append(setSummaryResId("default_active_sim_sms")); .append(setSummaryResId("default_active_sim_sms"));
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1, mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1,
SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, true, true, true);
setSummaryResId("sim_category_default_active_sim", defaultConfig.toString()), true,
true, true, true, true);
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle(); displayPreferenceWithLifecycle();
CharSequence defaultCall = mSubInfo1.defaultSimConfig; CharSequence defaultCall = SubscriptionUtil.getDefaultSimConfig(mContext,
Integer.parseInt(SUB_ID_1));
final StringBuilder summary = new StringBuilder(); final StringBuilder summary = new StringBuilder();
summary.append(setSummaryResId("sim_category_active_sim", null)) summary.append(setSummaryResId("sim_category_active_sim", null))
.append(defaultCall); .append(defaultCall);
@@ -245,9 +240,9 @@ public class NetworkProviderSimListControllerTest {
@UiThreadTest @UiThreadTest
public void getAvailablePhysicalSubscription_withTwoPhysicalSims_returnTwo() { public void getAvailablePhysicalSubscription_withTwoPhysicalSims_returnTwo() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, 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(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);

View File

@@ -135,15 +135,12 @@ public class DefaultSubscriptionControllerTest {
private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId,
int carrierId, String displayName, String mcc, String mnc, String countryIso, int carrierId, String displayName, String mcc, String mnc, String countryIso,
int cardId, boolean isValid, boolean isActive, boolean isAvailable, int cardId, boolean isValid, boolean isActive, boolean isAvailable) {
boolean isDefaultCall, boolean isDefaultSms) {
return new SubscriptionInfoEntity(subId, slotId, carrierId, return new SubscriptionInfoEntity(subId, slotId, carrierId,
displayName, displayName, 0, mcc, mnc, countryIso, false, cardId, displayName, displayName, 0, mcc, mnc, countryIso, false, cardId,
TelephonyManager.DEFAULT_PORT_INDEX, false, null, TelephonyManager.DEFAULT_PORT_INDEX, false, null,
SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false,
"1234567890", true, "default", false, isValid, "1234567890", true, false, isValid, true, isActive, isAvailable, false);
true, isActive, isAvailable, isDefaultCall,
isDefaultSms, false, false, false);
} }
@Test @Test
@@ -164,9 +161,9 @@ public class DefaultSubscriptionControllerTest {
@Test @Test
public void onPreferenceChange_prefChangedToSub2_callbackCalledCorrectly() { public void onPreferenceChange_prefChangedToSub2_callbackCalledCorrectly() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, 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)); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId));
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
@@ -181,9 +178,9 @@ public class DefaultSubscriptionControllerTest {
@Test @Test
public void onPreferenceChange_prefChangedToAlwaysAsk_callbackCalledCorrectly() { public void onPreferenceChange_prefChangedToAlwaysAsk_callbackCalledCorrectly() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, 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)); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId));
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
@@ -201,9 +198,9 @@ public class DefaultSubscriptionControllerTest {
public void onPreferenceChange_prefBecomesAvailable_onPreferenceChangeCallbackNotNull() { public void onPreferenceChange_prefBecomesAvailable_onPreferenceChangeCallbackNotNull() {
// Start with only one sub active, so the pref is not available // 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, 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, 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)); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId));
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId));
@@ -225,9 +222,9 @@ public class DefaultSubscriptionControllerTest {
@Test @Test
public void onSubscriptionsChanged_twoSubscriptionsDefaultChanges_selectedEntryGetsUpdated() { public void onSubscriptionsChanged_twoSubscriptionsDefaultChanges_selectedEntryGetsUpdated() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, 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)); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId));
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
@@ -246,9 +243,9 @@ public class DefaultSubscriptionControllerTest {
@Test @Test
public void onSubscriptionsChanged_goFromTwoSubscriptionsToOne_prefDisappears() { public void onSubscriptionsChanged_goFromTwoSubscriptionsToOne_prefDisappears() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, 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(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);
mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId));
@@ -273,9 +270,9 @@ public class DefaultSubscriptionControllerTest {
@UiThreadTest @UiThreadTest
public void onSubscriptionsChanged_goFromOneSubscriptionToTwo_prefAppears() { public void onSubscriptionsChanged_goFromOneSubscriptionToTwo_prefAppears() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, 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(mSubInfo1);
mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId)); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId));
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
@@ -297,11 +294,11 @@ public class DefaultSubscriptionControllerTest {
@Test @Test
public void onSubscriptionsChanged_goFromTwoToThreeSubscriptions_listGetsUpdated() { public void onSubscriptionsChanged_goFromTwoToThreeSubscriptions_listGetsUpdated() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_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, 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, 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)); mController.setDefaultSubscription(Integer.parseInt(mSubInfo1.subId));
mSubscriptionInfoEntityList.add(mSubInfo1); mSubscriptionInfoEntityList.add(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2); mSubscriptionInfoEntityList.add(mSubInfo2);

View File

@@ -114,15 +114,13 @@ public class MobileDataPreferenceControllerTest {
} }
private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, String displayName, private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, String displayName,
boolean isOpportunistic, boolean isValid, boolean isActive, boolean isAvailable, boolean isOpportunistic, boolean isValid, boolean isActive, boolean isAvailable) {
boolean isDefaultData) {
int id = Integer.parseInt(subId); int id = Integer.parseInt(subId);
return new SubscriptionInfoEntity(subId, id, id, return new SubscriptionInfoEntity(subId, id, id,
displayName, displayName, 0, "mcc", "mnc", "countryIso", false, id, displayName, displayName, 0, "mcc", "mnc", "countryIso", false, id,
TelephonyManager.DEFAULT_PORT_INDEX, isOpportunistic, null, TelephonyManager.DEFAULT_PORT_INDEX, isOpportunistic, null,
SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false,
"1234567890", true, "default", false, isValid, true, isActive, isAvailable, false, "1234567890", true, false, isValid, true, isActive, isAvailable, false);
false, isDefaultData, false, false);
} }
private MobileNetworkInfoEntity setupMobileNetworkInfoEntity(String subId, private MobileNetworkInfoEntity setupMobileNetworkInfoEntity(String subId,
@@ -141,8 +139,7 @@ public class MobileDataPreferenceControllerTest {
@Test @Test
public void isDialogNeeded_disableSingleSim_returnFalse() { public void isDialogNeeded_disableSingleSim_returnFalse() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true, mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true);
true);
mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true);
doReturn(1).when(mTelephonyManager).getActiveModemCount(); doReturn(1).when(mTelephonyManager).getActiveModemCount();
@@ -151,14 +148,12 @@ public class MobileDataPreferenceControllerTest {
@Test @Test
public void isDialogNeeded_enableNonDefaultSimInMultiSimMode_returnTrue() { public void isDialogNeeded_enableNonDefaultSimInMultiSimMode_returnTrue() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true, mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true);
false);
mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), false); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), false);
doReturn(1).when(mTelephonyManager).getActiveModemCount(); doReturn(1).when(mTelephonyManager).getActiveModemCount();
// Ideally, it would be better if we could set the default data subscription to // 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. // SUB_ID_OTHER, and set that as an active subscription id.
mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, false, true, true, true, mSubInfo2 = setupSubscriptionInfoEntity(SUB_ID_2, DISPLAY_NAME_2, false, true, true, true);
true);
mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true);
doReturn(2).when(mTelephonyManager).getActiveModemCount(); doReturn(2).when(mTelephonyManager).getActiveModemCount();
@@ -180,8 +175,7 @@ public class MobileDataPreferenceControllerTest {
@Test @Test
public void onPreferenceChange_singleSim_On_shouldEnableData() { public void onPreferenceChange_singleSim_On_shouldEnableData() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true, mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true);
true);
mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true);
mController.setSubscriptionInfoEntity(mSubInfo1); mController.setSubscriptionInfoEntity(mSubInfo1);
mController.setMobileNetworkInfoEntity(mNetworkInfo1); mController.setMobileNetworkInfoEntity(mNetworkInfo1);
@@ -194,8 +188,7 @@ public class MobileDataPreferenceControllerTest {
@Test @Test
public void onPreferenceChange_multiSim_On_shouldEnableData() { public void onPreferenceChange_multiSim_On_shouldEnableData() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true, mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true);
true);
mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true); mNetworkInfo1 = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true);
mController.setSubscriptionInfoEntity(mSubInfo1); mController.setSubscriptionInfoEntity(mSubInfo1);
mController.setMobileNetworkInfoEntity(mNetworkInfo1); mController.setMobileNetworkInfoEntity(mNetworkInfo1);
@@ -219,8 +212,7 @@ public class MobileDataPreferenceControllerTest {
@Test @Test
public void updateState_opportunistic_disabled() { public void updateState_opportunistic_disabled() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true, mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, true, true, true, true);
true);
mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1); mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1);
mController.updateState(mPreference); mController.updateState(mPreference);
@@ -232,8 +224,7 @@ public class MobileDataPreferenceControllerTest {
@Test @Test
public void updateState_notOpportunistic_enabled() { public void updateState_notOpportunistic_enabled() {
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true, mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, DISPLAY_NAME_1, false, true, true, true);
true);
mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1); mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1);
mController.updateState(mPreference); mController.updateState(mPreference);