[Settings] Code refactor

1. Adjust test case for improving testing performance
2. Some code refactor for avoiding from NullPointerException

Bug: 260540995
Test: auto and local
Change-Id: I18bd474304194137166c3c03ff828abdcd58473e
This commit is contained in:
Bonian Chen
2022-12-08 05:42:34 +00:00
parent b04d06a470
commit 09b0edbdee
2 changed files with 25 additions and 8 deletions

View File

@@ -72,6 +72,9 @@ public class SimStatusPreferenceController extends BasePreferenceController {
@Override
public int getAvailabilityStatus() {
if (getSimSlotIndex() == SubscriptionManager.INVALID_SIM_SLOT_INDEX) {
return UNSUPPORTED_ON_DEVICE;
}
boolean isAvailable = SubscriptionUtil.isSimHardwareVisible(mContext) &&
mContext.getSystemService(UserManager.class).isAdminUser() &&
!Utils.isWifiOnly(mContext);
@@ -81,7 +84,7 @@ public class SimStatusPreferenceController extends BasePreferenceController {
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
if ((!SubscriptionUtil.isSimHardwareVisible(mContext)) || (mSlotSimStatus == null)) {
return;
}
String basePreferenceKey = mSlotSimStatus.getPreferenceKey(
@@ -133,17 +136,23 @@ public class SimStatusPreferenceController extends BasePreferenceController {
R.string.sim_status_title);
}
private CharSequence getCarrierName(int simSlot) {
private SubscriptionInfo getSubscriptionInfo(int simSlot) {
final List<SubscriptionInfo> subscriptionInfoList =
mSubscriptionManager.getActiveSubscriptionInfoList();
if (subscriptionInfoList != null) {
for (SubscriptionInfo info : subscriptionInfoList) {
if (info.getSimSlotIndex() == simSlot) {
return info.getCarrierName();
return info;
}
}
}
return mContext.getText(R.string.device_info_not_available);
return null;
}
private CharSequence getCarrierName(int simSlot) {
SubscriptionInfo subInfo = getSubscriptionInfo(simSlot);
return (subInfo != null) ? subInfo.getCarrierName() :
mContext.getText(R.string.device_info_not_available);
}
@VisibleForTesting

View File

@@ -19,6 +19,7 @@ package com.android.settings.deviceinfo.simstatus;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
@@ -30,17 +31,22 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Executor;
@RunWith(AndroidJUnit4.class)
public class SlotSimStatusTest {
@Mock
private TelephonyManager mTelephonyManager;
@Mock
private Executor mExecutor;
@Captor
private ArgumentCaptor<Runnable> mRunnableCaptor;
private Context mContext;
@@ -65,8 +71,10 @@ public class SlotSimStatusTest {
public void size_returnNumberOfPhone_whenQueryInBackgroundThread() {
doReturn(2).when(mTelephonyManager).getPhoneCount();
ExecutorService executor = Executors.newSingleThreadExecutor();
SlotSimStatus target = new SlotSimStatus(mContext, executor);
SlotSimStatus target = new SlotSimStatus(mContext, mExecutor);
verify(mExecutor).execute(mRunnableCaptor.capture());
mRunnableCaptor.getValue().run();
assertEquals(new Integer(target.size()), new Integer(2));
}