Merge "Fix sim status details not updated after sim hotswap" into main
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.deviceinfo.simstatus;
|
||||
|
||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_DATA_NETWORK_TYPE_VALUE_ID;
|
||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELLULAR_NETWORK_STATE;
|
||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_VOICE_NETWORK_TYPE_VALUE_ID;
|
||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_LABEL_ID;
|
||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_VALUE_ID;
|
||||
@@ -30,8 +31,10 @@ import static com.android.settings.deviceinfo.simstatus.SimStatusDialogControlle
|
||||
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SERVICE_STATE_VALUE_ID;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -42,6 +45,7 @@ import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyCallback;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.UiccCardInfo;
|
||||
import android.telephony.euicc.EuiccManager;
|
||||
@@ -65,6 +69,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class SimStatusDialogControllerTest {
|
||||
@@ -74,6 +79,10 @@ public class SimStatusDialogControllerTest {
|
||||
@Mock
|
||||
private TelephonyManager mTelephonyManager;
|
||||
@Mock
|
||||
private TelephonyManager mTelephonyManagerForSub1;
|
||||
@Mock
|
||||
private TelephonyManager mTelephonyManagerForSub2;
|
||||
@Mock
|
||||
private SubscriptionInfo mSubscriptionInfo;
|
||||
@Mock
|
||||
private ServiceState mServiceState;
|
||||
@@ -94,6 +103,9 @@ public class SimStatusDialogControllerTest {
|
||||
|
||||
private static final int MAX_PHONE_COUNT_DUAL_SIM = 2;
|
||||
|
||||
private static final int TEST_SUB_ID_1 = 1;
|
||||
private static final int TEST_SUB_ID_2 = 2;
|
||||
|
||||
@Before
|
||||
@UiThreadTest
|
||||
public void setup() {
|
||||
@@ -106,6 +118,7 @@ public class SimStatusDialogControllerTest {
|
||||
mSubscriptionManager = spy(mContext.getSystemService(SubscriptionManager.class));
|
||||
doReturn(mSubscriptionInfo).when(mSubscriptionManager)
|
||||
.getActiveSubscriptionInfoForSimSlotIndex(anyInt());
|
||||
doReturn(TEST_SUB_ID_1).when(mSubscriptionInfo).getSubscriptionId();
|
||||
|
||||
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
|
||||
when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(
|
||||
@@ -113,8 +126,10 @@ public class SimStatusDialogControllerTest {
|
||||
when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager);
|
||||
when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
|
||||
|
||||
doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
|
||||
anyInt());
|
||||
doReturn(mTelephonyManagerForSub1).when(mTelephonyManager).createForSubscriptionId(
|
||||
TEST_SUB_ID_1);
|
||||
doReturn(mTelephonyManagerForSub2).when(mTelephonyManager).createForSubscriptionId(
|
||||
TEST_SUB_ID_2);
|
||||
doReturn(2).when(mTelephonyManager).getCardIdForDefaultEuicc();
|
||||
doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyManager).getDataNetworkType();
|
||||
|
||||
@@ -340,4 +355,45 @@ public class SimStatusDialogControllerTest {
|
||||
verify(mDialog).setSettingVisibility(IMS_REGISTRATION_STATE_LABEL_ID, false);
|
||||
verify(mDialog).setSettingVisibility(IMS_REGISTRATION_STATE_VALUE_ID, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSubscriptionsChanged_updateSubInfoToNewSub_testTelephonyCallbackUnregRereg() {
|
||||
// sub id changed from 1 to 2
|
||||
SubscriptionInfo subInfo2 = mock(SubscriptionInfo.class);
|
||||
doReturn(TEST_SUB_ID_2).when(subInfo2).getSubscriptionId();
|
||||
doReturn(subInfo2).when(mSubscriptionManager)
|
||||
.getActiveSubscriptionInfoForSimSlotIndex(anyInt());
|
||||
mController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
|
||||
verify(mTelephonyManagerForSub2).registerTelephonyCallback(any(Executor.class),
|
||||
any(TelephonyCallback.class));
|
||||
|
||||
// sub id changed from 2 to 1
|
||||
SubscriptionInfo subInfo1 = mock(SubscriptionInfo.class);
|
||||
doReturn(TEST_SUB_ID_1).when(subInfo1).getSubscriptionId();
|
||||
doReturn(subInfo1).when(mSubscriptionManager)
|
||||
.getActiveSubscriptionInfoForSimSlotIndex(anyInt());
|
||||
mController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
|
||||
verify(mTelephonyManagerForSub2).unregisterTelephonyCallback(
|
||||
mController.mTelephonyCallback);
|
||||
verify(mTelephonyManagerForSub1).registerTelephonyCallback(any(Executor.class),
|
||||
any(TelephonyCallback.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSubscriptionsChanged_updateSubInfoToNull_testTelephonyCallbackUnreg() {
|
||||
doReturn(null).when(mSubscriptionManager).getActiveSubscriptionInfoForSimSlotIndex(
|
||||
anyInt());
|
||||
mController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
|
||||
verify(mTelephonyManagerForSub1).unregisterTelephonyCallback(
|
||||
mController.mTelephonyCallback);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSubscriptionsChanged_updateSubInfoToNull_shouldUpdateDataStatusToUnknown() {
|
||||
doReturn(null).when(mSubscriptionManager).getActiveSubscriptionInfoForSimSlotIndex(
|
||||
anyInt());
|
||||
mController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
|
||||
final String unknownText = ResourcesUtils.getResourcesString(mContext, "radioInfo_unknown");
|
||||
verify(mDialog).setText(CELLULAR_NETWORK_STATE, unknownText);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user