[Settings] Change the way in MobileNetworkListFragment for getting the subscription info from room db part3

Bug: 254405469
Test: atest NetworkProviderDownloadedSimListControllerTest, atest NetworkProviderSimListControllerTest
Change-Id: Iec6e17688b260d2fef464a711f92e788fe76fbe7
This commit is contained in:
Zoey Chen
2022-10-06 11:13:41 +00:00
parent 189c7eee3d
commit 31a3bd2e03
11 changed files with 313 additions and 267 deletions

View File

@@ -22,9 +22,9 @@ import android.os.UserManager;
import android.provider.SearchIndexableResource;
import androidx.annotation.VisibleForTesting;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -42,6 +42,16 @@ public class MobileNetworkListFragment extends DashboardFragment {
static final String KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM =
"provider_model_downloaded_sim_category";
@Override
public void onResume() {
super.onResume();
// Disable the animation of the preference list
final RecyclerView prefListView = getListView();
if (prefListView != null) {
prefListView.setItemAnimator(null);
}
}
@Override
protected int getPreferenceScreenResId() {
return R.xml.network_provider_sims_list;
@@ -67,11 +77,11 @@ public class MobileNetworkListFragment extends DashboardFragment {
NetworkProviderSimsCategoryController simCategoryPrefCtrl =
new NetworkProviderSimsCategoryController(context, KEY_PREFERENCE_CATEGORY_SIM,
getSettingsLifecycle());
getSettingsLifecycle(), this);
controllers.add(simCategoryPrefCtrl);
NetworkProviderDownloadedSimsCategoryController downloadedSimsCategoryCtrl =
new NetworkProviderDownloadedSimsCategoryController(context,
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM, getSettingsLifecycle());
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM, getSettingsLifecycle(), this);
controllers.add(downloadedSimsCategoryCtrl);
return controllers;

View File

@@ -18,7 +18,10 @@ package com.android.settings.network;
import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT;
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;
@@ -78,6 +81,7 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
private AirplaneModeObserver mAirplaneModeObserver;
private Uri mAirplaneModeSettingUri;
private MetricsFeatureProvider mMetricsFeatureProvider;
private IntentFilter mFilter = new IntentFilter();
private int mPhysicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
private int mLogicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
@@ -101,6 +105,8 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
mAirplaneModeSettingUri = Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON);
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_MOBILE_NETWORK_DB_CREATED);
mFilter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
mFilter.addAction(SubscriptionManager.ACTION_DEFAULT_SUBSCRIPTION_CHANGED);
}
private class AirplaneModeObserver extends ContentObserver {
@@ -125,9 +131,21 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
}
}
private final BroadcastReceiver mDataSubscriptionChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)
|| action.equals(SubscriptionManager.ACTION_DEFAULT_SUBSCRIPTION_CHANGED)) {
onSubscriptionsChanged();
}
}
};
public void addRegister(LifecycleOwner lifecycleOwner) {
mSubscriptionManager.addOnSubscriptionsChangedListener(mContext.getMainExecutor(), this);
mAirplaneModeObserver.register(mContext);
mContext.registerReceiver(mDataSubscriptionChangedReceiver, mFilter);
observeAllSubInfo(lifecycleOwner);
observeAllUiccInfo(lifecycleOwner);
observeAllMobileNetworkInfo(lifecycleOwner);
@@ -137,6 +155,9 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
mSubscriptionManager.removeOnSubscriptionsChangedListener(this);
mAirplaneModeObserver.unRegister(mContext);
mContext.getContentResolver().unregisterContentObserver(mAirplaneModeObserver);
if (mDataSubscriptionChangedReceiver != null) {
mContext.unregisterReceiver(mDataSubscriptionChangedReceiver);
}
}
private void observeAllSubInfo(LifecycleOwner lifecycleOwner) {

View File

@@ -24,12 +24,13 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
@@ -40,6 +41,9 @@ import com.android.settings.network.telephony.MobileNetworkUtils;
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;
@@ -47,7 +51,7 @@ import java.util.Map;
public class NetworkProviderDownloadedSimListController extends
AbstractPreferenceController implements
LifecycleObserver, SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {
private static final String TAG = "NetworkProviderDownloadedSimListCtrl";
private static final String KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM =
"provider_model_downloaded_sim_category";
@@ -56,46 +60,32 @@ public class NetworkProviderDownloadedSimListController extends
private static final String KEY_ADD_MORE = "add_more";
private SubscriptionManager mSubscriptionManager;
private SubscriptionsChangeListener mChangeListener;
private PreferenceCategory mPreferenceCategory;
private Map<Integer, Preference> mPreferences;
private LifecycleOwner mLifecycleOwner;
private MobileNetworkRepository mMobileNetworkRepository;
private List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>();
public NetworkProviderDownloadedSimListController(Context context, Lifecycle lifecycle) {
public NetworkProviderDownloadedSimListController(Context context, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner) {
super(context);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mChangeListener = new SubscriptionsChangeListener(context, this);
mPreferences = new ArrayMap<>();
mLifecycleOwner = lifecycleOwner;
mMobileNetworkRepository = new MobileNetworkRepository(context, this);
lifecycle.addObserver(this);
}
@OnLifecycleEvent(ON_RESUME)
public void onResume() {
mChangeListener.start();
IntentFilter filter = new IntentFilter();
filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
mContext.registerReceiver(mDataSubscriptionChangedReceiver, filter);
mMobileNetworkRepository.addRegister(mLifecycleOwner);
update();
}
@OnLifecycleEvent(ON_PAUSE)
public void onPause() {
mChangeListener.stop();
if (mDataSubscriptionChangedReceiver != null) {
mContext.unregisterReceiver(mDataSubscriptionChangedReceiver);
}
}
@VisibleForTesting
final BroadcastReceiver mDataSubscriptionChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
update();
}
}
};
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
@@ -113,18 +103,17 @@ public class NetworkProviderDownloadedSimListController extends
final Map<Integer, Preference> existingPreferences = mPreferences;
mPreferences = new ArrayMap<>();
final List<SubscriptionInfo> subscriptions = getAvailableDownloadedSubscriptions();
for (SubscriptionInfo info : subscriptions) {
final int subId = info.getSubscriptionId();
final List<SubscriptionInfoEntity> subscriptions = getAvailableDownloadedSubscriptions();
for (SubscriptionInfoEntity info : subscriptions) {
final int subId = Integer.parseInt(info.subId);
Preference pref = existingPreferences.remove(subId);
if (pref == null) {
pref = new Preference(mPreferenceCategory.getContext());
mPreferenceCategory.addPreference(pref);
}
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
info, mContext);
final CharSequence displayName = info.uniqueName;
pref.setTitle(displayName);
pref.setSummary(getSummary(subId));
pref.setSummary(getSummary(info));
pref.setOnPreferenceClickListener(clickedPref -> {
MobileNetworkUtils.launchMobileNetworkSettings(mContext, info);
@@ -137,12 +126,12 @@ public class NetworkProviderDownloadedSimListController extends
}
}
public CharSequence getSummary(int subId) {
if (mSubscriptionManager.isActiveSubscriptionId(subId)) {
CharSequence config = SubscriptionUtil.getDefaultSimConfig(mContext, subId);
public CharSequence getSummary(SubscriptionInfoEntity subInfo) {
if (subInfo.isActiveSubscriptionId) {
CharSequence config = subInfo.defaultSimConfig;
CharSequence summary = mContext.getResources().getString(
R.string.sim_category_active_sim);
if (config == null) {
if (config == "") {
return summary;
} else {
final StringBuilder activeSim = new StringBuilder();
@@ -167,10 +156,11 @@ public class NetworkProviderDownloadedSimListController extends
return KEY_PREFERENCE_DOWNLOADED_SIM;
}
private List<SubscriptionInfo> getAvailableDownloadedSubscriptions() {
List<SubscriptionInfo> subList = new ArrayList<>();
for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
if (info.isEmbedded()) {
@VisibleForTesting
protected List<SubscriptionInfoEntity> getAvailableDownloadedSubscriptions() {
List<SubscriptionInfoEntity> subList = new ArrayList<>();
for (SubscriptionInfoEntity info : mSubInfoEntityList) {
if (info.isEmbedded) {
subList.add(info);
}
}
@@ -189,22 +179,27 @@ public class NetworkProviderDownloadedSimListController extends
}
@Override
public void onSubscriptionsChanged() {
update();
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
if ((mSubInfoEntityList != null &&
(subInfoEntityList.isEmpty() || !subInfoEntityList.equals(mSubInfoEntityList)))
|| (!subInfoEntityList.isEmpty() && mSubInfoEntityList == null)) {
Log.d(TAG, "subInfo list from framework is changed, update the subInfo entity list.");
mSubInfoEntityList = subInfoEntityList;
mPreferenceCategory.setVisible(isAvailable());
update();
}
}
@VisibleForTesting
protected int getDefaultVoiceSubscriptionId() {
return SubscriptionManager.getDefaultVoiceSubscriptionId();
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> activeSubInfoList) {
}
@VisibleForTesting
protected int getDefaultSmsSubscriptionId() {
return SubscriptionManager.getDefaultSmsSubscriptionId();
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@VisibleForTesting
protected int getDefaultDataSubscriptionId() {
return SubscriptionManager.getDefaultDataSubscriptionId();
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
}

View File

@@ -3,6 +3,7 @@ package com.android.settings.network;
import android.content.Context;
import android.util.Log;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
@@ -22,10 +23,10 @@ public class NetworkProviderDownloadedSimsCategoryController extends
private NetworkProviderDownloadedSimListController mNetworkProviderDownloadedSimListController;
public NetworkProviderDownloadedSimsCategoryController(Context context, String key,
Lifecycle lifecycle) {
Lifecycle lifecycle, LifecycleOwner lifecycleOwner) {
super(context, key);
mNetworkProviderDownloadedSimListController =
new NetworkProviderDownloadedSimListController(mContext, lifecycle);
new NetworkProviderDownloadedSimListController(mContext, lifecycle, lifecycleOwner);
}
@Override

View File

@@ -24,12 +24,13 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
@@ -40,58 +41,47 @@ import com.android.settings.network.telephony.MobileNetworkUtils;
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, SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {
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";
private SubscriptionManager mSubscriptionManager;
private SubscriptionsChangeListener mChangeListener;
private PreferenceCategory mPreferenceCategory;
private Map<Integer, Preference> mPreferences;
private LifecycleOwner mLifecycleOwner;
private MobileNetworkRepository mMobileNetworkRepository;
private List<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>();
public NetworkProviderSimListController(Context context, Lifecycle lifecycle) {
public NetworkProviderSimListController(Context context, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner) {
super(context);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mChangeListener = new SubscriptionsChangeListener(context, this);
mPreferences = new ArrayMap<>();
mLifecycleOwner = lifecycleOwner;
mMobileNetworkRepository = new MobileNetworkRepository(context, this);
lifecycle.addObserver(this);
}
@OnLifecycleEvent(ON_RESUME)
public void onResume() {
mChangeListener.start();
IntentFilter filter = new IntentFilter();
filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
mContext.registerReceiver(mDataSubscriptionChangedReceiver, filter);
mMobileNetworkRepository.addRegister(mLifecycleOwner);
update();
}
@OnLifecycleEvent(ON_PAUSE)
public void onPause() {
mChangeListener.stop();
if (mDataSubscriptionChangedReceiver != null) {
mContext.unregisterReceiver(mDataSubscriptionChangedReceiver);
}
}
@VisibleForTesting
final BroadcastReceiver mDataSubscriptionChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
update();
}
}
};
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
@@ -107,22 +97,22 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
final Map<Integer, Preference> existingPreferences = mPreferences;
mPreferences = new ArrayMap<>();
final List<SubscriptionInfo> subscriptions = getAvailablePhysicalSubscription();
for (SubscriptionInfo info : subscriptions) {
final int subId = info.getSubscriptionId();
final List<SubscriptionInfoEntity> subscriptions = getAvailablePhysicalSubscriptions();
for (SubscriptionInfoEntity info : subscriptions) {
final int subId = Integer.parseInt(info.subId);
Preference pref = existingPreferences.remove(subId);
if (pref == null) {
pref = new Preference(mPreferenceCategory.getContext());
mPreferenceCategory.addPreference(pref);
}
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
info, mContext);
final CharSequence displayName = info.uniqueName;
pref.setTitle(displayName);
pref.setSummary(getSummary(subId, displayName));
boolean isActiveSubscriptionId = info.isActiveSubscriptionId;
pref.setSummary(getSummary(info, displayName));
pref.setOnPreferenceClickListener(clickedPref -> {
if (!mSubscriptionManager.isActiveSubscriptionId(subId)
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
if (!isActiveSubscriptionId && !SubscriptionUtil.showToggleForPhysicalSim(
mSubscriptionManager)) {
SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId,
true);
} else {
@@ -137,12 +127,12 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
}
}
public CharSequence getSummary(int subId, CharSequence displayName) {
if (mSubscriptionManager.isActiveSubscriptionId(subId)) {
CharSequence config = SubscriptionUtil.getDefaultSimConfig(mContext, subId);
public CharSequence getSummary(SubscriptionInfoEntity subInfo, CharSequence displayName) {
if (subInfo.isActiveSubscriptionId) {
CharSequence config = subInfo.defaultSimConfig;
CharSequence summary = mContext.getResources().getString(
R.string.sim_category_active_sim);
if (config == null) {
if (config == "") {
return summary;
} else {
final StringBuilder activeSim = new StringBuilder();
@@ -158,17 +148,17 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
@Override
public boolean isAvailable() {
if (!getAvailablePhysicalSubscription().isEmpty()) {
if (!getAvailablePhysicalSubscriptions().isEmpty()) {
return true;
}
return false;
}
@VisibleForTesting
protected List<SubscriptionInfo> getAvailablePhysicalSubscription() {
List<SubscriptionInfo> subList = new ArrayList<>();
for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
if (!info.isEmbedded()) {
protected List<SubscriptionInfoEntity> getAvailablePhysicalSubscriptions() {
List<SubscriptionInfoEntity> subList = new ArrayList<>();
for (SubscriptionInfoEntity info : mSubInfoEntityList) {
if (!info.isEmbedded) {
subList.add(info);
}
}
@@ -185,8 +175,28 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
}
@Override
public void onSubscriptionsChanged() {
update();
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
if ((mSubInfoEntityList != null &&
(subInfoEntityList.isEmpty() || !subInfoEntityList.equals(mSubInfoEntityList)))
|| (!subInfoEntityList.isEmpty() && mSubInfoEntityList == null)) {
Log.d(TAG, "subInfo list from framework is changed, update the subInfo entity list.");
mSubInfoEntityList = subInfoEntityList;
mPreferenceCategory.setVisible(isAvailable());
update();
}
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> activeSubInfoList) {
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
@Override
@@ -195,19 +205,4 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
refreshSummary(mPreferenceCategory);
update();
}
@VisibleForTesting
protected int getDefaultVoiceSubscriptionId() {
return SubscriptionManager.getDefaultVoiceSubscriptionId();
}
@VisibleForTesting
protected int getDefaultSmsSubscriptionId() {
return SubscriptionManager.getDefaultSmsSubscriptionId();
}
@VisibleForTesting
protected int getDefaultDataSubscriptionId() {
return SubscriptionManager.getDefaultDataSubscriptionId();
}
}

View File

@@ -19,6 +19,7 @@ package com.android.settings.network;
import android.content.Context;
import android.util.Log;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
@@ -35,10 +36,11 @@ public class NetworkProviderSimsCategoryController extends PreferenceCategoryCon
private NetworkProviderSimListController mNetworkProviderSimListController;
private PreferenceCategory mPreferenceCategory;
public NetworkProviderSimsCategoryController(Context context, String key, Lifecycle lifecycle) {
public NetworkProviderSimsCategoryController(Context context, String key, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner) {
super(context, key);
mNetworkProviderSimListController =
new NetworkProviderSimListController(mContext, lifecycle);
new NetworkProviderSimListController(mContext, lifecycle, lifecycleOwner);
}
@Override

View File

@@ -610,7 +610,7 @@ public class SubscriptionUtil {
boolean isDefaultData = subId == getDefaultDataSubscriptionId();
if (!isDefaultData && !isDefaultCall && !isDefaultSms) {
return null;
return "";
}
final StringBuilder defaultConfig = new StringBuilder();

View File

@@ -25,22 +25,24 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.Looper;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.R;
import com.android.settings.testutils.ResourcesUtils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
import org.junit.Before;
import org.junit.Test;
@@ -49,34 +51,38 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@RunWith(AndroidJUnit4.class)
public class NetworkProviderDownloadedSimListControllerTest {
private static final int SUB_ID = 1;
private static final String SUB_ID_1 = "1";
private static final String DISPLAY_NAME_1 = "Sub 1";
private static final String SUB_MCC_1 = "123";
private static final String SUB_MNC_1 = "456";
private static final String SUB_COUNTRY_ISO_1 = "Sub 1";
private static final String KEY_PREFERENCE_DOWNLOADED_SIM =
"provider_model_downloaded_sim_list";
private static final String KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM =
"provider_model_downloaded_sim_category";
private static final String KEY_ADD_MORE = "add_more";
private static final String DISPLAY_NAME = "Sub 1";
@Mock
private SubscriptionManager mSubscriptionManager;
@Mock
private SubscriptionInfo mSubscriptionInfo;
private SubscriptionInfoEntity mSubInfo1;
@Mock
private Lifecycle mLifecycle;
@Mock
private LifecycleOwner mLifecycleOwner;
private LifecycleRegistry mLifecycleRegistry;
private LifecycleRegistry mLifecycleRegistry;
private MockNetworkProviderDownloadedSimListController mController;
private PreferenceManager mPreferenceManager;
private PreferenceCategory mPreferenceCategory;
private PreferenceScreen mPreferenceScreen;
private Preference mPreference;
private Preference mAddMorePreference;
private Context mContext;
private List<SubscriptionInfoEntity> mSubscriptionInfoEntityList = new ArrayList<>();
/**
* Mock the MockNetworkProviderDownloadedSimListController that allows one to set a
@@ -86,48 +92,26 @@ public class NetworkProviderDownloadedSimListControllerTest {
private class MockNetworkProviderDownloadedSimListController extends
com.android.settings.network.NetworkProviderDownloadedSimListController {
public MockNetworkProviderDownloadedSimListController(Context context,
Lifecycle lifecycle) {
super(context, lifecycle);
Lifecycle lifecycle, LifecycleOwner lifecycleOwner) {
super(context, lifecycle, lifecycleOwner);
}
private int mDefaultVoiceSubscriptionId;
private int mDefaultSmsSubscriptionId;
private int mDefaultDataSubscriptionId;
private List<SubscriptionInfoEntity> mSubscriptionInfoEntity;
@Override
protected int getDefaultVoiceSubscriptionId() {
return mDefaultVoiceSubscriptionId;
protected List<SubscriptionInfoEntity> getAvailableDownloadedSubscriptions() {
return mSubscriptionInfoEntity;
}
@Override
protected int getDefaultSmsSubscriptionId() {
return mDefaultSmsSubscriptionId;
public void setSubscriptionInfoList(List<SubscriptionInfoEntity> list) {
mSubscriptionInfoEntity = list;
}
@Override
protected int getDefaultDataSubscriptionId() {
return mDefaultDataSubscriptionId;
}
public void setDefaultVoiceSubscriptionId(int subscriptionId) {
mDefaultVoiceSubscriptionId = subscriptionId;
}
public void setDefaultSmsSubscriptionId(int subscriptionId) {
mDefaultSmsSubscriptionId = subscriptionId;
}
public void setDefaultDataSubscriptionId(int subscriptionId) {
mDefaultDataSubscriptionId = subscriptionId;
}
}
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
if (Looper.myLooper() == null) {
Looper.prepare();
@@ -137,7 +121,10 @@ public class NetworkProviderDownloadedSimListControllerTest {
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mPreference = new Preference(mContext);
mPreference.setKey(KEY_PREFERENCE_DOWNLOADED_SIM);
mController = new MockNetworkProviderDownloadedSimListController(mContext, mLifecycle);
mPreferenceCategory = new PreferenceCategory(mContext);
mPreferenceCategory.setKey(KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
mController = new MockNetworkProviderDownloadedSimListController(mContext, mLifecycle,
mLifecycleOwner);
mAddMorePreference = new Preference(mContext);
mAddMorePreference.setKey(KEY_ADD_MORE);
mAddMorePreference.setVisible(true);
@@ -148,17 +135,22 @@ public class NetworkProviderDownloadedSimListControllerTest {
private void displayPreferenceWithLifecycle() {
mLifecycleRegistry.addObserver(mController);
mPreferenceScreen.addPreference(mPreference);
mPreferenceScreen.addPreference(mPreferenceCategory);
mPreferenceScreen.addPreference(mAddMorePreference);
mController.displayPreference(mPreferenceScreen);
mLifecycleRegistry.handleLifecycleEvent(Event.ON_RESUME);
}
private void setupSubscriptionInfoList(int subId, String displayName,
SubscriptionInfo subscriptionInfo) {
when(subscriptionInfo.getSubscriptionId()).thenReturn(subId);
doReturn(subscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(subId);
when(subscriptionInfo.getDisplayName()).thenReturn(displayName);
when(subscriptionInfo.isEmbedded()).thenReturn(true);
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 isDefaultData,
boolean isDefaultSms) {
return new SubscriptionInfoEntity(subId, slotId, carrierId, displayName, displayName, 0,
mcc, mnc, countryIso, true, 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, isDefaultData, false);
}
private String setSummaryResId(String resName) {
@@ -168,56 +160,57 @@ public class NetworkProviderDownloadedSimListControllerTest {
@Test
@UiThreadTest
public void getSummary_inactiveESim() {
setupSubscriptionInfoList(SUB_ID, DISPLAY_NAME, mSubscriptionInfo);
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(new ArrayList<>());
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(new ArrayList<>());
doReturn(false).when(mSubscriptionManager).isActiveSubscriptionId(SUB_ID);
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1,
SUB_MNC_1, SUB_COUNTRY_ISO_1, 1, "", true, false, false, false, false, false);
mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle();
String summary = setSummaryResId("sim_category_inactive_sim");
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID), summary));
assertTrue(TextUtils.equals(mController.getSummary(mSubInfo1), summary));
}
@Test
@UiThreadTest
public void getSummary_defaultCalls() {
mController.setDefaultVoiceSubscriptionId(SUB_ID);
setupSubscriptionInfoList(SUB_ID, DISPLAY_NAME, mSubscriptionInfo);
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
Arrays.asList(mSubscriptionInfo));
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(
Arrays.asList(mSubscriptionInfo));
doReturn(true).when(mSubscriptionManager).isActiveSubscriptionId(SUB_ID);
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1,
SUB_MNC_1, SUB_COUNTRY_ISO_1, 1,
mContext.getString(R.string.sim_category_default_active_sim,
setSummaryResId("default_active_sim_calls")), true,
true, true, true, false, false);
mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle();
CharSequence defaultCall = SubscriptionUtil.getDefaultSimConfig(mContext, SUB_ID);
CharSequence defaultCall = mSubInfo1.defaultSimConfig;
final StringBuilder summary = new StringBuilder();
summary.append(setSummaryResId("sim_category_active_sim"))
.append(defaultCall);
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID), summary));
assertTrue(TextUtils.equals(mController.getSummary(mSubInfo1), summary));
}
@Test
@UiThreadTest
public void getSummary_defaultCallsAndMobileData() {
mController.setDefaultVoiceSubscriptionId(SUB_ID);
mController.setDefaultDataSubscriptionId(SUB_ID);
setupSubscriptionInfoList(SUB_ID, DISPLAY_NAME, mSubscriptionInfo);
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
Arrays.asList(mSubscriptionInfo));
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(
Arrays.asList(mSubscriptionInfo));
doReturn(true).when(mSubscriptionManager).isActiveSubscriptionId(SUB_ID);
final StringBuilder defaultConfig = new StringBuilder();
defaultConfig.append(setSummaryResId("default_active_sim_mobile_data"))
.append(", ")
.append(setSummaryResId("default_active_sim_calls"));
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1,
SUB_MNC_1, SUB_COUNTRY_ISO_1, 1,
mContext.getString(R.string.sim_category_default_active_sim, defaultConfig), true,
true, true, true, true,
false);
mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle();
CharSequence defaultCall = SubscriptionUtil.getDefaultSimConfig(mContext, SUB_ID);
CharSequence defaultCall = mSubInfo1.defaultSimConfig;
final StringBuilder summary = new StringBuilder();
summary.append(setSummaryResId("sim_category_active_sim"))
.append(defaultCall);
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID), summary));
assertTrue(TextUtils.equals(mController.getSummary(mSubInfo1), summary));
}
}

View File

@@ -31,6 +31,7 @@ import android.telephony.SubscriptionInfo;
import com.android.settings.testutils.ResourcesUtils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
@@ -39,6 +40,7 @@ import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -47,6 +49,8 @@ import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
//TODO: Remove NetworkProviderDownloadedSimsCategoryControllerTest once it is removed in the
// b/244769887.
@RunWith(AndroidJUnit4.class)
public class NetworkProviderDownloadedSimsCategoryControllerTest {
@@ -71,6 +75,7 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {
private PreferenceManager mPreferenceManager;
private PreferenceScreen mPreferenceScreen;
private Preference mAddMorePreference;
private LifecycleOwner mLifecycleOwner;
@Before
public void setUp() throws Exception {
@@ -82,6 +87,7 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {
Looper.prepare();
}
mLifecycleOwner = () -> mLifecycle;
mPreferenceManager = new PreferenceManager(mContext);
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mPreferenceCategory = new PreferenceCategory(mContext);
@@ -93,9 +99,10 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {
mPreferenceScreen.addPreference(mAddMorePreference);
mCategoryController = new NetworkProviderDownloadedSimsCategoryController(mContext,
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM, mLifecycle);
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM, mLifecycle, mLifecycleOwner);
}
@Ignore
@Test
public void getAvailabilityStatus_returnUnavailable() {
SubscriptionUtil.setAvailableSubscriptionsForTesting(new ArrayList<>());
@@ -104,6 +111,7 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {
CONDITIONALLY_UNAVAILABLE);
}
@Ignore
@Test
public void displayPreference_isVisible() {
setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
@@ -113,7 +121,7 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {
assertEquals(mPreferenceCategory.isVisible(), true);
}
@Ignore
@Test
public void updateState_setTitle_withTwoDownloadedSims_returnDownloadedSims() {
setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
@@ -129,6 +137,7 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {
ResourcesUtils.getResourcesString(mContext, "downloaded_sims_category_title"));
}
@Ignore
@Test
public void updateState_setTitle_withOneDownloadedSim_returnDownloadedSim() {
setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);

View File

@@ -29,21 +29,24 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.Looper;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;
import androidx.preference.PreferenceManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.R;
import com.android.settings.testutils.ResourcesUtils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
import org.junit.Before;
import org.junit.Ignore;
@@ -53,19 +56,30 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@RunWith(AndroidJUnit4.class)
public class NetworkProviderSimListControllerTest {
private static final int SUB_ID_1 = 1;
private static final String SUB_ID_1 = "1";
private static final String SUB_ID_2 = "2";
private static final String KEY_PREFERENCE_SIM_LIST = "provider_model_sim_list";
private static final String KEY_PREFERENCE_CATEGORY_SIM = "provider_model_sim_category";
private static final String DISPLAY_NAME_1 = "Sub 1";
private static final String DISPLAY_NAME_2 = "Sub 2";
private static final String SUB_MCC_1 = "123";
private static final String SUB_MNC_1 = "456";
private static final String SUB_MCC_2 = "223";
private static final String SUB_MNC_2 = "456";
private static final String SUB_COUNTRY_ISO_1 = "Sub 1";
private static final String SUB_COUNTRY_ISO_2 = "Sub 2";
@Mock
private SubscriptionManager mSubscriptionManager;
private SubscriptionInfoEntity mSubInfo1;
@Mock
private SubscriptionInfo mSubscriptionInfo;
private SubscriptionInfoEntity mSubInfo2;
@Mock
private SubscriptionManager mSubscriptionManager;
@Mock
private Lifecycle mLifecycle;
@Mock
@@ -74,10 +88,11 @@ public class NetworkProviderSimListControllerTest {
private MockNetworkProviderSimListController mController;
private PreferenceManager mPreferenceManager;
private PreferenceCategory mPreferenceCategory;
private PreferenceScreen mPreferenceScreen;
private Preference mPreference;
private Context mContext;
private List<SubscriptionInfoEntity> mSubscriptionInfoEntityList = new ArrayList<>();
/**
* Mock the NetworkProviderSimListController that allows one to set a default voice,
@@ -86,41 +101,21 @@ public class NetworkProviderSimListControllerTest {
@SuppressWarnings("ClassCanBeStatic")
private class MockNetworkProviderSimListController extends
com.android.settings.network.NetworkProviderSimListController {
public MockNetworkProviderSimListController(Context context, Lifecycle lifecycle) {
super(context, lifecycle);
public MockNetworkProviderSimListController(Context context, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner) {
super(context, lifecycle, lifecycleOwner);
}
private int mDefaultVoiceSubscriptionId;
private int mDefaultSmsSubscriptionId;
private int mDefaultDataSubscriptionId;
private List<SubscriptionInfoEntity> mSubscriptionInfoEntity;
@Override
protected int getDefaultVoiceSubscriptionId() {
return mDefaultVoiceSubscriptionId;
protected List<SubscriptionInfoEntity> getAvailablePhysicalSubscriptions() {
return mSubscriptionInfoEntity;
}
@Override
protected int getDefaultSmsSubscriptionId() {
return mDefaultSmsSubscriptionId;
public void setSubscriptionInfoList(List<SubscriptionInfoEntity> list) {
mSubscriptionInfoEntity = list;
}
@Override
protected int getDefaultDataSubscriptionId() {
return mDefaultDataSubscriptionId;
}
public void setDefaultVoiceSubscriptionId(int subscriptionId) {
mDefaultVoiceSubscriptionId = subscriptionId;
}
public void setDefaultSmsSubscriptionId(int subscriptionId) {
mDefaultSmsSubscriptionId = subscriptionId;
}
public void setDefaultDataSubscriptionId(int subscriptionId) {
mDefaultDataSubscriptionId = subscriptionId;
}
}
@Before
@@ -137,7 +132,10 @@ public class NetworkProviderSimListControllerTest {
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mPreference = new Preference(mContext);
mPreference.setKey(KEY_PREFERENCE_SIM_LIST);
mController = new MockNetworkProviderSimListController(mContext, mLifecycle);
mPreferenceCategory = new PreferenceCategory(mContext);
mPreferenceCategory.setKey(KEY_PREFERENCE_CATEGORY_SIM);
mController = new MockNetworkProviderSimListController(mContext, mLifecycle,
mLifecycleOwner);
mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner);
when(mLifecycleOwner.getLifecycle()).thenReturn(mLifecycleRegistry);
}
@@ -145,105 +143,118 @@ public class NetworkProviderSimListControllerTest {
private void displayPreferenceWithLifecycle() {
mLifecycleRegistry.addObserver(mController);
mPreferenceScreen.addPreference(mPreference);
mPreferenceScreen.addPreference(mPreferenceCategory);
mController.displayPreference(mPreferenceScreen);
mLifecycleRegistry.handleLifecycleEvent(Event.ON_RESUME);
}
private void setupSubscriptionInfoList(int subId, String displayName,
SubscriptionInfo subscriptionInfo) {
when(subscriptionInfo.getSubscriptionId()).thenReturn(subId);
doReturn(subscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(subId);
when(subscriptionInfo.getDisplayName()).thenReturn(displayName);
when(subscriptionInfo.isEmbedded()).thenReturn(false);
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) {
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);
}
private String setSummaryResId(String resName, String value) {
return ResourcesUtils.getResourcesString(mContext, resName, value);
}
private String setSummaryResId(String resName) {
return ResourcesUtils.getResourcesString(mContext, resName);
}
@Test
@UiThreadTest
public void getSummary_tapToActivePSim() {
setupSubscriptionInfoList(SUB_ID_1, DISPLAY_NAME_1, mSubscriptionInfo);
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(new ArrayList<>());
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(new ArrayList<>());
doReturn(false).when(mSubscriptionManager).isActiveSubscriptionId(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, false, false, false, false);
mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle();
String summary = setSummaryResId("mobile_network_tap_to_activate", DISPLAY_NAME_1);
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID_1, DISPLAY_NAME_1), summary));
assertTrue(TextUtils.equals(mController.getSummary(mSubInfo1, DISPLAY_NAME_1), summary));
}
@Test
@UiThreadTest
public void getSummary_inactivePSim() {
setupSubscriptionInfoList(SUB_ID_1, DISPLAY_NAME_1, mSubscriptionInfo);
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(new ArrayList<>());
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(new ArrayList<>());
doReturn(false).when(mSubscriptionManager).isActiveSubscriptionId(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, false, false, false, false);
doReturn(true).when(mSubscriptionManager).canDisablePhysicalSubscription();
mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle();
String summary = setSummaryResId("sim_category_inactive_sim", null);
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID_1, DISPLAY_NAME_1), summary));
assertTrue(TextUtils.equals(mController.getSummary(mSubInfo1, DISPLAY_NAME_1), summary));
}
@Test
@UiThreadTest
public void getSummary_defaultCalls() {
mController.setDefaultVoiceSubscriptionId(SUB_ID_1);
setupSubscriptionInfoList(SUB_ID_1, DISPLAY_NAME_1, mSubscriptionInfo);
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
Arrays.asList(mSubscriptionInfo));
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(
Arrays.asList(mSubscriptionInfo));
doReturn(true).when(mSubscriptionManager).isActiveSubscriptionId(SUB_ID_1);
mSubInfo1 = setupSubscriptionInfoEntity(SUB_ID_1, 1, 1, DISPLAY_NAME_1, SUB_MCC_1,
SUB_MNC_1, SUB_COUNTRY_ISO_1, 1,
mContext.getString(R.string.sim_category_default_active_sim,
setSummaryResId("default_active_sim_calls")), true, true, true, true,
false);
mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle();
CharSequence defaultCall = SubscriptionUtil.getDefaultSimConfig(mContext, SUB_ID_1);
CharSequence defaultCall = mSubInfo1.defaultSimConfig;
final StringBuilder summary = new StringBuilder();
summary.append(setSummaryResId("sim_category_active_sim", null))
.append(defaultCall);
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID_1, DISPLAY_NAME_1), summary));
assertTrue(TextUtils.equals(mController.getSummary(mSubInfo1, DISPLAY_NAME_1), summary));
}
@Test
@UiThreadTest
public void getSummary_defaultCallsAndSms() {
mController.setDefaultVoiceSubscriptionId(SUB_ID_1);
mController.setDefaultSmsSubscriptionId(SUB_ID_1);
setupSubscriptionInfoList(SUB_ID_1, DISPLAY_NAME_1, mSubscriptionInfo);
when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
Arrays.asList(mSubscriptionInfo));
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(
Arrays.asList(mSubscriptionInfo));
doReturn(true).when(mSubscriptionManager).isActiveSubscriptionId(SUB_ID_1);
final StringBuilder defaultConfig = new StringBuilder();
defaultConfig.append(setSummaryResId("default_active_sim_calls"))
.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,
mContext.getString(R.string.sim_category_default_active_sim, defaultConfig), true,
true, true, true, true);
mSubscriptionInfoEntityList.add(mSubInfo1);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle();
CharSequence defaultCall = SubscriptionUtil.getDefaultSimConfig(mContext, SUB_ID_1);
CharSequence defaultCall = mSubInfo1.defaultSimConfig;
final StringBuilder summary = new StringBuilder();
summary.append(setSummaryResId("sim_category_active_sim", null))
.append(defaultCall);
assertTrue(TextUtils.equals(mController.getSummary(SUB_ID_1, DISPLAY_NAME_1), summary));
assertTrue(TextUtils.equals(mController.getSummary(mSubInfo1, DISPLAY_NAME_1), summary));
}
@Ignore
@Test
@UiThreadTest
public void getAvailablePhysicalSubscription_withTwoPhysicalSims_returnTwo() {
final SubscriptionInfo info1 = mock(SubscriptionInfo.class);
when(info1.isEmbedded()).thenReturn(false);
final SubscriptionInfo info2 = mock(SubscriptionInfo.class);
when(info2.isEmbedded()).thenReturn(false);
when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(
Arrays.asList(info1, info2));
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);
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);
mSubscriptionInfoEntityList.add(mSubInfo1);
mSubscriptionInfoEntityList.add(mSubInfo2);
mController.setSubscriptionInfoList(mSubscriptionInfoEntityList);
displayPreferenceWithLifecycle();
assertThat(mController.getAvailablePhysicalSubscription().size()).isEqualTo(2);
assertThat(mController.getAvailablePhysicalSubscriptions().size()).isEqualTo(2);
}
}

View File

@@ -32,6 +32,7 @@ import android.telephony.SubscriptionManager;
import com.android.settings.testutils.ResourcesUtils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
@@ -39,6 +40,7 @@ import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -47,6 +49,7 @@ import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
//TODO: Remove NetworkProviderSimsCategoryControllerTest once it is removed in the b/244769887.
@RunWith(AndroidJUnit4.class)
public class NetworkProviderSimsCategoryControllerTest {
@@ -68,6 +71,7 @@ public class NetworkProviderSimsCategoryControllerTest {
private PreferenceManager mPreferenceManager;
private PreferenceScreen mPreferenceScreen;
private PreferenceCategory mPreferenceCategory;
private LifecycleOwner mLifecycleOwner;
@Before
public void setUp() throws Exception {
@@ -78,6 +82,7 @@ public class NetworkProviderSimsCategoryControllerTest {
Looper.prepare();
}
mLifecycleOwner = () -> mLifecycle;
mPreferenceManager = new PreferenceManager(mContext);
mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
mPreferenceCategory = new PreferenceCategory(mContext);
@@ -85,9 +90,10 @@ public class NetworkProviderSimsCategoryControllerTest {
mPreferenceScreen.addPreference(mPreferenceCategory);
mCategoryController = new NetworkProviderSimsCategoryController(
mContext, KEY_PREFERENCE_CATEGORY_SIM, mLifecycle);
mContext, KEY_PREFERENCE_CATEGORY_SIM, mLifecycle, mLifecycleOwner);
}
@Ignore
@Test
public void getAvailabilityStatus_returnUnavailable() {
SubscriptionUtil.setAvailableSubscriptionsForTesting(new ArrayList<>());
@@ -96,6 +102,7 @@ public class NetworkProviderSimsCategoryControllerTest {
CONDITIONALLY_UNAVAILABLE);
}
@Ignore
@Test
public void displayPreference_isVisible() {
setUpSubscriptionInfoForPhysicalSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
@@ -105,6 +112,7 @@ public class NetworkProviderSimsCategoryControllerTest {
assertEquals(mPreferenceCategory.isVisible(), true);
}
@Ignore
@Test
public void updateState_setTitle_withTwoPhysicalSims_returnSims() {
setUpSubscriptionInfoForPhysicalSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
@@ -120,6 +128,7 @@ public class NetworkProviderSimsCategoryControllerTest {
ResourcesUtils.getResourcesString(mContext, "provider_network_settings_title"));
}
@Ignore
@Test
public void updateState_setTitle_withOnePhysicalSim_returnSim() {
setUpSubscriptionInfoForPhysicalSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);